python3实现zabbix告警推送钉钉的示例


Posted in Python onFebruary 20, 2019

自己写了一个简单的python脚本,用来推送zabbix告警到钉钉机器人,推送格式为markdown,有需要的可以自己修改markdown的格式及推送的值(zabbix宏)

python3实现zabbix告警推送钉钉的示例

环境如下,理论上zabbix版本不影响,可以看看官方宏定义是否有区别

python 3

zabbix 3.4.2

zabbix宏官方文档:https://www.zabbix.com/documentation/3.4/manual/appendix/macros/supported_by_location

配置

配置钉钉自定义机器人

官方文档:https://open-doc.dingtalk.com/docs/doc.htm?treeId=257&articleId=105735&docType=1

编写zabbix告警脚本并置于alertscripts路径下

[itservice@zabbix alertscripts]$ cat /usr/lib/zabbix/alertscripts/alert_for_zabbix_by_dingding.py 
#!/usr/bin/env python3
# encoding: utf-8
# author: huangwj
# mail: huangwjwork@gmail.com
# bolg: huangwj.app
# csdn: http://blog.csdn.net/u010871982
# github: https://github.com/huangwjwork
# file: alert_for_zabbix_by_dingding.py
# time: 2018/5/11 14:31
'''
本程序由huangwjwork开发,一切最终解释权归于huangwjwork.
本程序为开源,只用于技术交流,只供开发者参考与学习.
不得用于违反法律以及未经许可不得用于商业.保留其追责权利.
本程序不涉及任何违法敏感因素,如有人拿程序改造成违法工具,将与本程序开发者无关.
勇于开源,请勿滥用.内部学习交流,请勿传播.违反者造成相关法律事故,自行承担刑事责任.
'''
import sys
import getopt
import requests
import json
import traceback
try:
 opts,args = getopt.getopt(sys.argv[1:],shortopts='',longopts=['webhook_url=','webhook_title=','alert_message='])
 for opt,value in opts:
  if opt == '--webhook_url':
   webhook_url = value
  elif opt == '--webhook_title':
   webhook_title = value
  elif opt == '--alert_message':
   alert_message = value
 webhook_header = {
   "Content-Type": "application/json",
   "charset": "utf-8"
  }
 webhook_message = {
   "msgtype": "markdown",
   "markdown": {
    "title": webhook_title,
    "text": alert_message
   }
  }
 sendData = json.dumps(webhook_message,indent=1)
 requests.post(url=webhook_url,headers=webhook_header,data=sendData)
except:
 traceback.print_exc(file=open('/tmp/alert_zabbix_dingding.log','w+'))

配置zabbix mediatype

webhook_url替换成钉钉机器人webhook URL

python3实现zabbix告警推送钉钉的示例

配置user

python3实现zabbix告警推送钉钉的示例

配置action

python3实现zabbix告警推送钉钉的示例

附上message

告警

## 故障 

**主机名称:** {HOSTNAME1} 
**告警名称:** {TRIGGER.NAME} 
**告警级别:** {TRIGGER.SEVERITY} 
**告警时间:** {EVENT.DATE} {EVENT.TIME} 
**检查项:** {TRIGGER.KEY1} 
**当前值:** {ITEM.LASTVALUE} 
**IP地址:** {HOST.IP} 
**事件ID:** {EVENT.ID}

恢复

## 恢复  

**主机名称:** {HOSTNAME1} 
**告警名称:** {TRIGGER.NAME} 
**告警级别:** {TRIGGER.SEVERITY} 
**告警时间:** {EVENT.DATE} {EVENT.TIME} 
**恢复时间:** {EVENT.RECOVERY.DATE} {EVENT.RECOVERY.TIME} 
**故障时长:** {EVENT.AGE} 
**检查项:** {TRIGGER.KEY1} 
**当前值:** {EVENT.RECOVERY.VALUE} 
**IP地址:** {HOST.IP} 
**事件ID:** {EVENT.ID}

