实现钉钉告警
之前我们配置过邮件告警,但在实际工作环境下,使用邮件告警还是有些许不方便,相对于邮件来说应该还是钉钉、微信等用的更多更方便。
创建群组、添加告警机器人
- 钉钉的聊天界面,点击
发起群聊
:
钉钉要3个人才能建群,所以需要添加两个人即可。
- 点击
群设置
→群机器人
→添加机器人
:
这里选择自定义
,点击添加
,自定义一个名字。
生成了一个 webhook ,复制
,后面会用到。
告警脚本配置
在zabbix server端,我们需要配置一个告警脚本来实现告警。
- 编写脚本:
cd /usr/lib/zabbix/alertscripts/
vim zabbix_dingding.py #写入下面内容
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
api_url = "刚刚复制的webhook" #填入刚刚复制的webhook
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
},
"at": {
"atMobiles": [
"1xxxxxxxxxxxxx" #填入号码会@相应号码的人
],
"isAtAll": False # True会@所有人
}
}
print requests.post(api_url,json.dumps(json_text),headers=headers).content
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
web界面配置
配置完脚本之后,我们还需要像配置邮件告警一样,在web界面配置报警媒介类型、动作等。
- 配置
报警媒介类型
:
- 配置
动作
:
动作:
操作:
标题:服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
内容:
{
告警主机:{HOST.NAME}
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}_{EVENT.TIME}
当前状态:故障 值={ITEM.VALUE}
故障已持续{EVENT.AGE},请尽快处理
事件ID:{EVENT.ID}
}
恢复操作:
标题:服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
内容:
{
告警信息:{TRIGGER.NAME}
告警项目:{ITEM.NAME}
告警时间:{EVENT.DATE}_{EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE}_{EVENT.RECOVERY.TIME}
当前状态:{TRIGGER.STATUS} 值={ITEM.VALUE}
故障共持续{EVENT.AGE}
事件ID:{EVENT.ID}
}
确认操作:
标题:服务器:{HOST.NAME}: 报警确认!
内容:
{
确认信息:"{ACK.MESSAGE}"
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
当前的问题是: {TRIGGER.NAME}
时间ID:{EVENT.ID}
}
- 配置
用户
的报警媒介
:
测试
配置完后,进行测试。
- 设置
监控项
:
配置一个主机链接Template Module ICMP Ping
模板。
- 宕掉ICMP:
iptables -I INPUT -p icmp -j DROP
收到钉钉告警:
- 打开ICMP:
iptables -D INPUT -p icmp -j DROP
收到钉钉恢复告警:
至此,Zabbix配置钉钉告警成功,整个配置过程十分简单。