有時候我們需要監控一個進程是否停掉了,如果停掉了就立馬報警,以下記錄了下詳細步驟,通過這個示例會學到很多zabbix核心配置相關的東西。
總的來說,配置一個完整的監控流程如下:
- 1.創建監控項,即配置要監控的指標,如內存的使用率,CPU的使用率,進程的運行狀況等,配了監控項后就會定時收集機器的配置信息,然后等待zabbix server收集(zabbix agent被動模式)。
- 2.創建觸發器,觸發器將監控項收集的數據通過觸發器表達式進行評估。
在觸發器表達式中我們可以定義哪些值范圍是合理,哪些是不合理的,如果出現不合理的值,觸發器會把狀態改為PROBLEM,接下來就到了報警以及發郵件。 - 3.創建動作,在zabbix中動作的意思是觸發器觸發后要進行的操作,一般是通過配置給相關負責人發送郵件,短信等通知。
下面配置監控服務器的logstash(開源實時日志同步項目)進程是否在運行:
- 1.首先創建監控進程的監控項:
監控項的組成:key[參數]
zabbix agent支持的所有key可以到這里找到:
http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/
在這里我們需要的是proc.num這個key,以下是對此key的詳解:
可以看到此監控項的返回值是進程數量,其中cmdline參數可以是進程名字包含的關鍵字,在這里我的進程的關鍵字是logstash,因此按如下方式創建監控logstash進程的監控項,表示機器所有用戶所有狀態的logstash進程數量:
- 2.創建對應監控項的觸發器:
創建觸發器主要是編寫觸發器表達式,也就是評估監控項是否在合理范圍的表達式。觸發器表達式格式如下:
{<host>:<key>.<function>(<parameter>)}<operator><constant>
{主機:key.函數(參數)}<表達式><常數>
對于觸發器表達式更加詳細的介紹請參考這里:
http://www.ttlsa.com/zabbix/zabbix-trigger-expression/
觸發器表達式示例:
觸發器名稱:Processor load is too high on www.zabbix.com
{www.zabbix.com:system.cpu.load[all,avg1].last(0)}>5
觸發器說明:
www.zabbix.com:host名稱
system.cpu.load[all,avg1]:item值,一分內cpu平均負載值
last(0):最新值
>5:最新值大于5
如上所示,www.zabbix.com這個主機的監控項,最新的CPU負載值如果大于5,那么表達式會返回true,這樣一來觸發器狀態就改變為“problem”了。
在這里針對logstash進程觸發器配置如下:
上面配置表示如果機器logstash進程數量的最新值小于1,就會觸發報警。
- 3.配置動作發送短信和郵件報警:
以下是短信配置方式,郵件配置類似,其中應用集是自己創建的,主要用來分類,具體的自行研究:
參考文章:- zabbix item key詳解:
http://www.ttlsa.com/zabbix/zabbix-item-key/ - zabbix agent 類型所有key:
http://www.ttlsa.com/zabbix/zabbix-agent-types-and-all-keys/ - zabbix觸發器表達式詳解:
http://www.ttlsa.com/zabbix/zabbix-trigger-expression/
- zabbix item key詳解: