zabbix钉钉报警推送

1、添加机器人

2、配置脚本及测试

在容器内部署,所以需要进入容器内配置zabbix-server

2.1、告警脚本地址可在zabbix_server.conf中配置

AlertScriptsPath=/usr/lib/zabbix/alertscripts

2.2、编写脚本

如需要,则执行安装python3

docker exec -it –privileged=true -u=root zabbix-server bash -c ‘ yum install -y python3’

docker exec -it –privileged=true -u=root zabbix-server bash -c ‘ pip3 install requests’

#!/usr/bin/python3
import requests,json,sys,os,datetime
webhook="填写webhook值"
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)+"    "+"send suc"+"\n"+str(text))
    f.close()
else:
    f.write("\n"+str(datetime.datetime.now()) + "    " + str(user) + "    " + "send fail" + "\n" + str(text))
    f.close()

isAtALL改为True参数可通知所有人

2.3、给脚本配置权限

chmod +x dingding.py

2.4、创建日志文件

touch /var/log/zabbix/dingding.log
chown zabbix.zabbix /var/log/zabbix/dingding.log

2.5、测试脚本

./dingding.py 钉钉号或手机号码 test "这是条告警测试信息,请忽略"

test:这里因脚本中没有设置接收参数,所以无实际意义,仅仅起到变量占位的作用。

“这是条告警测试信息,请忽略”:这是具体的告警信息,告警信息必须包含“安全设置”中自己设置的“自定义关键词”,否则无法发送告警信息,我这里设置的告警关键字是”告警”。

2.6、查看日志

 cat /var/log/zabbix/dingding.log

3、配置

3.1、配置报警媒介

脚本参数:
{ALERT.SENDTO} 对应脚本中的,user=sys.argv1
{ALERT.SUBJECT} 代表发送的信息的标题,在”报表”的”动作日志”中可以看到。
{ALERT.MESSAGE} 对应脚本中的,text=sys.argv3
直接点添加选择模板即可,这步不是必选项

3.2、配置报警动作

“主题”对应”钉钉告警”媒介中的:{ALERT.SUBJECT}

“消息”对应”钉钉告警”媒介中的:{ALERT.MESSAGE}

故障问题:{EVENT.NAME}

告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}

故障恢复:{EVENT.NAME}

告警恢复
恢复主机:{HOST.NAME}
恢复时间:{EVENT.DATE} {EVENT.TIME}
主机IP:{HOST.IP}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}

告警更新

告警更新
默认信息:
{
服务器:{HOST.NAME}发生: {TRIGGER.NAME}故障!
确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:
“{ACK.MESSAGE}”
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}
当前的问题是: {TRIGGER.NAME}
}

3.3、给用户添加报警媒介