天天看點

【zabbix】Windows伺服器擷取IIS站點以及程式池狀态

本文介紹了zabbix如何使用批處理檢測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】Windows伺服器擷取IIS站點以及程式池狀态

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

原創作者:鄭立賽

郵箱:[email protected]

歡迎關注我們的公衆号擷取最新文章:運維自動化開發

【zabbix】Windows伺服器擷取IIS站點以及程式池狀态
【zabbix】Windows伺服器擷取IIS站點以及程式池狀态