以上这篇python3实现zabbix告警推送钉钉的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Django的数据模型访问多对多键值的方法
Jul 21 Python
浅谈编码,解码,乱码的问题
Dec 30 Python
Python利用operator模块实现对象的多级排序详解
May 09 Python
Python实现个人微信号自动监控告警的示例
Jul 03 Python
基于Python安装pyecharts所遇的问题及解决方法
Aug 12 Python
python定时任务 sched模块用法实例
Nov 04 Python
pytorch制作自己的LMDB数据操作示例
Dec 18 Python
Python计算公交发车时间的完整代码
Feb 12 Python
浅谈python print(xx, flush = True) 全网最清晰的解释
Feb 21 Python
Python selenium爬取微信公众号文章代码详解
Aug 12 Python
基于Python实现将列表数据生成折线图
Mar 23 Python
Python Flask实现进度条
May 11 Python
python实现图书借阅系统
Feb 20 #Python
python 调用钉钉机器人的方法
Feb 20 #Python
python钉钉机器人运维脚本监控实例
Feb 20 #Python
Python实现钉钉发送报警消息的方法
Feb 20 #Python
python给微信好友定时推送消息的示例
Feb 20 #Python
linux查找当前python解释器的位置方法
Feb 20 #Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 #Python
You might like
PHP实现补齐关闭的HTML标签
2016/03/22 PHP
php数据库的增删改查 php与javascript之间的交互
2017/08/31 PHP
Yii2处理密码加密及验证的方法
2019/05/12 PHP
采用CSS和JS,刚好我最近有个站点要用到下拉菜单!
2006/06/26 Javascript
js+数组实现网页上显示时间/星期几的实用方法
2013/01/18 Javascript
angular简介和其特点介绍
2015/01/29 Javascript
JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
2016/08/23 Javascript
百度多文件异步上传控件webuploader基本用法解析
2016/11/07 Javascript
bootstrap3-dialog-master模态框使用详解
2017/08/22 Javascript
BACKBONE.JS 简单入门范例
2017/10/17 Javascript
vue+Java后端进行调试时解决跨域问题的方式
2017/10/19 Javascript
nodejs实现的简单web服务器功能示例
2018/03/15 NodeJs
让Vue也可以使用Redux的方法
2018/05/23 Javascript
使用JavaScript生成罗马字符的实例代码
2018/06/08 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
从0到1构建vueSSR项目之node以及vue-cli3的配置
2019/03/07 Javascript
使用jquery-easyui的布局layout写后台管理页面的代码详解
2019/06/19 jQuery
TensorFlow.js 微信小程序插件开始支持模型缓存的方法
2020/02/21 Javascript
JS如何寻找数组中心索引过程解析
2020/06/01 Javascript
JavaScript动态生成表格的示例
2020/11/02 Javascript
[01:54]胎教DOTA2 准妈妈玩家现身中国区预选赛
2016/06/26 DOTA
[01:03:36]DOTA2-DPC中国联赛 正赛 VG vs Magma BO3 第二场 1月26日
2021/03/11 DOTA
python数据库操作常用功能使用详解(创建表/插入数据/获取数据)
2013/12/06 Python
Python 3.x 连接数据库示例(pymysql 方式)
2017/01/19 Python
快速入门python学习笔记
2017/12/06 Python
python3.x 将byte转成字符串的方法
2018/07/17 Python
python队列Queue的详解
2019/05/10 Python
python+opencv实现摄像头调用的方法
2019/06/22 Python
Python reques接口测试框架实现代码
2020/07/28 Python
python利用递归方法实现求集合的幂集
2020/09/07 Python
详解tensorflow之过拟合问题实战
2020/11/01 Python
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
大学生村官承诺书
2014/03/28 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
2016春季幼儿园小班开学寄语
2015/12/03 职场文书
对Keras自带Loss Function的深入研究
2021/05/25 Python