天天看點

監控寶服務性能監控配置(完整版)監控寶服務性能監控配置(完整版)

繼上篇監控寶伺服器監控後,此篇博文詳細記錄下項目中對常用服務監控的配置步驟

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26900">一、目的 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4191">二、理論基礎 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc19381">2.1 相關理論 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28096">2.2 監控項目 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc5224">三、服務性能監控部署 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc8010">3.1 Nginx 服務性能監控 2</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc21128">3.2 Apache 服務性能監控 6</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc3026">3.3 Mysql 服務性能監控 9</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15063">3.4 IIS 服務性能監控 14</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc24909">3.5 Tomcat 服務性能監控 16</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc18122">3.6 SQLserver 服務性能監控 20</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc29033">3.7 Mongodb服務性能監控 23</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28472">3.8 Lighttpd 服務性能監控 25</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4088">3.9 Redis 服務性能監控 28</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26012">3.10 Memcache 服務性能監控 31</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc27063">3.11 Oracle 服務性能監控 33</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc2117">四、注意事項 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15917">4.1 Mysql監控需要安裝插件 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc28972">4.2 WEB應用 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc32192">4.3檢測SNMP資料 38</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc15426">4.5 SQLserver 監控安裝pyodbc 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc5423">4.6 Mongodb 需要安裝JSON 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc18811">4.7 Redis 部署問題 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc14862">4.8 Oracle 需要修改主機監聽端口 40</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc8160">五、附錄 41</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc26620">5.1 AutoInstallSNMP.sh 41</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc612">5.2 AutoInstallRedis.sh 43</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc31910">5.3 AutoInstallMongodb.sh 45</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc3168">5.4 AutoInstallLighttpd.sh 46</a>

<a href="http://blog.51cto.com/kaliarch/2045128#_Toc4317">5.5 AutoInstallMemcache.sh 47</a>

一、目的

二、理論基礎

2.1 相關理論

詳見《監控寶伺服器與服務性能監控配置》内監控理論部分。

2.2 監控項目

服務性能監控項目

三、服務性能監控部署

3.1 Nginx 服務性能監控

1) 内網采集器的建立

2) Python環境部署

詳見《SER-App-0028-監控寶伺服器與服務性能監控配置》内Python環境部署部分。

3) SNMP安裝與配置

詳見《SER-App-0028-監控寶伺服器與服務性能監控配置》内SNMP安裝配置部分。

4) Nginx配置需求

Nginx 編譯安裝必須啟用   --with-http_stub_status_module

Nginx配置檔案内增加以下狀态資訊。

active connections – 活躍的連接配接數量

server accepts handled requests — 總共處理了764個連接配接 , 成功建立764次握手, 總共處理了906個請求

reading — 讀取用戶端的連接配接數.

writing — 響應資料到用戶端的數量

waiting — 開啟 keep-alive 的情況下,這個值等于 active – (reading+writing), 意思就是 Nginx 已經處理完正在等候下一次請求指令的駐留連接配接.

5) 采集器的運作

6) 監控項目建立

7) 監控項目檢視

3.2 Apache 服務性能監控

1)内網采集器的建立

3)  SNMP安裝與配置

詳見《監控寶伺服器與服務性能監控配置》内SNMP安裝配置部分。

1) Apache開啟狀态頁面

Apache的安裝

配置檔案裡面需要開啟apache狀态子產品

1

2

3

4

5

6

7

<code>ExtendedStatus On</code>

<code>&lt;Location </code><code>/Server-status</code><code>&gt;</code>

<code>SetHandler Server-status</code>

<code>Order deny,allow</code>

<code>Deny from all</code>

<code>Allow from all</code>

<code>&lt;</code><code>/Location</code><code>&gt;</code>

5)采集器的運作

6)監控項目建立

7)監控項目檢視

3.3 Mysql 服務性能監控

若要使用mysql性能監控,需要安裝Python的MySQLdb擴充件。

安裝mysql插件

windows2003

