由同事提供4個需要監控的url地址
GET類型:
http://10.15.24.61:809/UserCenterService.svc/getAccountInfo/563/9638
POST類型:
http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/4/0/563/1/9638/1.0
http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/3/0/563/1/9638/1.0
http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/2/0/563/1/9638/1.0
url的返回值
以下操作,統一是在10.25.4.7服務器上操作。由于curl的是SLB IP地址,下面的操作,其實在任何1臺CentOS服務器都可以進行。
其中,通過執行curl命令,獲取的返回值,GET類型正確的結果如下:
[root@iZ23kdZ?~]#?curl?http://10.15.24.61:809/UserCenterService.svc/getAccountInfo/563/9638 "{\"state\":\"1\",\"data\":{\"AccountInfo\":{\"Uid\":\"563\",\"Recieving\":\"0\",\"Collect\":\"0\",\"Reading\":\"0\",\"Recommends\":\"0\",\"Bankcards\":\"0\",\"userName\":\"加加林\",\"IsQuickReg\":\"0\",\"UNameComplete\":\"0\",\"PwdComplete\":\"0\",\"IsOwner\":\"1\",\"IsRecommended\":\"1\",\"IsBindBankCard\":\"1\",\"MyBanks\":[{\"CardPadRightNum\":\"7471\",\"CardStatus\":\"2\"}],\"Email\":\"1550348062@qq.com\",\"EmailVerify\":\"\",\"isVip\":0}},\"errorInfo\":\"\",\"versionCode\":\"\"}"
POST類型的正確結果如下:
[root@iZ23kdZ?~]#?curl?-d?-XPOST?http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/4/0/563/1/9638/1.0 "{\"state\":\"1\",\"data\":{\"productlist\":null,\"rowCount\":0,\"ProSource\":4},\"errorInfo\":\"\",\"versionCode\":\"\"}"
3個POST類型的url返回結果是一致的。
其中,以上4個url的返回結果,只需要關注返回值前面的“state”值后面為“1”,就說明接口是正常的。
因此,后面的監控都是圍繞這個結果進行。
awk命令獲取url返回值
GET類型:
[root@iZ23kdZ?~]#?curl?http://10.15.24.61:809/UserCenterService.svc/getAccountInfo/563/9638??2>/dev/null|grep?state|cut?-d":"?-f?2|cut?-d?"\""?-f?2|cut?-d?"\\"?-f?1 1
POST類型:
[root@iZ23kdZ?~]#?curl?-d-XPOST?http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/4/0/563/1/9638/1.02>/dev/null|grep?state|cut?-d?":"?-f?2|cut?-d?"\""-f?2|cut?-d?"\\"?-f?1 1
雖然同樣是curl命令,但是,不同類型,參數不太一樣。
只要這條命令的返回值不是1,就讓zabbix報警。
?
確認自定義監控腳本的位置
創建自定義監控項,需要確認自定義監控腳本的位置。有的使用者會把自定義監控命令直接寫到配置文件里,但是,推薦把監控腳本放在配置文件的include目錄里。
[root@iZ23kdZ?~]#?head?-12?/etc/zabbix/zabbix_agentd.conf LogFile=/tmp/zabbix_agentd.log Server=10.25.4.8 #ServerActive=10.25.4.6 ServerActive=10.25.4.8 Hostname=10.25.4.8 #Hostname=iZ23kdZ RefreshActiveChecks=300 BufferSend=5 BufferSize=1000 MaxLinesPerSecond=200 Timeout=10 Include=/etc/zabbix/zabbix_agentd.d/*.conf
就是上面最后1行配置文件指定的目錄。注意,監控腳本的后綴要求必須是.conf,否則,zabbix不會識別。
?
相關自定義監控腳本
[root@iZ23kdZ?~]#?ll?-tr?/etc/zabbix/zabbix_agentd.d/curl* -rw-r--r--?1?root?root?215Jun?23?14:20?/etc/zabbix/zabbix_agentd.d/curl_post_1.conf -rw-r--r--?1?root?root?215Jun?23?15:23?/etc/zabbix/zabbix_agentd.d/curl_post_2.conf -rw-r--r--?1?root?root?215Jun?23?15:28?/etc/zabbix/zabbix_agentd.d/curl_post_3.conf -rw-r--r--?1?root?root?190?Jun?23?16:11?/etc/zabbix/zabbix_agentd.d/curl_get.conf
如下是自定義的監控腳本,curl_post_3.conf沒有列出,和前2個幾乎一樣。
[root@iZ23kdZ?~]#?cat?/etc/zabbix/zabbix_agentd.d/curl_get.conf? UserParameter=curl_get,/usr/bin/curl?http://10.15.24.61:809/UserCenterService.svc/getAccountInfo/563/9638??2>/dev/null|grep?state|cut?-d":"?-f?2|cut?-d?"\""?-f?2|cut?-d?"\\"?-f?1 [root@iZ23kdZ?~]#?cat?/etc/zabbix/zabbix_agentd.d/curl_post_1.conf? UserParameter=curl_post_1,/usr/bin/curl?-d?-XPOST?http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/4/0/563/1/9638/1.02>/dev/null|grep?state|cut?-d?":"?-f?2|cut?-d?"\""-f?2|cut?-d?"\\"?-f?1 [root@iZ23kdZ?~]#?cat?/etc/zabbix/zabbix_agentd.d/curl_post_2.conf? UserParameter=curl_post_2,/usr/bin/curl?-d?-XPOST?http://10.15.24.61:809/ProductService/userInvestVarietyYjsList/3/0/563/1/9638/1.02>/dev/null|grep?state|cut?-d?":"?-f?2|cut?-d?"\""-f?2|cut?-d?"\\"?-f?1
自定義腳本重啟zabbix agent服務才能生效
#檢查zabbix agent服務進程
[root@iZ23kdZ?~]#?ps?-ef|grep?zabbix|grep?-v?"zabbix_server" root??????7847?26915??0?16:57?pts/0????00:00:00?grep?--color=auto?zabbix root?????18956????1??0?16:12??????????00:00:00?zabbix_agentd?-c/etc/zabbix/zabbix_agentd.conf root?????18957?18956??0?16:12??????????00:00:00?zabbix_agentd:?collector?[idle1?sec] root?????18958?18956??0?16:12??????????00:00:00?zabbix_agentd:?listener?#1[waiting?for?connection] root?????18959?18956??0?16:12??????????00:00:00?zabbix_agentd:?listener?#2[waiting?for?connection] root?????18960?18956??0?16:12?????????00:00:00?zabbix_agentd:listener?#3?[waiting?for?connection] root?????18961?18956??0?16:12??????????00:00:00?zabbix_agentd:?active?checks#1?[idle?1?sec]
#殺死zabbix agent服務
[root@iZ23kdZ?~]#?pkill?-f?/etc/zabbix/zabbix_agentd.conf
#查看進程結果
[root@iZ23kdZ?~]#?ps?-ef|grep?zabbix|grep?-v?"zabbix_server" root?????7934?26915??0?16:57?pts/0????00:00:00?grep?--color=auto?zabbix
#啟動zabbix agent服務
[root@iZ23kdZ?~]#zabbix_agentd?-c?/etc/zabbix/zabbix_agentd.conf
#查看啟動服務結果
[root@iZ23kdZ?~]#?ps?-ef|grep?zabbix|grep?-v?"zabbix_server" root??????7941????1??0?16:57??????????00:00:00?zabbix_agentd?-c/etc/zabbix/zabbix_agentd.conf root??????7942?7941??0?16:57??????????00:00:00?zabbix_agentd:?collector?[idle1?sec] root??????7943?7941??0?16:57??????????00:00:00?zabbix_agentd:?listener?#1[waiting?for?connection] root??????7944?7941??0?16:57??????????00:00:00?zabbix_agentd:?listener?#2[waiting?for?connection] root??????7945?7941??0?16:57??????????00:00:00?zabbix_agentd:?listener?#3[waiting?for?connection] root??????7946?7941??0?16:57??????????00:00:00?zabbix_agentd:?active?checks#1?[idle?1?sec] root?????7967?26915??0?16:58?pts/0????00:00:00?grep?--color=auto?zabbix
請按照文檔的殺死進程和啟動服務的命令來執行,否則,后果自負。
?
zabbix_get命令測試結果
[root@iZ23kdZ?~]#?zabbix_get?-s?10.25.4.8?-p?10050?-k?"curl_post_1" 1 [root@iZ23kdZ?~]#?zabbix_get?-s?10.25.4.8?-p?10050?-k?"curl_get" 1
現在,就可以去zabbix的web頁面添加監控項了。
增加Item項
依次點擊“Configuration”→“Host”
在頁面下面找到“10.253.4.8”服務,點擊“Items”
4個監控項已經添加
4個監控項的任意1個,點擊查看的結果:
只有4個位置需要修改。其中,“Key”值就是“zabbix_get -s 10.25.4.7 -p 10050 -k "curl_get"”命令最后的參數“-k”的值。
“Name”值建議和“Key”值保持一致。
“Description”的值是由前面提到的同事提供,就是這個4個url的中文說明。
“Applications”值是因為前面創建過這個監控組。
再列出1個作為參考:
觸發值的創建
在zabbix的WEB界面,很多位置都可以找到這個觸發值,只要是同一臺需要監控的服務器。
“Triggers”創建后的列表:
每個“Triggers”項基本一致:
“Expression”框里的表達式,需要點擊右邊的“Add”按紐:
在彈出的對話框點擊“Item”右邊的“Select”按紐:
找到對應的監控項,點擊確認。
在返回的對話框里,點擊“Function”項,選中“Last (most recent) T value is NOT N”項。
最后的“N”項,輸入“1”。
點擊“Insert”按紐完成表達式的創建。
在“Trigger”配置頁面里,Severity項的意思是報警級別。
截圖中最下面的“Clone”按紐,可以通過它來創建參數相近的觸發值。前面的Items監控項,也有這樣的按紐。
圖形的創建
點擊“Graphs”按紐,注意是不是對應的服務器。
我把4個監控項的圖形頁面放在了一起,其實,分開也可以。
細節如下:
“Graph type”是圖形類型,一般選擇默認。
每1個監控項是通過“Add”按紐來添加。
點擊“Preview”可以看到預覽圖。
注意:所有修改,必須點擊“Update”按紐才能生效。
目前已經把4個url地址的監控分開配置圖形:
curl_get配置:
curl_post_1配置:
curl_post_2配置:
最后1個也差不多。
?
現在,要把4張圖放在一個界面顯示:
依次點擊“Monitoring”→“Screens”
點擊“Create screen”按紐
配置的內容如下:
“Columns”:縱列數
“Rows”:排數
點擊“Add”按紐后,在列表里點擊剛創建的“curl_4”
點擊右上角的“Edit screen”按紐
在彈出的頁面里點擊左上角的“Change”按紐。
在彈出的頁面里,點擊“Graph”選項的“Select”按紐
在彈出的對話框里,選擇“curl_get”
“Resource”就是“Graph”即可。
“Dynamic item”的意思是“動態獲取”,應該勾選。
點擊“Add”按紐完成添加。
其它3個添加方法相同。
回到zabbix主界面,找到左側的“Favorite screens”,點擊“Action”按紐,在彈出的快捷菜單點擊“Add”
在彈出的對話框選中剛才創建的“curl_4”,點擊“Select”按紐
最后的結果:
這樣,就可以在zabbix主界面通過點擊“Favorite screens”添加的screens,同時展示4個url的監控狀態。
補充1:screen顯示報錯可能是有地方沒有選擇正確
今天(2017年6月27日)無意間發現圖中的問題:
細節圖
此現象,是因為右上角的監控主機選擇的其它服務器。
自定義的監控腳本在那臺服務器上,就選擇那臺存放自定義監控腳本的服務器即可解決。
參考文檔
https://www.abcdocker.com/abcdocker/1453——Zabbix 3.0 部署監控 [二]
轉載于:https://blog.51cto.com/gagarin/1942089