首页 > 其他分享 >Zabbix配置钉钉告警

Zabbix配置钉钉告警

时间:2023-10-07 15:56:24浏览次数:32  
标签:报警 text 配置 Zabbix json zabbix str 告警

一、创建群聊机器人

1.添加群聊机器人

image

2.设置机器人信息

image

3.记录webhook地址

image

机器人文档
https://open.dingtalk.com/document/org/application-types

用户可以向这个webhook地址发起post请求,提交数据,也就是等于给钉钉发消息了,注意字符集编码

4.测试webhook地址

# 提交json类的数据,发给钉钉的API
[root@m-61 /tmp]#curl 'https://oapi.dingtalk.com/robot/send?access_token=4763e2451402cce519d7599369cd545e28288b80eb6c4b58bed03a548a03d857' \
-H 'Content-Type: application/json' \
-d '{"msgtype": "text","text": {"content": "zabbix 报警测试"}}'

# 拿到了结果
{"errcode":0,"errmsg":"ok"}

钉钉群聊也会收到机器人告警消息

4.1 支持更多功能参数,如圈某人看消息

# 参考钉钉机器人API的文档,支持哪些参数,参考用法如下
https://open.dingtalk.com/document/robots/custom-robot-access

image

# shell发请求 ,注意json数据格式,以及zabbix触发关键字

# 圈人语法,基于手机号
curl 'https://oapi.dingtalk.com/robot/send?access_token=4763e2451402cce519d7599369cd545e28288b80eb6c4b58bed03a548a03d857' \
-H 'Content-Type: application/json' \
-d  '{"at":{"atMobiles":["15210858004"],"isAtAll":false},"text":{"content":"正在测试zabbix钉钉报警机器人!!"},"msgtype":"text"}'

5.钉钉发消息脚本

5.1 python版(需要使用python3)

#!/usr/bin/python3
# coding: utf-8
# about zabbix python script
# Author: www.yuchaoit.cn

import requests,json,sys,os,datetime
# 钉钉机器人API,需要修改为自己的机器人API
webhook_url="https://oapi.dingtalk.com/robot/send?access_token=4763e2451402cce519d7599369cd545e28288b80eb6c4b58bed03a548a03d857"

# 给脚本参数手机号参数1
user_phone=sys.argv[1]

# 参数2,消息正文
text=sys.argv[2] + "\n\n" + sys.argv[3]

# 构造json数据体
data={
    "msgtype":"text",
    "text":{
        "content":text
    },
    "at":{
        "atMobiles":[user_phone],
        "isAtAll":False
    }
}

# 请求头,表明请求类型是json
headers={"Content-Type":"application/json"}

# 发HTTP请求,POST方式,传入数据与请求头
response=requests.post(url=webhook_url,data=json.dumps(data),headers=headers)
print(response.content)

# 日志目录生成
if os.path.exists("/tmp/dingding.log"):
    with open("/tmp/dingding.log","a+") as f:
        print("该文件以存在,追加写入中")
        if response.json().get("errcode")==0:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送成功" + "\n" + str(text) )
        else:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送失败" + "\n" + str(text) )
else:
    with open("/tmp/dingding.log","w+") as f:
        print("该日志文件不存在,创建且写入中")
        if response.json().get("errcode")==0:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送成功" + "\n" + str(text) )
        else:
            f.write("\n" + str(datetime.datetime.now()) + "    " + str(user_phone) + "    " + "发送失败" + "\n" + str(text) )
执行结果
[root@m-61 /tmp]#python3 ding.py 15210858004 "python测试钉钉机器人" "zabbix故障了!!抓紧起来修复啊超哥!!火星撞地球了!!"
b'{"errcode":0,"errmsg":"ok"}'
该文件以存在,追加写入中

5.2 bash版

#!/bin/bash
# about zabbix bash script

#webhook 地址 webhook=''
#接受者的手机号,由 zabbix 传入 
user=$1
#报警邮件标题,由 zabbix 传入 
title=$2
#报警邮件内容,由 zabbix 传入
message=$3

# 构造语句执行发送动作
# bash就是用curl 构造json数据发出去而已,注意引号的细节就好
# 通过API返回的数据,来确认是否发送正确

curl -s -H "Content-Type: application/json" -X POST "https://oapi.dingtalk.com/robot/send?access_token=4763e2451402cce519d7599369cd545e28288b80eb6c4b58bed03a548a03d857" -d '{"msgtype":"text","text":{"content":"'"${title}\n\n${message}\n\nzabbix报警啦"'"},"at":{"atMobiles":["'"${user}"'"],"isAtAll":false}}' 

#将报警信息写入日志文件
echo -e "\n 报警时间:$(date +%F-%H:%M)\n 报警标题:${title}\n 报警内容:${message}" >> /tmp/ding_bash.log
运行结果
[root@m-61 /tmp]#bash b.sh 15210858004 zabbix报警啦 "zabbix报警啦,火星撞地球啦 bash脚本也可以啦"
{"errcode":0,"errmsg":"ok"}

避坑

脚本放入zabbix目录,采用python脚本
2.脚本权限
[root@m-61 /usr/lib/zabbix/alertscripts]#chmod +x dingding.py 
[root@m-61 /usr/lib/zabbix/alertscripts]#chown zabbix:zabbix  dingding.py
[root@m-61 /usr/lib/zabbix/alertscripts]#ll
total 4
-rwxr-xr-x 1 zabbix zabbix 1737 Oct  7 10:32 dingding.py