http://jaist.dl.sourceforge.net/project/mysql-python/mysql-python-test/1.2.4b4/MySQL-python-1.2.4b4.win32-py2.7.exe

預設安裝即可。

linux下 需要根據您安裝的python版本來安裝對應的 ‘Python interface’

ubuntu下的需要apt-get install python-mysqldb

centos下需要 yum install   Mysql-python

如果python是編譯的請将mysql-python重新編譯進去。

2) SNMP安裝與配置

3) Mysql配置

添加mysql使用者

在被監測的myql上執行

<code>&gt;CREATE USER ‘xuel’@’你的采集器的IP’ IDENTIFIED BY ‘your_password’;</code>

<code>&gt;flush privileges;</code>

授權使用者遠端連接配接

重新開機采集器

安裝完mysql-python 之後 ,輕按兩下 stop.bat ,按任意鍵退出,并退出之前的采集器窗 口。輕按兩下start.bat

測試已經可以正常連接配接資料庫。

3.4 IIS 服務性能監控

選擇IIS插件

下載下傳對應window版本

采集器運作需要Python環境,詳見《SER-App-0028-監控寶伺服器與服務性能監控配置》

3) 采集器的運作

被監控伺服器檢視IIS伺服器日志路徑

4) 監控項目建立

5) 監控項目檢視

3.5 Tomcat 服務性能監控

選擇tomcat插件

下載下傳對應Linux版本

3) Tomcat需求配置

安裝部署好tomcat後,需要配置狀态面的登入使用者名和密碼

啟動服務

Tomcat狀态頁

檢視狀态頁面

4) 采集器的運作

5) 監控項目建立

6) 監控項目檢視

3.6 SQLserver 服務性能監控

選擇SQLserver插件

3) 被監控伺服器配置

若要使用sql server性能監控,需要安裝pyodbc擴充,使得python能連接配接sql server

Pyodbc的下載下傳位址:

<a href="http://blog.51cto.com/kaliarch/2045128#downloads">https://pypi.python.org/pypi/pyodbc/#downloads</a>

安裝pip

3.7 Mongodb服務性能監控

選擇Mongodb插件

3) Mongodb配置

為友善部署,目前已經講Mongodb的安裝寫成腳本,腳本見附錄

啟動mongodb需要加httpinterface WEB界面接口

3.8 Lighttpd 服務性能監控

選擇Lighttpd插件

3) Lighttpd配置

   為友善部署,目前已經講Lighttpd的安裝寫成腳本,腳本見附錄

啟用狀态子產品

3.9 Redis 服務性能監控

3) Redis配置

為友善部署,目前已經講Redis的安裝寫成腳本,腳本見附錄

4 ) 監控項目建立

3.10 Memcache 服務性能監控

3) Memcache的配置

    為友善部署,目前已經講Memcache的安裝寫成腳本,腳本見附錄

在建立項目時下載下傳memcache檔案,并釋出到web伺服器,下圖 為狀态頁資訊

3.11 Oracle 服務性能監控

采集器運作需要Python環境,詳見《監控寶伺服器與服務性能監控配置》

3) Oracle配置

需要修改監聽端口為公網,修改listener檔案,重新開機oracle服務

四、注意事項

4.1 采集器或采集腳本設定開機自啟

為保障被監控服務當出現異常重新開機後采集其自動啟動,為此需要寫腳本講采集器寫如開機自啟動,保障伺服器恢複後,正常監控服務。

建立一個單獨的采集器目錄,并寫入/etc/rc.local中。

如建立scripts 目錄

bash /scripts/jkb_agent/start.sh

4.1 Mysql監控需要安裝插件

如果沒有安裝MySQL-python  在 采集器的LOG中 會報相應的錯誤 内容類似如下:

<code>2013-05-29 18:16:23,638 ERROR relation_id:1310  </code><code>type</code><code>:mysql  error:Traceback (most recent call last):</code>

<code>File “C:\jkb_agent_windows\jkb_agent\plugin\MySQLPlugin.py”, line 51, </code><code>in</code> <code>getData</code>

