首页 > 其他分享 >zabbix钉钉报警

zabbix钉钉报警

时间:2024-06-06 23:11:15浏览次数:14  
标签:text 报警 json datetime zabbix str

1.钉钉报警原理流程

和微信报警类似,发送指定的数据到钉钉官方提供的API接口,钉钉会将报警信息,发送到指定的钉钉群聊,提醒所有的群成员查看,实现告警通知。

具体操作流程
创建钉钉群聊
创建自定义机器人
创建报警关键词
生成webhook认证信息
开发报警脚本
填写zabbix-UI界面的配置
测试钉钉报警通知

2.创建群聊机器人

1.创建群聊自定义机器人

2.设置机器人信息

3.记录webhook地址

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 报警测试,来自于www.yuchaoit.cn"}}'

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


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

# 参考钉钉机器人API的文档,支持哪些参数,参考用法如下
https://open.dingtalk.com/document/robots/custom-robot-access
# 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"}'


# 圈人语法2,基于UserIds,员工ID,但是需要管理员查看,用户自己不好尝试了

钉钉脚本,python版

该脚本是python3,你的目标机器,是否支持python3

yum install python3 python3-devel  python3-pip -y

pip3 install requests
python语法比较优雅,你拿到代码,只需要修改什么就行?修改你的webhook,web钩子,钉钉机器人的API地址,该成你自己的即可


#!/usr/bin/python3
# coding: utf-8
# about zabbix python script

import requests,json,sys,os,datetime

# 钉钉机器人API
webhook_url='https://oapi.dingtalk.com/robot/send?access_token=d747bcf366308f7148ef714fa7e2673a5063607dd661d5706671833ac4283c72' 

# 给脚本参数手机号参数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) )

测脚本,需要给脚本传入几个参数

python3 dingding.py 15210858004 "来自于linux0224的钉钉消息" "keyword:zabbix 老六门,看懂了吗"

钉钉脚本 bash版本

#!/bin/bash
# about zabbix bash script
# Author: www.yuchaoit.cn


#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=d747bcf366308f7148ef714fa7e2673a5063607dd661d5706671833ac4283c72" -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

注意脚本存放的目录(服务端)以及权限问题

/usr/lib/zabbix/alertscripts
chown -R zabbix.zabbix ./* chmod +x ./执行的文件名

zabbix-UI页面配置钉钉报警

脚本调通后,就可以去zabbix的UI页面配置参数,提供报警

思路依然是
创建报警媒介类型
↓
创建媒体类型
↓
钉钉报警创建
↓
用户选择报警媒介方式

1创建媒体类型

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

坑记录,最后一步zabbix调用python发报警,别忘记关键字

Author: www.yuchaoit.cn
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}  


-------
Author: www.yuchaoit.cn
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}




标签:text,报警,json,datetime,zabbix,str
From: https://www.cnblogs.com/btcm409181423/p/18236263

相关文章

  • zabbix邮箱报警配置
    1.1配置监控的自定义key判断当前机器登录的用户数量,超过3个1.想好,你这个需求,如何用命令采集,构造出结果who|wc-l2.写zabbix-agent的配置文件[root@zabbix-server-71/etc/zabbix/zabbix_agentd.d]#catuserparameter_login_user.confUserParameter=login.user,who|wc-......
  • 单片机火灾报警器(防火系统)设计
    火灾作为一种在时空上失去控制的燃烧所引发的灾害,对人类生命财产和社会安全构成了极大的威胁。由此引发的重大安全事故比皆是,所以人类一直也未停止过对它的研究。火灾早已成为我国常发性和破坏性以及影响力最强的灾害之一。随着经济和城市建设的快速发展,城市高层、地下建筑以......
  • 402、基于51单片机的火灾报警(3房间,温度,数码管)(程序+Proteus仿真+原理图+流程图+元器件
    毕设帮助、开题指导、技术解答(有偿)见文未目录方案选择单片机的选择一、设计功能二、Proteus仿真图单片机模块设计三、原理图四、程序源码资料包括:需要完整的资料可以点击下面的名片加下我,找我要资源压缩包的百度网盘下载地址及提取码。方案选择单片机的选择方......
  • 286、基于51单片机的温度报警(8路,DS18B20,热电偶,LCD1602)
    完整资料或定制滴滴我(有偿)见文末。目录一、设计功能二、Proteus仿真三、原理图四、程序源码五、资料包括一、设计功能多路温度采集系统1、刺激4路DS18B20温度和4路热电偶温度2、自动循环显示每路温度值3、设置温度上下限,温度过限报警二、Proteus仿真......
  • zabbix监控域名到期时间
    #获取证书过期时间脚本cat/etc/zabbix/scripts/base/check-http-expire.sh#!/bin/bashhost=$1#end_date=`whois-H $host|grep"RegistryExpiryDate"|awk'{print$NF}'`end_date=`whois-H $host|egrep"RegistryExpiryDate|ExpirationTime&qu......
  • Zabbix server 6: systemctl stop zabbix-server 卡住不动
    1、Zabbixserver6:systemctlstopzabbix-server卡住不动[root@CNT-ZBX6-PB01~]#systemctlrestartzabbix-server.service^C[root@CNT-ZBX6-PB01~]#killall-9zabbix_server[root@CNT-ZBX6-PB01~]#systemctlrestartzabbix-server.service———————————......
  • 基于单片机大气压监测报警系统电路方案设计
    **单片机设计介绍,基于单片机大气压监测报警系统电路方案设计文章目录一概要二、功能设计设计思路三、软件设计原理图五、程序六、文章目录一概要  基于单片机大气压监测报警系统电路方案设计概要如下:一、系统概述本设计旨在通过单片机技术实现对大气压......
  • python对接zabbix API
    frompyzabbix.apiimportZabbixAPIwithZabbixAPI(url='http://192.168.1.10:8080',user='admin',password='admin')aszapi:hosts=zapi.host.get(#获取所有字段output=["hostid","host"],......
  • zabbix监控主机
    zabbix如何监控服务器zabbix架构图zabbix架构理念Server服务端ZabbixServer是Zabbix的核心组件,其功能为将Agent采集到的数据持久化存储到数据库里。数据库存储存储所有由Agent采集到的数据,Zabbix支持多种数据存储,例如:Mysql,Oracle,PostgreSQL,Elasticsearch......
  • C#WPF数字大屏项目实战06--报警信息
    1、ItemsControl简介 ItemsControl是用来表示一些条目集合的控件,所以它叫条目控件,它的成员是一些其它控件的集合,其继承关系如下:     其常用的派生控件为:ListBox、ListView、ComboBox,为ItemsControl的具体实现。   ItemsControl的成员条目可以为不同的类型,如自......