6.zabbix-UI页面配置钉钉报警

脚本调通后,就可以去zabbix的UI页面配置参数,提供报警
思路依然是
创建报警媒介类型
↓
创建媒体类型
↓
钉钉报警创建
↓
用户选择报警媒介方式

6.1 创建媒体类型

image

image

image

脚本参数对应脚本中传入的三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

6.2 用户选择报警媒介(钉钉)

image

6.3 实测zabbix钉钉报警结果

在61机器测试登录用户数超过3个告警,61主机触发器配置完成

image

image

告警如下

image

恢复告警

image

踩坑记录,最后一步zabbix调用python发报警,别忘记关键字zabbix,且需要发送到所有,如果仅发送到email,则钉钉不会告警

给zabbix中的动作,添加关键字即可,否则无法触发钉钉机器人

----------------------------------------
keyword: zabbix
告警主机:{HOSTNAME1} {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}  
----------------------------------------

----------------------------------------
keyword: zabbix
告警主机:{HOSTNAME1} {HOST.IP}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}
告警项目:{TRIGGER.KEY1}
问题详情:{ITEM.NAME}:{ITEM.VALUE}
当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}
事件ID:{EVENT.ID}
----------------------------------------

image

标签:报警,text,配置,Zabbix,json,zabbix,str,告警
From: https://www.cnblogs.com/chunjeh/p/17746509.html

相关文章

  • Spring Boot中配置文件介绍及其使用教程
    一、配置文件介绍SpringBoot项目中,大部分配置都有默认值,但如果想替换默认配置的话,就可以使用application.properties或者application.yml或者application.yaml进行配置。SpringBoot默认会从resources目录下加载application.properties或application.yml文件。其中,application.prop......
  • 配置samba共享,实现/www目录共享
    #服务器端配置:[root@samba~]#yuminstall-ysamba[root@samba~]#groupadd-rwww[root@samba~]#useradd-s/sbin/nologin-Gwwwtest1[root@samba~]#smbpasswd-atest1NewSMBpassword:RetypenewSMBpassword:Addedusertest1.[r......
  • Zabbix 监控
    目录1.zabbix是什么?2.zabbix监控原理:3.部署zabbix服务端3.1关闭selinux与防火墙3.2部署Nginx+PHP环境并测试3.3修改nginx配置3.4修改php配置3.5创建目录和测试文件3.6启动服务3.7测试访问(hosts解析)4.部署数据库4.1配置Mariadbyum源4.2初始化数据库4.......
  • redis配置类
     EncodeImgUtil类:packagecom.dtinone.springbootredis.utils;importsun.misc.BASE64Decoder;importsun.misc.BASE64Encoder;importjava.io.*;/***图片编码工具类**@authorbinge*/publicclassEncodeImgUtil{/***读取文件返回字节数组......
  • 【大数据】MapReduce与YARN 介绍与配置
    MapReduce架构MapReduce是一种分布式计算模型,用于处理大规模数据集。它将数据分成小块,分配给集群中的节点进行处理。Map阶段处理数据并生成键值对,Shuffle阶段将相同键的值对传输到同一节点进行排序和分组,Reduce阶段对每组键值对执行操作并生成结果。整个过程由Master节点协......
  • 【大数据】Hadoop配置(文档版本)
    主机配置:192.168.88.101test1192.168.88.102test2192.168.88.103test3Hadoop上传压缩包并且解压hadoop百度云:链接:https://pan.baidu.com/s/1DRV_x7Q_ZTUO4KMkr2-6Qg?pwd=not3#先配置NameNode主机:#上传hadoop文件压缩包到NameNode主机,并且解压到/exp......
  • Git .gitattributes 配置
    .gitattributes文件是一个用来配置Git版本控制系统的文件,它的作用主要包括以下几个方面:定义文件属性:.gitattributes文件可以用来指定特定文件或文件类型的属性,例如文本文件、二进制文件、合并策略等。这可以帮助Git更好地处理不同类型的文件。控制行尾格式:你可以使用......
  • 视频监控/安防视频监控平台EasyCVR配置集群后有一台显示离线是什么原因?
    开源EasyDarwin视频监控TSINGSEE青犀视频平台EasyCVR能在复杂的网络环境中,将分散的各类视频资源进行统一汇聚、整合、集中管理,在视频监控播放上,TSINGSEE青犀视频安防监控汇聚平台可支持1、4、9、16个画面窗口播放,可同时播放多路视频流,也能支持视频定时轮播。视频监控汇聚平台EasyCV......
  • 简单配置,快速集成!钡铼BL124助您实现Modbus转Ethernet/IP!
    钡铼技术BL124Modbus转Ethernet/IP协议网关是一款专为工业自动化领域而设计的先进设备。它提供了可靠的通信解决方案,能够将Modbus通信协议与Ethernet/IP通信协议进行高效转换,实现不同类型设备之间的无缝集成和通信。  添加图片注释,不超过140字(可选)钡铼......
  • Spring+MyBatis配置文件
    spring-config.xml<?xmlversion="1.0"encoding="UTF-8"?><beansxmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xmlns:context="h......