【zabbix】Windows服務器獲取IIS站點以及程序池狀態


在使用zabbix做Windows服務器監控的時候遇到一個比較棘手的問題,檢測IIS站點狀態。

普通情況下,只要用瀏覽器訪問iis站點測試一下返回碼是不是200即可判斷狀態,但是我這次遇到的是iis使用了主機頭,也就是說iis上的站點使用的是同一個IP地址,同一個端口號。外部請求是根據域名來判斷訪問哪個站點,並且IIS前面還有負載均衡器,這樣我就不能讓zabbix也通過域名的方式測試IIS了,因為這樣不能判斷是不是所有的IIS都沒有問題。

為此,研究了如何在本地使用命令行的方式獲取iis站點的運行狀態,做成一個批處理文件供zabbix分析如下:

 

@echo off
C:\Windows\System32\inetsrv\appcmd.exe list site | find "Stopped" >> D:\zabbix\iis.txt
C:\Windows\System32\inetsrv\appcmd.exe list apppool | find "Stopped" >> D:\zabbix\iis.txt
for /f "tokens=1 delims=(" %%1 in (D:\zabbix\iis.txt)do (set x=%%1&& call set x=%%x:"=%%
call echo %%x%%)
cd.>D:\zabbix\iis.txt

腳本說明:

第一行:關閉echo輸出。

第二行:獲取所有站點的狀態,查找狀態為stopped的站點,將結果放在iis.txt文件里。

第三行:獲取所有應用程序池的狀態,查找狀態為stopped的程序池,將結果放在iis.txt文件里。

第四行:以左括號為分隔符(delims指定分隔符),截取iis.txt里第一列的數據(tokens=1指定第一列),並去掉雙引號(如果有雙引號,zabbix使用微信告警的時候,引號后面的內容就沒了)

第五行:將iis.txt文件清空。方便下次使用。

 

如果所有站點都正常,該腳本返回為空。

如果有站點異常,該腳本返回如下:

表示名字為:portal的站點停了,但是portal的程序池沒有停

名字為:defaultapppool的程序池停了,但是站點沒有停

第一列的site表示站點故障,apppool表示應用程序池故障。

 

 

 

zabbix里調用這個腳本即可實現對iis站點的監控,如何添加監控項這里就不講了。觸發器可以選擇:最近獲取到的字符串長度大於1即報警。原因為這個腳本只有在iis站點或者程序池有停止的時候,才會返回停止的值。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM