天天看點

Zabbix監控Windows程序重新開機

    前段時間,一個朋友咨詢我怎麼監控Windows程序的重新開機。生産環境有監控程序的啟動和關閉,但重新開機還沒想過。經過一番思考和摸索後成功完成了監控,下面把監控思路和方法分享給大家。

    我首先想到的是通過Zabbix自帶的程序數監控(proc.num)來做,但有兩個難點:一、程序數從1變為0再變為1,算是一次重新開機。觸發器要判斷三次連續的監控資料,不太好做;二、程序從關閉到下次啟動,中間間隔多長時間算是一次重新開機呢?

    然後想到了zabbix監控作業系統的重新開機,比如Windows系統重新開機的觸發器:{Template OS Windows:system.uptime.change(0)}<0,zabbix是通過監控系統運作時長來判斷的,即系統運作時長的變化小于0就可以斷定伺服器重新開機了。同樣的,如果我們監控了程序的運作時長,那麼重新開機就很好判斷了。

    下一步着手監控Windows程序的運作時長。想到了zabbix原生支援監控Windows performance counters(Windows性能螢幕),可以從Windows性能螢幕裡面查找是否有對程序運作時長的監控。登入一台Windows Server 2008伺服器,上去檢視一下性能螢幕,還真找到了,見下圖:

<a href="https://s5.51cto.com/wyfs02/M02/96/BF/wKioL1klGrTgRb43AAGrAlpJ8eM644.png-wh_500x0-wm_3-wmp_4-s_1266831990.png" target="_blank"></a>

    從Process類别裡找到了“Elapsed Time”,這就是程序總運作時間的意思。再從下面一欄選擇一個程序(比如zabbix_agentd,不帶.exe字尾)。

    添加好後,右鍵選擇“屬性”:

<a href="https://s5.51cto.com/wyfs02/M02/96/BE/wKiom1klGuzC5z1QAAAz7F6QKCg286.png-wh_500x0-wm_3-wmp_4-s_4000984218.png" target="_blank"></a>

    可以看到我們剛才添加的計數器為:\Process(zabbix_agentd)\Elapsed Time

<a href="https://s4.51cto.com/wyfs02/M00/96/BE/wKiom1klGwWwNFkzAADGEDPW4go666.png-wh_500x0-wm_3-wmp_4-s_4294421823.png" target="_blank"></a>

    退出設定,然後檢視計數器的資料,程序目前運作時長14349806秒:

<a href="https://s4.51cto.com/wyfs02/M00/96/BF/wKioL1klGzHCz2yOAADtxh2g8W0200.png-wh_500x0-wm_3-wmp_4-s_618326459.png" target="_blank"></a>

    重新開機程序zabbix_agentd,再觀察一下,最新計數從0開始了:

<a href="https://s4.51cto.com/wyfs02/M01/96/BE/wKiom1klG06Q3EsYAAAV5SBccAA566.png-wh_500x0-wm_3-wmp_4-s_200081473.png" target="_blank"></a>

    方法找到了,我們建立監控項和觸發器。部落格位址:http://qicheng0211.blog.51cto.com/

    先建立監控項:

<a href="https://s2.51cto.com/wyfs02/M00/96/BF/wKioL1klG5igLvl2AAFJviy7PL8131.png-wh_500x0-wm_3-wmp_4-s_2956208003.png" target="_blank"></a>

    監控項名稱:zabbix_agentd程序運作時間

    監控項類型:Zabbix agent

    監控項Key:perf_counter["\Process(zabbix_agentd)\Elapsed Time"]

    資料類型:float

    機關:s

    監控間隔:30

    注:perf_counter的參數就是上面添加的性能計數器。

    建立觸發器:

<a href="https://s1.51cto.com/wyfs02/M02/96/BF/wKioL1klG7GQ8qzPAADENYlMhhM484.png-wh_500x0-wm_3-wmp_4-s_3775184160.png" target="_blank"></a>

    觸發器名字:zabbix_agentd程序重新開機!

    觸發器表達式:{windows.60.61:perf_counter["\Process(zabbix_agentd)\Elapsed Time"].change()}&lt;0

    表達式含義:監控項最新監控資料和上一個資料的內插補點小于0,則觸發器觸發。

    下面我們測試一下,重新開機程序後觀察是否産生告警:

<a href="https://s3.51cto.com/wyfs02/M00/96/BF/wKiom1klG93gzBvgAAD8VFTIoTU288.png-wh_500x0-wm_3-wmp_4-s_1915317560.png" target="_blank"></a>

    等待一會,觸發器成功被觸發,觸發狀态持續30秒。

<a href="https://s5.51cto.com/wyfs02/M02/96/BF/wKiom1klG_bAEUdjAACBpY5Y-dw813.png-wh_500x0-wm_3-wmp_4-s_2421563041.png" target="_blank"></a>

    到這我們對Windows程序重新開機的監控就完成了。

    原創文章,轉載請注明出處,尊重部落客勞動成果,感謝。

本文轉自 張斌_青島 51CTO部落格,原文連結:http://blog.51cto.com/qicheng0211/1928947

繼續閱讀