Zabbix監控在windows的進程(非進程數)

場景介紹:

小Z同學最近遇到個項目需求,需求是用zabbix監控運行在windows的進程。然鵝,當小Z同學在網上搜了一大堆,發現基本上都是使用官方的proc.num(***.exe)鍵值拿到進程數量,很顯然,這並不符合客戶實際的需求,如果是隻運行1個的還好,若是運行了3到6個,例如java,就特別的dan疼,在任務管理器發現全是java.exe的。也許,你可以找到有些文章的說可以使用任務管理器可以看到命令行(圖一),tasklist /V查看進程詳情(圖二)等等,然鵝,對於java來說還是看不到的。
當然了拿到java.exe和pid也可以,但作爲運維人員最關注的是要知道是誰停了,而不是PID,況且人家也不知道PID對應的進程是啥。所以,本着上進負責的精神,在查閱了幾天的資料後,終於實現了!!!在這裏記錄下來,爲熱愛zabbix的小夥伴做個參考,也可以自行拓展結合腳本等其他技術實現。教程不復雜,多做幾次就上手了。
在這裏插入圖片描述
在這裏插入圖片描述
方法:

  1. 對於非java的進程,確實使用tasklist可以監控到具體的進程名,例如監控郵箱服務器程序,方法是打開cmd,輸入 tasklist | findstr “mailServer.exe” 這裏只輸出具體的進程名 或者 tasklist | find “mailServer.exe” 這裏會輸出進程,使用的資源,PID等等。然後再zabbix_agentd.conf後面加上 UserParameter=mailServer, tasklist | findstr “mailServer.exe” 保存重啓agent;在zabbix做監控時,信息類型選擇字符或者文本即可。
  2. 重點來了,對於java進程亦或者是在任務管理器只看到運行了一堆相同的進程名,但看不到具體的實例名可以利用windows自帶的 WMIC命令來獲取!打開cmd,輸入 wmic process 回車,會輸出目前在運行的所有進程,比tasklist還詳細,輸出的結果包含命令行、執行路徑、PID、使用的資源、所有者等等。有興趣的小夥伴可以到官網多多瞭解,拓展一下其他的WMIC參數。
    當然了,對於封裝好的jar包程序,常規的執行命令也就是java –jar ****.jar,是可以用wmic拿到的,命令是 wmic process where name=”java.exe” 就可以輸出當前正在運行的所有java進程,但結果不太美觀,所以可以指定一下要找的jar包名,例如: wimc process where name=”java.exe” | find “jar包名” ,這樣出來的結果就是客戶想要的了。
    在這裏插入圖片描述
    以下是agent配置示例:
    UserParameter=java_jar, WMIC.exe process where name=”java.exe” | find “jar包名”
    這裏保險一點,寫上完整的WMIC.exe就不會報命令找不到的錯。監控項照上一步。
  3. 觸發器
    在給非數值的監控配置觸發器時,要注意類型要選擇紅框的 str()
    在這裏插入圖片描述
    因爲返回的結果是字符串,所以在V這裏填上jar包進程名即可。可以只寫包名+版本,不用整行都寫。
    在這裏插入圖片描述
    問題和恢復的表達式:監控項是每60s檢測一次,觸發器這裏也是每60s檢測一次,發現和取值不符則發送告警信息。如果發現亂報警,那就多注意調整下。
    在這裏插入圖片描述
    完成後,可以停止程序檢測下是否符合需求。
    教程結束!!!本文是針對不帶參數啓動的java進程的監控,帶參數啓動的後面有空會出一篇,當然了,其實也比較簡單。

技術交流歡迎加入Q羣:177428068

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章