注册企业微信
通过手机号和微信号即可免费创建一个企业微信
创建完成后大概就是这个样子,最下面的企业ID 一会是要用到的。
点击 应用管理添加一个用来发送告警的应用
创建应用后打开这个应用看到这两个位置是发送报警需要用到的
新建一个标签,将需要接收到报警的人员加入这个标签,
点击标签详情,找到标签ID, 这个也是发报警需要用到。
然后指定应用负责人,和指定该应用能接收到消息的人
zabbix 调用 shell 脚本 实现企业微信 报警
shell 脚本
默认放到/usr/lib/zabbix/alertscripts/目录下
测试如下脚本起名叫infra.sh
#!/bin/bash
###SCRIPT_NAME:weixin.sh###
###send message from weixin for zabbix monitor###
CropID='w#############f' 企业ID
Secret='*********************************Ydlq_' 应用发过来的secret ID
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() {
local int AppID=XXXXX #应用ID
local tagID=XXXXX #标签ID
local Msg=$(echo "$@" | cut -d" " -f3-)
printf '{\n'
printf '\t"touser": "'"$User"\"",\n"
printf '\t"totag": "'"$tagID"\"",\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
测试脚本
(如果成功手机会收到hello!)
# ./infra.sh hello!
zabbix 页面配置触发报警
新建报警媒介
将上面之前定义的脚本名字写入脚本名称里
脚本参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
填好后点更新就可以了,其他选项保持默认。
添加好可以点击测试,成功即可收到消息,没有收到说明上面配置有问题。
新建用户群组
(新建或者用现有的)
点击权限
将需要发送报警消息的群组加好,权限设置为读写,其他保持默认
(没有权限将导致消息发送失败)
新建用来报警的用户
创建用户信息
添加用户报警媒介
类型选择刚刚创建的报警媒介
收件人随便写,默认与报警用户保持一致(方便未来区分)
严重性:按需勾选,这里只勾选相对重要的报警通知
添加权限,这里注意主机所在群组是否有权限即可,这里在之前群组已经定义过了,默认在这里无法修改。(这里权限不对,报警会无法发出)
配置动作
新建动作
添加条件,这里按需添加
(下图为按群组警示度添加,意思是当该群组下的主机,出现大于等于一般严重的告警,将会触发该动作)
添加触发操作,需要添加操作与恢复操作内容
(具体见下图)
操作:
(仅送到选项: 选择刚刚创建的报警媒介)
主题:
告警主机:{HOSTNAME1} 故障!
告警主机:{HOSTNAME1}
告警IP:{HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}
当前状态:{TRIGGER.STATUS}
事件ID:{EVENT.ID}
恢复操作:
主题:
恢复主机:{HOSTNAME1} 恢复!
消息:
恢复主机:{HOSTNAME1}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
问题详情:{ITEM.NAME}
当前状态:{TRIGGER.STATUS}
*到此就已经配置完了,可以进行主机故障报警测试,看看手机能不能收到消息。