<code>import</code> <code>MySQLdb</code>

<code>ImportError: No module named MySQLdb2013-05-29 18:16:23,638 ERROR relation_id:1310  </code><code>type</code><code>:mysql  error:Traceback (most recent call last):</code>

<code>ImportError: No module named MySQLdb</code>

4.2 WEB應用

檢查服務内部WEB中間件是否内部加載status子產品,使用浏覽器測試是否可以正常打開status頁面。

4.3檢測SNMP資料

檢查防火牆是否開啟對應UDP端口,使用snmpwalk -v SNMP版本 -c 團體名稱 檢測IP .

測試是否有資料傳回。

此處以5min CPU的負載來測試。

使用Windows下測試工具MIB Browser測試是否有監控資料傳回。

填寫被監控端IP位址、SNMP團體号、端口等資訊。

有資料出現,即配置正确,可以擷取主機資料。

4.5 SQLserver 監控安裝pyodbc

基于python環境編寫的采集器運作需要相關python子產品的支援,需要安裝pip來安裝pyodbc

4.6 Mongodb 需要安裝JSON

需要安裝python-json lib包

4.7 Redis 部署問題

Redis在監控過程中,釋出到被監控伺服器WEB應用中狀态頁是由php語言編寫,需要安裝php環境支援,需要開啟php-redis子產品

基于python語言編寫的采集器需要python-redis子產品支援,才可以正常擷取資料。

4.8 Oracle 需要修改主機監聽端口

Oracle安裝完成後,預設1521端口之上本地監聽,監控寶建立監控項目中監控項目連接配接名需要指明端口,是以需要修改監聽端口為公網,修改listener檔案,(HOST=被監控主機名),之後重新開機oracle服務。

監控項目Orale連接配接明為:IP:端口/資料庫執行個體名稱

如:192.168.111.96:1521/orcl

五、附錄

目前已經将Linux下安裝一些服務寫成腳本,均為centos 6.x實驗,後期有需求可以拓展更多版本,更便于快速部署基本環境。

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

<code>AutoInstallRedis.sh</code>

<code>#!/bin/bash</code>

<code>#############</code>

<code>#mail [email protected]</code>

<code>echo</code> <code>"##########################################"</code>

<code>echo</code> <code>"Auto Install Redis                      ##"</code>

<code>echo</code> <code>"Press Ctrl + C to cancel                ##"</code>

<code>echo</code> <code>"Any key to continue                     ##"</code>

<code>read</code> <code>-n 1</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>stop</code>

<code>sed</code> <code>-i </code><code>"s/SELINUX=enforcing/SELINUX=disabled/"</code>  <code>/etc/selinux/config</code>

