標籤:zabbix windows 自動監控連接埠 discovery
說明:Zabbix本身內建兩個自動探索模板,分別是磁碟發現Mounted filesystem discovery和網卡發現Network interface discovery;本人蔘考這兩個模板製做了自動連接埠發現模板和自動服務發現模板。
1、關於自訂KEY
(1)參考官方文檔:
https://www.zabbix.com/documentation/2.4/manual/config/items/userparameters
(2)Key自訂的文法格式
UserParameter=<key>,<command>
(3)例子:查看linux系統版本
#vi zabbix_agentd.confUnsafeUserParameters=1UserParameter=get.os.type,head -1 /etc/issue#service zabbix_agentd restart#zabbix_get -s 127.0.0.1 -k get.os.type
(4)例子:傳遞參數的用法
#vi zabbix_agentd.confUnsafeUserParameters=1UserParameter=wc[*],grep -c"$2"$1#這裡表示把$2,$1的傳遞給key,測試如下#service zabbix_agentd restart#zabbix_get -s 127.0.0.1-k wc[/etc/passwd,root]
說明:/etc/passwd為$1,root為$2,則key最終啟動並執行命令為grep-croot /etc/passwd
(5)例子:查看passwd檔案的行數
#vi zabbix_agentd.confUnsafeUserParameters=1UserParameter=count.line.passwd,wc -l /etc/passwd|awk‘{print $1}‘#service zabbix_agentd restart#zabbix_get -s 127.0.0.1 -k count.line.passwd
2、建立指令碼檔案
在用戶端建立discovertcpport.bat檔案,放在c:\zabbix\目錄中,內容如下:
@echo offecho {echo "data":[for /F "tokens=2 delims= " %%i IN (‘netstat -anp tcp^|find /i "LISTENING"‘) DO for /F "tokens=2 delims=:" %%j IN ("%%i") DO echo {"{#TCP_PORT}":"%%j"},echo {"{#TCP_PORT}":"10050"}echo ]echo }
指令碼說明:
命令netstat -anp tcp ^|find /i "LISTENING" 用來查看監聽狀態的TCP連接埠;
for /F "tokens=2 delims= "表示迴圈輸出的截取值,即每行以空格(delims= )分隔的第2段(token=2)值,以變數%%i輸出;
之後以同樣的迴圈截取出連接埠號碼並格式化輸出結果;
這裡的輸出格式必須按JSON對象格式輸出,否則報錯“Value should be a JSON object”;
特別要注意最後一行沒有逗號,因此單獨添加一行echo {"{#TCP_PORT}":"10050"}來結束,以滿足JSON對象格式。
3、修改用戶端配置
在用戶端的zabbix_agentd.conf中添加以下內容:
UnsafeUserParameters=1UserParameter=tcpportlisten,c:\zabbix\discovertcpport.bat
說明:第一條表示允許使用使用者自訂參數,第二條設定使用者參數,名稱tcpportlisten是自訂的KEY名,後接KEY要執行的命令或指令檔。
重新啟動zabbix agentd服務
提示:用戶端的指令碼和配置可在安裝時就提前做好,參考我的安裝文檔:
http://ywzhou.blog.51cto.com/2785388/1579165
4、用戶端測試
以管理員身份運行CMD,cd到c:\zabbix目錄,輸入指令檔名,斷行符號:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/53/A8/wKiom1RtQWqwf-0NAAHaghGKIIo667.jpg" title="圖片12.png" alt="wKiom1RtQWqwf-0NAAHaghGKIIo667.jpg" />
說明:是在我筆記上測試的,掃描出的連接埠並非監控主機10.188.1.44的。
JSON格式說明:#TCP_PORT是變數名稱,後面的數值是變數的值。
5、服務端測試
[[email protected] ~]# /usr/local/zabbix/bin/zabbix_get -s 10.188.1.44 -k tcpportlisten
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/A6/wKioL1RtQfSRFwdAAAHwlLm0gEU429.jpg" style="float:none;" title="圖片13.png" alt="wKioL1RtQfSRFwdAAAHwlLm0gEU429.jpg" />
說明:可以看到監控主機掃描出的連接埠中已有10050,而我在後面添加了一個10050,不要緊,接著往下看。
6、建立連接埠自動探索規則
可以單獨建立一個模板,也可以直接在windows模板中建立:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/A8/wKiom1RtQXyTks-tAANeNsV4EtI936.jpg" style="float:none;" title="圖片14.png" alt="wKiom1RtQXyTks-tAANeNsV4EtI936.jpg" />
7、設定連接埠自動探索規則
使用的KEY就是在用戶端設定檔中自訂的tcpportlisten650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/A6/wKioL1RtQfThkWmZAAI2WWSubhY489.jpg" style="float:none;" title="圖片15.png" alt="wKioL1RtQfThkWmZAAI2WWSubhY489.jpg" />
8、給自動探索模板建立Item原型
使用ntp.tcp.listen[]來監控連接埠狀態,[]內的值取自變數#TCP_PORT的值,標題中的$1同樣取自變數#TCP_PORT的值。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/A8/wKiom1RtQXzQdq1EAAFekOleplA919.jpg" style="float:none;" title="圖片16.png" alt="wKiom1RtQXzQdq1EAAFekOleplA919.jpg" />
9、給自動探索模板建立觸發器原型
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/53/A6/wKioL1RtQfXAXByDAAIWIqTyyoo503.jpg" style="float:none;" title="圖片17.png" alt="wKioL1RtQfXAXByDAAIWIqTyyoo503.jpg" />
點擊Select prototype為觸發器選擇Item原型:
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M00/53/A8/wKiom1RtQX3QPdjtAADp9RSSxTw261.jpg" style="float:none;" title="圖片18.png" alt="wKiom1RtQX3QPdjtAADp9RSSxTw261.jpg" />
10、給自動探索模板建立映像原型
映像原型也可以不建立,意義不大,返回的值不是0就是1,看不看圖無所謂;但是要監控效能這樣有曲線的還是有必要的。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/A6/wKioL1RtQfXyOZkrAAJvgwIEgiM957.jpg" style="float:none;" title="圖片19.png" alt="wKioL1RtQfXyOZkrAAJvgwIEgiM957.jpg" />
11、重複監控問題
如果已經使用net.tcp.listen手動建立了連接埠監控,會報如下錯誤,但不要緊。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M01/53/A8/wKiom1RtQX2RER0TAAS9HGlZjgw873.jpg" style="float:none;" title="圖片20.png" alt="wKiom1RtQX2RER0TAAS9HGlZjgw873.jpg" />
12、查看連接埠自動監控結果
由於我是在windows模組中添加的自動探索規則,因此監控主機做好前面說的配置就會自己添加連接埠監控了;如果是在單獨建立的模板中建立的,就要Link到監控主機上了。
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/A6/wKioL1RtQfbD1n4bAAbbCgpQDoY650.jpg" style="float:none;" title="圖片21.png" alt="wKioL1RtQfbD1n4bAAbbCgpQDoY650.jpg" />
13、查看最近返回的值
650) this.width=650;" src="http://s3.51cto.com/wyfs02/M02/53/A6/wKioL1RtQfbhaAVyAAROhAIz8HA277.jpg" style="float:none;" title="圖片22.png" alt="wKioL1RtQfbhaAVyAAROhAIz8HA277.jpg" />
結論:自動監控連接埠雖然省事,但很多監聽連接埠都不瞭解,不知是什麼程式啟用了,可以和前面的連接埠模板配合使用;先建立連接埠模板用來監聽重要的服務連接埠,再使用自動監控連接埠來監控其他監聽連接埠。
修改下指令碼可以用來監控其他的內容,比如監控已啟動的服務net start,監控已串連的用戶端netstat ESTABLISHED狀態等;還可以在連接埠監控指令碼基礎上多添加幾個和連接埠有關的ITEMS,如是否可串連,串連效能如何等。
將一些不重要的連接埠的觸發器禁用,否則會頻煩收到郵件警示。
本文出自 “月晴星飛” 部落格,請務必保留此出處http://ywzhou.blog.51cto.com/2785388/1579936
Zabbix監控(八):自動監控windows連接埠