繼上篇監控寶伺服器監控後,此篇博文詳細記錄下項目中對常用服務監控的配置步驟
<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><Location </code><code>/Server-status</code><code>></code>
<code>SetHandler Server-status</code>
<code>Order deny,allow</code>
<code>Deny from all</code>
<code>Allow from all</code>
<code><</code><code>/Location</code><code>></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>>CREATE USER ‘xuel’@’你的采集器的IP’ IDENTIFIED BY ‘your_password’;</code>
<code>>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>&& </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>>> </code><code>/etc/init</code><code>.d</code><code>/redis</code> <code><< 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>] && </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 ] && </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 ] && </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 ] && 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 ></code><code>/dev/null</code> <code>2>&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 && </code>
<code>iptables -I INPUT -p tcp --dport 28017 -j ACCEPT &&</code>
<code>iptables-save ></code><code>/dev/null</code> <code>2>&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>&& </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 && </code><code>mkdir</code> <code>data</code>
<code>cd</code> <code>log && </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 && </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>&& </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 && </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,如需轉載請自行聯系原作者