zabbix钉钉告警

钉钉自定义机器人接入文档

zabbix使用钉钉告警需要准备脚本:
脚本示例(注意,使用脚本要在脚本同一级目录下创建目录log来存放日志文件):

#! /usr/local/bin/python3
# -*- coding: utf-8 -*-
# @Author  : liuguixiang
# @Date    : 2022/4/11 14:53
# Software : PyCharm
# version  : Python 3.10
# @File    : dingtalk.py

import sys
import requests
import json
import datetime


def dingtalk(message_title="null", message_content="null"):
    try:
        webhook = "https://oapi.dingtalk.com/robot/send?access_token=dsafas"
        headers = {'Content-Type': 'application/json'}
        data = {
            "at": {},
            "msgtype": "text",
            "text": {
                "content": f"{message_title} \n 信息: \n {message_content}\n"
            },
        }
        re = requests.post(url=webhook, data=json.dumps(data), headers=headers)
        if re.json()["errcode"] != 0:
            with open("./log/dingtalk.log", mode="a") as f:
                f.write(
                    datetime.datetime.now().strftime(
                        "%Y-%m-%d %H:%M:%S") + " " + "ERROR: " + f"{re.json()['errmsg']} \n")
    except Exception as err:
        with open("./log/dingtalk.log", mode="a") as file:
            file.write(datetime.datetime.now().strftime("%Y-%m-%d %H:%M:%S") + " " + f"脚本错误: {err} \n")


message_title = sys.argv[2]
message_content = sys.argv[3]
dingtalk(message_title, message_content)

脚本放在/usr/lib/zabbix/alertscripts/目录下,zabbix默认查找此目录。

接下来配置zabbix,需要提前创建好监控项和触发器。

  1. 添加报警媒介类型

  2. 填写参数,脚本名称必须和在服务器上的脚本名称相同,参数分别表示发送人、标题、内容。

  3. 用户添加报警媒介

  4. 填写参数

  5. 新建动作

  6. 填写名称和条件,条件可以选择某个具体的触发器,或者报警等级

  7. 添加操作

  8. 选择发送人,发送方式、消息内容

    主题模板:

故障{TRIGGER.STATUS}, 服务器:{HOST.NAME}发生:{TRIGGER.NAME}故障

消息模板:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
告警时间:{EVENT.DATE} {EVENT.TIME}
事件ID:{EVENT.ID}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
告警信息:{TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
  1. 添加恢复操作,和上面类似。

    主题模板:
服务器:{HOST.NAME}:{TRIGGER.NAME}恢复

消息模板:

告警主机:{HOST.NAME}
告警地址:{HOST.IP}
监控项目:{ITEM.NAME}
监控取值:{ITEM.LASTVALUE}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}
告警时间:{EVENT.DATE} {EVENT.TIME}
恢复时间:{EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME}
持续时间:{EVENT.AGE}
事件ID:{EVENT.ID}
当前状态:{TRIGGER.STATUS}
  1. 添加更新操作,同上

    主题模板:
标题:服务器:{HOST.NAME}报警确认

消息模板:

确认人:{USER.FULLNAME}
时间:{ACK.DATE} {ACK.TIME}
确认信息如下:"{ACK.MESSAGE}"
问题服务器IP:{HOSTNAME1}
问题ID:{EVENT.ID}

接下来就可以触发警告来发送消息了。

posted @ 2022-04-20 09:47  忘川的彼岸  阅读(727)  评论(0编辑  收藏  举报