Nagios是一款開源的免費網路監視工具,可有效監控Windows、Linux和Unix的主機狀態,交換器路由器等網路設置,印表機等。在系統或服務狀態異常時發出郵件或簡訊警報第一時間通知網站維運人員,在狀態恢復後發出正常的郵件或簡訊通知。
Nagios是呼叫微信公共平台的api介面發送警報郵件。在正式操作之前,有幾個準備工作要做。先安裝nagios,可以使用我提供的nagios一鍵安裝腳本。然後是去微信公共平台申請一個企業號,我申請時填的是組織,沒有認證也可以使用。最後登入公共平台新增通訊錄,和新建應用程式(例如nagios),記錄應用程式的id後面要用。使用者權限什麼自己設定。
微信腳本
nagios和微信平台都準備好之後,接下來下載微信指令腳本。右鍵點選 下載 ,儲存。然後上傳到nagios伺服器,例如/usr/local/nagios/python/weixin目錄,設定檔案權限為可執行。在/usr/local/nagios/python/weixin目錄新建config.py文件,新增如下配置。
#coding:utf-8 CorpID='xxxxx' Secret='xxxxxxxxxxxxxxxxx' DEBUG=0 ToUser='sijitao.net' AgentId=1
其中CorpID和Secret這兩個可以透過登入微信公共平台,開啟新增的應用(例如nagios)取得。
微信腳本指令傳遞的參數透過「-@@-」符號來分割,詳細說明可以參考我的github位址:https://github.com/zhangnq/nagios/tree/master/weixin
Nagios配置
下面就是nagios上的常規配置。
commands.cfg指令檔案中新增weixin指令:
define command{ command_name notify-host-by-weixin command_line /usr/local/nagios/python/weixin/NotifyByWeixin.py "host-@@-$NOTIFICATIONTYPE$-@@-$HOSTNAME$-@@-$HOSTSTATE$-@@-$HOSTADDRESS$-@@-$HOSTOUTPUT$-@@-$CONTACTALIAS$" } define command{ command_name notify-service-by-weixin command_line /usr/local/nagios/python/weixin/NotifyByWeixin.py "service-@@-$NOTIFICATIONTYPE$-@@-$SERVICEDESC$-@@-$HOSTALIAS$-@@-$HOSTADDRESS$-@@-$SERVICESTATE$-@@-$SERVICEOUTPUT$-@@-$CONTACTALIAS$" }
templates.cfg範本檔案中新增聯絡人範本:
define contact{ name weixin-contact service_notification_period 24x7 host_notification_period 24x7 service_notification_options w,u,c,r,f,s host_notification_options d,u,r,f,s service_notification_commands notify-service-by-weixin host_notification_commands notify-host-by-weixin register 0 }
define contact{ contact_name zhangnq-weixin use weixin-contact alias zhangnq email admin@sijitao.net }