全部参考的那篇转载文档做的
1.在钉钉中添加机器人,点击头像,机器人管理
添加自定义机器人,选择群组,这里我用的IP地址,填上zabbix监控的主机IP,只能这台机器连接该机器人。
得到webhook复制等下填入ding.py脚本
2.在/usr/lib/zabbix/alertscripts/下创建发送脚本(yum源安装zabbix存放脚本的默认路径,有更改的话在配置文件里查一下,grep alertscripts /etc/zabbix/zabbix_server.conf )
vim /usr/lib/zabbix/alertscripts/ding.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
api_url = "https://oapi.dingtalk.com/robot/send?access_token=dd53f2b4476062921174157a545e8efxxxxxxa8c95c5eedcf5e3e6e35d7e1"
def msg(text):
json_text= {
"msgtype": "text",
"text": {
"content": text
}
}
print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
text = sys.argv[1]
msg(text)
3.给ding.py执行权限,并测试一下:
chmod +x ding.py
./ding.py test
出现{"errmsg":"ok","errcode":0}则发送成功,可以去钉钉上查看消息
4.创建报警媒介
管理-->报警媒介类型-->创建媒体类型
这里注意只需要{ALERT.MESSAGE}这个参数,代表详细内容,这个钉钉脚本只有一个位置变量,一次只发送一个消息,和邮件报警还需要收件人地址和标题的三个参数不一样。
5.配置动作
配置-->动作-->创建动作
动作里选触发器,然后选择对应的被监控主机的触发器,可以如图添加多个
动作里的操作部分
告警通知: {EVENT.NAME}
告警时间:{EVENT.TIME}
告警项目:{TRIGGER.KEY1}
告警主机: {HOST.NAME}
告警级别: {EVENT.SEVERITY}
事件原始ID: {EVENT.ID}
{TRIGGER.URL}
注意添加操作细节,必须选一个用户或者组来操作,执行dingding报警媒介
恢复操作
问题已解决: {EVENT.NAME}
解决时间:{EVENT.RECOVERY.TIME}
主机: {HOST.NAME}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}
事件原始ID: {EVENT.ID}
{TRIGGER.URL}
同样别忘了操作细节,更新操作我就没加了
6.用户添加报警媒介
管理-->用户-->我是直接用admin
7.最后测试一下,我现在加的触发器动作全是ICMP的报警,在创建报警之前就以前挂掉的机器不会触发动作,所以我又重新加了台测试机,加进去后直接关机测试