家里搭建了zabbix去监控主机,邮件报警什么的都太麻烦了,因此直接使用钉钉机器人来提醒,下面是个人记录python
首先钉钉机器人只有在群聊之中才能够建立,因此你就须要建立一个钉钉群,首先你建立一个三我的的群聊,建立完成以后把别人踢出去就能够了,这样就是你和钉钉机器人两我的的群聊,以后在电脑上获取钉钉机器人的webhook备用web
#!/usr/bin/python # -*- coding: utf-8 -*- # Author: bboysoul import requests import json import sys import os headers = {'Content-Type': 'application/json;charset=utf-8'} api_url = "" def msg(text): json_text= { "msgtype": "text", "at": { "atMobiles": [ "你的手机号码" ], "isAtAll": False }, "text": { "content": text } } print requests.post(api_url,json.dumps(json_text),headers=headers).content if __name__ == '__main__': text = sys.argv[1] msg(text)
上面的api_url就是你的钉钉机器人webhook地址,以后把这个脚本放到机器的alertscripts目录下面具体路径为docker
/usr/lib/zabbix/alertscripts
数据库
添加可执行权限json
chmod +x dingding.py
api
由于我是使用docker搭建的,因此上面的操做都要在容器里面操做bash
docker exec -it zabbix-server /bin/bash
服务器
接着安装python-pip和requests库app
yum install epel-release
post
yum install python-pip
pip install requests
在下面这个界面建立报警媒介
填入相关信息
点击添加添加成功
以后点击管理->用户->选择你要告警的用户,这里我是直接使用admin用户了 选择报警媒介,收件人随便写
最后咱们配置动做
点击配置-> 动做->建立动做
名称随便写
点击触发器名称选择触发器警示度,以后选择大于等于警告,接着选择添加,点击一块儿用
选择操做
默认标题填
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
消息内容填
{ 告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} }
操做细节选择发送消息,群组和用户选择你要发送消息的群组和用户点击添加
以后点击恢复操做
标题写
服务器:{HOST.NAME}: {TRIGGER.NAME}已恢复!
消息内容写
{ 告警主机:{HOST.NAME} 告警地址:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 告警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 告警信息:{TRIGGER.NAME} 告警时间:{EVENT.DATE} {EVENT.TIME} 恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} 持续时间:{EVENT.AGE} 事件ID:{EVENT.ID} }
操做也是和上面同样点击新的,添加便可
点击更新操做
标题填
服务器:{HOST.NAME}: 报警确认
消息内容写
{ 确认人:{USER.FULLNAME} 时间:{ACK.DATE} {ACK.TIME} 确认信息以下: "{ACK.MESSAGE}" 问题服务器IP:{HOSTNAME1} 问题ID:{EVENT.ID} 当前的问题是: {TRIGGER.NAME} }
最后就是测试环节,停掉监控的任何一个主机的zabbix-agent进程,以后咱们看有没有收到报警信息,若是没有,能够登陆数据库查看alerts表里面error字段的信息
欢迎关注Bboysoul的博客www.bboysoul.com Have Fun