Zabbix预警信息发送:Email和钉钉。
Email告警
媒介配置Email
管理 > 报警媒介类型,选择Email
填写邮箱相关信息(我用的是126的邮箱,请根据自己邮箱设置来填写)
编辑消息模板,告警时会调用这里的模板信息
配置好相关邮箱信息后,可进行邮箱发送测试(我的邮箱成功收到邮件)
创建用户
即用户和报警媒介关联,注意创建用户要对服务器群组有读取权限才可以发送邮件
管理–>用户群组–>创建用户群组 ,添加对服务器群组读取权限
管理 > 用户,创建新的用户,并添加到对应用户组,添加/编辑[报警媒介]
编辑报警媒介,填写收件人(出现问题会给指定邮箱发送告警邮件)
权限无法修改,由用户组统一分配。
警报动作
配置 > 动作 > 创建动作
动作:输入告警名称,触发器触发的条件(测试使用,可以不选)
操作:
默认操作步骤持续时间改为60s,操作/回复操作 点击添加按钮 (可提前创建用户组/用户,创建用户时 要勾选报警媒介,填写接收邮件地址)
发送消息可以按照个人,也可以按照组来发送,消息内容自定义。
故障操作:
自定义消息内容 或者使用报警媒介那边的消息模板
1 2 3 4 5 6 7 8 9 10 11 12 13
| 主题:Host:{HOST.NAME}: {TRIGGER.NAME}故障 消息: {Zabbix告警: Warning 主机:{HOST.NAME} Host:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 报警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 报警信息:{TRIGGER.NAME} 报警data:{EVENT.DATE} {EVENT.TIME} 事件ID:{EVENT.ID} }
|
恢复操作:
自定义消息内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| 主题:Host:{HOST.NAME}: {TRIGGER.NAME}已恢复! 消息: {Zabbix恢复: Warning 主机:{HOST.NAME} Host:{HOST.IP} 监控项目:{ITEM.NAME} 监控取值:{ITEM.LASTVALUE} 报警等级:{TRIGGER.SEVERITY} 当前状态:{TRIGGER.STATUS} 报警信息:{TRIGGER.NAME} 报警data:{EVENT.DATE} {EVENT.TIME} 恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} 持续时间:{EVENT.AGE} 事件ID:{EVENT.ID} }
|
验证报警
将被监控虚机关机,再开机,就会收到邮件提醒。
(大部分出问题再用户组权限出,要有对某个组的读写的权限)
报表 => 触发器 TOP100 可查看出现哪些问题
报表 => 动作日志 可查看是否发送邮件
钉钉报警
创建钉钉机器人
自行百度创建,拿到Webhook地址
升级服务器Python版本
升级Python3 升级参考,安装必要的组件
1 2 3 4
| [root@zabbix-server alertscripts] [root@zabbix-server alertscripts] [root@zabbix-server alertscripts]
|
创建钉钉报警脚本
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| [root@zabbix-server zabbix] AlertScriptsPath=/usr/lib/zabbix/alertscripts [root@zabbix-server zabbix] [root@zabbix-server zabbix]
import requests,json,sys,os,datetime webhook="https://oapi.dingtalk.com/robot/send?access_token=************************" user=sys.argv[1] text=sys.argv[3] data={ "msgtype": "text", "text": { "content": text }, "at": { "atMobiles": [ user ], "isAtAll": False } } headers = {'Content-Type': 'application/json'} x=requests.post(url=webhook,data=json.dumps(data),headers=headers) if os.path.exists("/var/log/zabbix/dingding.log"): f=open("/var/log/zabbix/dingding.log","a+") else: f=open("/var/log/zabbix/dingding.log","w+") f.write("\n"+"--"*30) if x.json()["errcode"] == 0: f.write("\n"+str(datetime.datetime.now())+" "+str(user)+" "+"发送成功"+"\n"+str(text)) f.close() else: f.write("\n"+str(datetime.datetime.now()) + " " + str(user) + " " + "发送失败" + "\n" + str(text)) print(x.json()) f.close() [root@zabbix-server alertscripts]
|
创建日志文件夹/文件:/var/log/zabbix/dingding.log
1 2
| [root@zabbix-server zabbix] [root@zabbix-server zabbix]
|
测试报警信息 (钉钉群中有这个手机号或者钉钉号)
1 2
| ./dingding.py 185xxxxxxxx test "这个条测试信息,忽略" ./dingding.py 钉钉号 test "这个条测试信息,忽略 ID"
|