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 相关文章推荐
在Python中使用pngquant压缩png图片的教程
Apr 09 Python
简单介绍Python2.x版本中的cmp()方法的使用
May 20 Python
深入解析Python的Tornado框架中内置的模板引擎
Jul 11 Python
Python max内置函数详细介绍
Nov 17 Python
老生常谈python的私有公有属性(必看篇)
Jun 09 Python
详解Python利用random生成一个列表内的随机数
Aug 21 Python
Python3标准库之functools管理函数的工具详解
Feb 27 Python
使用OpenCV校准鱼眼镜头的方法
Nov 26 Python
Python 中 sorted 如何自定义比较逻辑
Feb 02 Python
解决python3安装pandas出错的问题
May 20 Python
python使用opencv对图像添加噪声(高斯/椒盐/泊松/斑点)
Apr 06 Python
详解OpenCV获取高动态范围(HDR)成像
Apr 29 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
做一个有下拉功能的留言版
2006/10/09 PHP
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
PHP遍历文件夹与文件类及处理类用法实例
2014/09/23 PHP
学习php设计模式 php实现模板方法模式
2015/12/08 PHP
降低PHP Redis内存占用
2017/03/23 PHP
JQuery动态创建DOM、表单元素的实现代码
2011/08/09 Javascript
jQuery代码优化之基本事件
2011/11/01 Javascript
JavaScript自执行闭包的小例子
2013/06/29 Javascript
讨论html与javascript在浏览器中的加载顺序问题
2013/11/27 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
jQuery实现复选框成对选择及对应取消的方法
2015/03/03 Javascript
AJAX实现瀑布流触发分页与分页触发瀑布流的方法
2016/05/23 Javascript
JavaScript判断是否是微信浏览器
2016/06/13 Javascript
jquery遍历标签中自定义的属性方法
2016/09/17 Javascript
解析AngularJS中get请求URL出现的跨域问题
2016/12/01 Javascript
Javascript ES6中数据类型Symbol的使用详解
2017/05/02 Javascript
js打开word文档预览操作示例【不是下载】
2019/05/23 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
基于Vue.js与WordPress Rest API构建单页应用详解
2019/09/16 Javascript
axios实现文件上传并获取进度
2020/03/25 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
[43:33]EG vs Spirit Supermajor 败者组 BO3 第一场 6.4
2018/06/05 DOTA
python网络编程之UDP通信实例(含服务器端、客户端、UDP广播例子)
2014/04/25 Python
全面解读Python Web开发框架Django
2014/06/30 Python
Python读取键盘输入的2种方法
2015/06/16 Python
Python中循环引用(import)失败的解决方法
2018/04/22 Python
python opencv 批量改变图片的尺寸大小的方法
2019/06/28 Python
linux面试题参考答案(8)
2015/08/11 面试题
护理专业毕业生自我鉴定
2013/10/08 职场文书
名企HR怎样看待求职信
2014/02/23 职场文书
环保建议书500字
2014/05/14 职场文书
任命书怎么写
2014/06/04 职场文书
贪污受贿检讨书范文
2014/11/19 职场文书
老乡聚会通知
2015/04/23 职场文书
车间安全生产管理制度
2015/08/06 职场文书
看看如何用Python绘制小米新版天价logo
2021/04/20 Python