<code>if</code> <code>[ -d </code><code>/tools</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/tools</code>

<code>else</code>

<code>    </code><code>mkdir</code> <code>/tools</code> <code>&amp;&amp; </code><code>cd</code> <code>/tools</code>

<code>fi</code>

<code>yum -y </code><code>install</code> <code>wget</code>

<code>wget -c -O </code><code>/tools/redis</code> <code>http:</code><code>//download</code><code>.redis.io</code><code>/releases/redis-3</code><code>.0.2.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf redis</code>

<code>cd</code> <code>redis-3.0.2</code>

<code>make</code>

<code>cd</code> <code>src/</code>

<code>make</code> <code>test</code>

<code>make</code> <code>install</code>

<code>cp</code> <code>redis.conf </code><code>/etc/</code>

<code>cat</code> <code>&gt;&gt; </code><code>/etc/init</code><code>.d</code><code>/redis</code> <code>&lt;&lt; EOF</code>

<code>#</code>

<code># Init file for redis</code>

<code># chkconfig: - 80 12</code>

<code># description: redis daemon</code>

<code># processname: redis</code>

<code># config: /etc/redis.conf</code>

<code># pidfile: /var/run/redis.pid</code>

<code>source</code> <code>/etc/init</code><code>.d</code><code>/functions</code>

<code>#BIN="/usr/local/bin"</code>

<code>BIN=</code><code>"/usr/local/bin"</code>

<code>CONFIG=</code><code>"/etc/redis.conf"</code>

<code>PIDFILE=</code><code>"/var/run/redis.pid"</code>

<code>### Read configuration</code>

<code>[ -r </code><code>"$SYSCONFIG"</code> <code>] &amp;&amp; </code><code>source</code> <code>"$SYSCONFIG"</code>

<code>RETVAL=0</code>

<code>prog=</code><code>"redis-server"</code>

<code>desc=</code><code>"Redis Server"</code>

<code>start() {</code>

<code>        </code><code>if</code> <code>[ -e $PIDFILE ];</code><code>then</code>

<code>            </code><code>echo</code> <code>"$desc already running...."</code>

<code>            </code><code>exit</code> <code>1</code>

<code>        </code><code>fi</code>

<code>        </code><code>echo</code> <code>-n $</code><code>"Starting $desc: "</code>

<code>        </code><code>daemon $BIN/$prog $CONFIG</code>

<code>        </code><code>RETVAL=$?</code>

<code>        </code><code>echo</code>

<code>        </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>touch</code> <code>/var/lock/subsys/</code><code>$prog</code>

<code>        </code><code>return</code> <code>$RETVAL</code>

<code>}</code>

<code>stop() {</code>

<code>        </code><code>echo</code> <code>-n $</code><code>"Stop $desc: "</code>

<code>        </code><code>killproc $prog</code>

<code>        </code><code>[ $RETVAL -</code><code>eq</code> <code>0 ] &amp;&amp; </code><code>rm</code> <code>-f </code><code>/var/lock/subsys/</code><code>$prog $PIDFILE</code>

<code>restart() {</code>

<code>        </code><code>stop</code>

<code>        </code><code>start</code>

<code>case</code> <code>"$1"</code> <code>in</code>

<code>  </code><code>start)</code>

<code>        </code><code>;;</code>

<code>  </code><code>stop)</code>

<code>  </code><code>restart)</code>

<code>        </code><code>restart</code>

<code>  </code><code>condrestart)</code>

<code>        </code><code>[ -e </code><code>/var/lock/subsys/</code><code>$prog ] &amp;&amp; restart</code>

<code>  </code><code>status)</code>

<code>        </code><code>status $prog</code>

<code>  </code><code>*)</code>

<code>        </code><code>echo</code> <code>$</code><code>"Usage: $0 {startstoprestartcondrestartstatus}"</code>

<code>        </code><code>RETVAL=1</code>

<code>esac</code>

<code>exit</code> <code>$RETVAL</code>

<code>EOF</code>

<code>chmod</code> <code>755 </code><code>/etc/init</code><code>.d</code><code>/redis</code>

<code>sed</code> <code>-i </code><code>"s/daemonize no/daemonize yes/g"</code> <code>/etc/redis</code><code>.conf</code>

<code>chkconfig redis on</code>

<code>service redis start</code>

<code>echo</code> <code>-e </code><code>"\033[32m Redis install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>redis</code>

<code> </code> 

<code>5.3 AutoInstallMongodb.sh</code>

<code>echo</code> <code>"Auto Install Mongodb                    ##"</code>

<code>/etc/init</code><code>.d</code><code>/iptables</code> <code>status &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>if</code> <code>[ $? -</code><code>eq</code> <code>0 ]</code>

<code>then</code>

<code>iptables -I INPUT -p tcp --dport 27017 -j ACCEPT &amp;&amp; </code>

<code>iptables -I INPUT -p tcp --dport 28017 -j ACCEPT &amp;&amp;</code>

<code>iptables-save &gt;</code><code>/dev/null</code> <code>2&gt;&amp;1</code>

<code>    </code><code>echo</code> <code>-e </code><code>"\033[32m iptables is stopd\033[0m"</code>

<code>setenforce 0</code>

<code>################################</code>

<code>if</code> <code>[ -d </code><code>/opt</code> <code>];</code><code>then</code>

<code>    </code><code>cd</code> <code>/opt</code>

