日常Zabbix報警案例中,大多都是報警發送郵件,場景裏很少有需要報警後執行一個命令(啓動服務、清空磁盤空間、關停服務器);而今天就給大家講講最近需要做的事:報警後執行遠程命令
首先講講需求吧, 遙遠的一天,小夥伴們用上了mongodb,而且需要大力使用,日後一些數據存儲在mongodb;從生產環境遷移數據進mongodb,那麼問題來了,經常聽到別人說,mongodb量大就掛了。mongodb有些數據是在程序當中被引用到,白天某個時刻掛了,那麼用戶、客服、運營就呼喚着了。。團隊中也在查問題,找原因,請教大神,升級版本,可還是掛了。。 目前掛了就是在啓動。。 小夥伴們不可能時常和電腦在一起,有時需要和妹紙在一起調情啦、上高地啦。剛好zabbix動作中有個遠程命令功能,那麼就通過它來解決問題。。
遠程命令整個過程: items -> triggers -> action -> remote commands
配置過程:
1.創建一個mongodb items
Configuration -> Hosts > Items
2.配置mongodb triggers
Configuration -> Hosts > Triggers
3.配置遠程命令的actions
Configuraction -> Actions
條件選擇觸發器值爲PROBLEM、觸發器爲上面的mongodb觸發器
執行次數爲5次,每次間隔60秒
操作類型爲:遠程命令
類型爲:自定義腳本
命令:具體的指令。內容將貼在下面。
至此整個過程都配完了,,但是現在mongodb掛了,actions會執行啓動mongodb命令麼。? 肯定不會。
遠程命令前提條件,需要在配置文件開啓遠程命令參數,並啓動agentd。
echo 'EnableRemoteCommands=1' >> /usr/local/zabbix/zabbix_agentd.conf
/etc/init.d/zabbix_agentd restart
#注意,遠程命令不支持在zabbix agentd active模式。。切記。。
腳本內容:
cat /usr/local/mongodb/start_mongod.sh
#!/bin/bash
/usr/local/mongodb/mongod -f /usr/local/mongodb/mongod.conf >> /tmp/start.log
#注意,zabbix啓動用戶,需要能執行上述命令,也就是需要sudo賦權
那麼現在,已經全部完成,總結一下配置過程
1.在agentd配置文件中開啓EnableRemoteCommands參數
2.配置actions裏的Remote Comand
3.Commands裏的腳本製作
故障演示
幹掉mongodb
#killall mongod
過了採集時間,zabbix將會把triggers置爲problem,同時觸發actions。記錄裏顯示如下
Administration -> Audit -> Actions
如果配置正確,那麼audit一定會產生一條remote commnad記錄。
有誤1,Audit無記錄,查下配置文件、actions配置
有誤2,Audit有記錄,但mongodb卻未啓動,腳本有問題,調試一下。。
希望這篇文章能幫助大家,tks。 - -