zabbix发送告警消息到钉钉群

  1. 先在钉钉群中添加群机器人,把webhook复制备用:
    zabbix发送告警消息到钉钉群_第1张图片

  2. 找一下zabbix server上定义的告警脚本存放路径:

[root@0f3c27f24c08 ~]# grep alertscripts /etc/zabbix/zabbix_server.conf 
# AlertScriptsPath=${datadir}/zabbix/alertscripts
AlertScriptsPath=/usr/lib/zabbix/alertscripts
  1. 在/usr/lib/zabbix/alertscripts目录中创建ding.py,内容如下:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import requests
import json
import sys
import os
headers = {'Content-Type': 'application/json;charset=utf-8'}
#api_url后跟告警机器人的webhook
api_url = "https://oapi.dingtalk.com/robot/send?access_token=*********************"
def msg(text):
   json_text= {
    "msgtype": "text",
    "text": {
        "content": text
    }
   }
   print(requests.post(api_url,json.dumps(json_text),headers=headers).content)
if __name__ == '__main__':
   text = sys.argv[1]
   msg(text)
  1. 给ding.py执行权限,并测试一下:
[root@0f3c27f24c08 alertscripts]# chmod +x ding.py
[root@0f3c27f24c08 alertscripts]# ./ding.py test
{"errmsg":"ok","errcode":0}

群里面也能收到测试消息:
测试消息
注意,我这边使用的docker部署的zabbix,用的官方的zabbix-server-mysql镜像,容器中的python缺少requests模块,需要先安装一下,安装过程:

yum -y install epel-release
yum -y install python-pip
pip --no-cache-dir install requests
yum clean all
  1. 创建报警媒介类型
    管理-报警媒介类型-创建媒体类型
    zabbix发送告警消息到钉钉群_第2张图片
  2. 创建动作
    配置-动作-创建动作,事件源触发器。
    zabbix发送告警消息到钉钉群_第3张图片
    zabbix发送告警消息到钉钉群_第4张图片
    zabbix发送告警消息到钉钉群_第5张图片
    zabbix发送告警消息到钉钉群_第6张图片
    消息通知中的宏,参考官网宏使用场景
  3. 动作配置中发送给某个用户的话,该用户的报警媒介需要配置钉钉;发送给用户群组,该群组中只要有一个用户的告警媒介配置了钉钉。
    zabbix发送告警消息到钉钉群_第7张图片
  4. 测试
    将一台机器的zabbix-agent停止,告警消息发送到群里:
    zabbix发送告警消息到钉钉群_第8张图片
    问题更新:
    zabbix发送告警消息到钉钉群_第9张图片
    问题消失后:
    zabbix发送告警消息到钉钉群_第10张图片

你可能感兴趣的:(zabbix)