<code>    </code><code>mkdir</code> <code>/opt</code> <code>&amp;&amp; </code><code>cd</code> <code>/opt</code>

<code>yum groupinstall </code><code>"Development tools"</code> <code>-y</code>

<code>wget -c -O </code><code>/opt/mongodb</code> <code>https:</code><code>//fastdl</code><code>.mongodb.org</code><code>/linux/mongodb-linux-x86_64-rhel62-3</code><code>.2.9.tgz</code>

<code>tar</code> <code>-zxvf mongodb-linux-x86_64-rhel62-3.2.9.tgz</code>

<code>mv</code> <code>mongodb-linux-x86_64-rhel62-3.2.9 mongodb</code>

<code>cd</code>  <code>mongodb</code>

<code>mkdir</code> <code>log &amp;&amp; </code><code>mkdir</code> <code>data</code>

<code>cd</code> <code>log &amp;&amp; </code><code>touch</code> <code>mongodb.log</code>

<code>cd</code> <code>..</code>

<code>.</code><code>/bin/mongod</code> <code>--httpinterface --dbpath </code><code>/opt/mongodb/data/</code> <code>--logpath </code><code>/opt/mongodb/log/mongodb</code><code>.log --fork</code>

<code>echo</code> <code>-e </code><code>"\033[32m Mongodb install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>mongod </code>

<code>5.4 AutoInstallLighttpd.sh</code>

<code>echo</code> <code>"Auto Install Lighttpd                   ##"</code>

<code>iptables -I INPUT -p tcp --dport 80 -j ACCEPT &amp;&amp; </code>

<code>#######################################</code>

<code>yum -y </code><code>install</code> <code>wget  gcc</code>

<code>wget -c -O </code><code>/tools/lighttpd</code> <code>http:</code><code>//download</code><code>.lighttpd.net</code><code>/lighttpd/releases-1</code><code>.4.x</code><code>/lighttpd-1</code><code>.4.41.</code><code>tar</code><code>.gz</code>

<code>yum -y </code><code>install</code> <code>gcc pcre-devel zlib-devel vim </code><code>bzip2</code><code>-devel</code>

<code>cd</code> <code>/tools/</code>

<code>tar</code> <code>zxvf lighttpd</code>

<code>cd</code> <code>lighttpd-1.4.41</code>

<code>.</code><code>/configure</code> <code>--prefix=</code><code>/usr/local/lighttpd</code>

<code>make</code> <code>&amp;&amp; </code><code>make</code> <code>install</code> 

<code>/etc/init</code><code>.d</code><code>/lighttpd</code> <code>start</code>

<code>echo</code> <code>-e </code><code>"\033[32m Lighttp install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>lighttpd</code>

<code>5.5 AutoInstallMemcache.sh</code>

<code>echo</code> <code>"Auto Install memcached                   ##"</code>

<code>echo</code> <code>"Press Ctrl + C to cancel                 ##"</code>

<code>echo</code> <code>"Any key to continue                      ##"</code>

<code>iptables -I INPUT -p tcp --dport 11211 -j ACCEPT &amp;&amp; </code>

<code>yum -y </code><code>install</code> <code>wget gcc libevent libevent-devel</code>

<code>wget -c -O </code><code>/tools/memcached</code> <code>http:</code><code>//memcached</code><code>.org</code><code>/files/memcached-1</code><code>.4.31.</code><code>tar</code><code>.gz</code>

<code>tar</code> <code>-zxvf memcached</code>

<code>cd</code>  <code>memcached-1.4.31</code>

<code>.</code><code>/configure</code>

<code>/usr/local/bin/memcached</code> <code>-d -u root</code>

<code>echo</code> <code>-e </code><code>"\033[32m Memcache install success\033[0m"</code>

<code>netstat</code> <code>-lntup | </code><code>grep</code> <code>memcached</code>

本文轉自 KaliArch 51CTO部落格,原文連結:http://blog.51cto.com/kaliarch/2045128,如需轉載請自行聯系原作者