作者信息
郵箱:sijiayong000@163.com
Q Q:601566386
Zabbix 微信告警
摘要:Zabbix可以通過多種方式把告警信息發送到指定人,常用的有郵件,短信報警方式,但是越來越多的企業開始使用zabbix結合微信作為主要的告警方式,這樣可以及時有效的把告警信息推送到接收人,方便告警的及時處理。
使用微信發送告警,需要先注冊一個微信企業號
此處忽略具體步驟,請訪問百度
設置預警
注冊完成微信企業號后,點擊我的企業
在這里記錄下來CorpID的值
在之后發送微信告警的腳本中會用到
緊接着需要創建組和用戶
創建用戶
創建應用
獲取AgentID 和 Secret
這兩個信息,同樣需要記錄下來
在之后的發送微信告警時需要
准備事項#
微信企業號
企業號已經被部門成員關注
企業號有一個可以發送消息的應用,一個授權管理員,可以使用應用給成員發送消息
需要得到的信息#
- CorpID
- AgentID
- Secret
- 用戶的賬號 或 組ID
配置zabbix server端
需要修改zabbix.conf
grep alertscripts /etc/zabbix/zabbix_server.confAlertScriptsPath=/usr/lib/zabbix/alertscripts
我們設置zabbix默認腳本路徑,這樣在web端就可以獲取到腳本
Shell 腳本
進入到/usr/lib/zabbix/alertscripts/
目錄下,創建一個wechat.sh
腳本文件
給腳本文件授權用戶和組
以及增加執行權限
chown zabbix.zabbix wechat.sh
chmod +x wechat.sh
#!/bin/bash
###SCRIPT_NAME:wechat.sh###
###send message from weixin for zabbix monitor###
CropID='此處填寫上面獲取到的CorpID'
Secret='此處填寫應用的Secret'
GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret"
Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $10}')
PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
#企業號中的應用id
local int AppID=這里填寫AgentID
#部門成員id,zabbix中定義的微信接收者
local UserID=$1
#部門id,定義了范圍,組內成員都可接收到消息
local PartyID=2
#過濾出zabbix傳遞的第三個參數
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$UserID"\"",\n"
printf '\t"toparty": "'"$PartyID"\"",\n"
printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'" $AppID "\"",\n"
printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n"
printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL##
腳本測試
/bin/sh /usr/lib/zabbix/alertscripts/wechat.sh sijiayong test test
定義Zabbix動作發送告警
創建告警媒介
按照圖片中的定義創建新告警媒介
此處貼出告警參數
{ALERT.SENDTO}
{ALTER.SUBJECT}
{ALERT.MESSAGE}
最后點擊添加即可
添加告警用戶和動作
配置告警用戶
配置用戶告警媒介
最后點擊更新,用戶就完成
添加動作
故障配置
故障{TRIGGER.STATUS},服務器:{HOSTNAME1}發生: {TRIGGER.NAME}故障!
告警主機:{HOSTNAME1}
告警主機IP地址:{HOST.CONN}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
發生: {TRIGGER.NAME}故障!
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
恢復配置
恢復{TRIGGER.STATUS}, 服務器:{HOSTNAME1}: {TRIGGER.NAME}已恢復!
告警主機:{HOSTNAME1}
告警主機IP地址:{HOST.CONN}
告警時間:{EVENT.DATE} {EVENT.TIME}
告警等級:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警項目:{TRIGGER.KEY1}
問題詳情:{ITEM.NAME}:{ITEM.VALUE}
{TRIGGER.NAME}已恢復!
當前狀態:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件 ID:{EVENT.ID}
動作添加
測試
手動出發一次故障