zabbix 接入钉钉告警

[TOC]

1.创建消息群并添加机器人

  • 第1步,创建一个钉钉消息群,点击右上角的“群设置”

  • 第2步,点击“添加机器人”,然后选择“自定义”

  • 第3步,填写机器人名字,增加自定义关键词,然后选择“完成”

  • 第4步,生成webhook,点击“复制”并保存好,后面需要用到

示例:https://oapi.dingtalk.com/robot/send?access_token=d196252885f017e12e21c372e733789ce24cc546df1c15709f3479d3cd7a91e3

2.创建告警脚本

  • 第5步,创建告警日志文件,示例 /etc/zabbix/logs/dingding.log
mkdir -p /etc/zabbix/{logs,alertscripts}
touch /etc/zabbix/logs/dingding.log
chown zabbix.zabbix -R /etc/zabbix/
  • 第6步,调整 zabbix_server.conf 中告警脚本的路径,并重启 zabbix_server 服务
#.修改告警脚本的路径
new="/etc/zabbix/alertscripts"
sed -i "s|^AlertScriptsPath.*|AlertScriptsPath=${new}|" /usr/local/zabbix/etc/zabbix_server.conf
cat /usr/local/zabbix/etc/zabbix_server.conf | grep Scripts

#.重启zabbix服务
service zabbix_server restart
  • 第7步,创建告警脚本,注意修改 webhook值 及 告警日志文件
[root@zabbix-server ~]# cat /etc/zabbix/alertscripts/dingding.py
#!/usr/bin/env python
# -*- coding: utf-8 -*- 
import requests
import json
import sys
import os
import datetime
webhook = "https://oapi.dingtalk.com/robot/send?access_token=d196252885f017e12e21c372e733789ce24cc546df1c15709f3479d3cd7a91e3"
user=sys.argv[1]
subject=sys.argv[2]
text=sys.argv[3]
data={
        "msgtype": "text",
        "text": {
                "content": "%s%s"%(subject,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("/etc/zabbix/logs/dingding.log"):
        f=open("/etc/zabbix/logs/dingding.log","a+")
else:
        f=open("/etc/zabbix/logs/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))
        f.close()
  • 第8步,配置告警脚本权限
chmod +x /etc/zabbix/alertscripts/dingding.py
chown zabbix.zabbix /etc/zabbix/alertscripts/dingding.py
  • 第9步,安装python模块,测试 dingding.py 脚本
#.安装pip
curl -sL 'http://iso.sqlfans.cn/python/install_pip_1931.sh' | bash
pip --version

#.安装requests模块
pip install requests

#.格式:dingding.py 手机号 关键词 告警信息
/etc/zabbix/alertscripts/dingding.py 18001833558 告警 test
  • 第10步,确认消息群已收到如下告警消息:

3.创建zabbix报警媒介

  • 第11步,登录zabbix控制台,创建报警媒介,依次点击“管理 -> 报警媒介类型 -> 创建媒介类型”

  • 第12步,填写报警媒介的相关信息,包含3个脚本参数 {ALERT.SUBJECT}、{ALERT.MESSAGE}、{ALERT.SENDTO},然后点击“添加”

  • 第13步,配置动作,依次点击“配置 -> 动作 -> 触发器动作 -> 创建动作”

  • 第14步,在[动作]标签页,填写名称,示例 dingding_alert

  • 第15步,在[操作]标签页,依次配置“操作、恢复操作”,然后点击“添加”

#告警操作内容:
##主题:
服务器:{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}
  • 第16步,为指定用户添加报警媒介,依次点击“用户设置 -> 配置 -> 添加”,报警媒介类型 选择 dingding

4.告警测试

  • 第17步,执行 service zabbix_agentd stop 停掉 zabbix 服务器的 agent 服务,等待2-3分钟,可以看到主页发现问题,同时消息群收到预警信息

  • 第18步,执行 service zabbix_agentd start 启动 agent 服务,等待2-3分钟,可以看到主页的问题已恢复,同时消息群收到恢复信息

至此,zabbix自动发送预警及恢复信息到钉钉群,已经全部配置完成。

Copyright © www.sqlfans.cn 2021 - 2026 All Right Reserved更新时间: 2025-11-06 08:52:13

results matching ""

    No results matching ""