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统计字符串中指定字符出现次数的方法
Apr 04 Python
Python爬虫利用cookie实现模拟登陆实例详解
Jan 12 Python
Python执行时间的计算方法小结
Mar 17 Python
python实现机械分词之逆向最大匹配算法代码示例
Dec 13 Python
Python实现一个服务器监听多个客户端请求
Apr 12 Python
Python闭包思想与用法浅析
Dec 27 Python
Opencv+Python实现图像运动模糊和高斯模糊的示例
Apr 11 Python
Django框架模板的使用方法示例
May 25 Python
python使用paramiko模块通过ssh2协议对交换机进行配置的方法
Jul 25 Python
python turtle 绘制太极图的实例
Dec 18 Python
如何基于pandas读取csv后合并两个股票
Sep 25 Python
用python实现监控视频人数统计
May 21 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安装攻略:常见问题解答(二)
2006/10/09 PHP
php 设计模式之 工厂模式
2008/12/19 PHP
php中$_SERVER[PHP_SELF] 和 $_SERVER[SCRIPT_NAME]之间的区别
2009/09/05 PHP
PHP实现的json类实例
2015/07/28 PHP
php计算年龄精准到年月日
2015/11/17 PHP
PHP中字符串长度的截取用法示例
2017/01/12 PHP
在Laravel 的 Blade 模版中实现定义变量
2019/10/14 PHP
javascript 可以拖动的DIV(二)
2009/06/26 Javascript
js DOM 元素ID就是全局变量
2012/09/20 Javascript
jquery表格内容筛选实现思路及代码
2013/04/16 Javascript
JQuery写动态树示例代码
2013/07/31 Javascript
JQuery设置文本框和密码框得到焦点时的样式
2013/08/30 Javascript
HTTP 304错误的详细讲解
2013/11/13 Javascript
javascript的parseFloat()方法精度问题探讨
2013/11/26 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript获取Url里的参数
2014/12/18 Javascript
JavaScript清空数组元素的两种方法简单比较
2015/07/10 Javascript
js鼠标点击图片切换效果实现代码
2015/11/19 Javascript
使用jQuery mobile库检测url绝对地址和相对地址的方法
2015/12/04 Javascript
AngularJS入门教程之AngularJS指令
2016/04/18 Javascript
Javascript中函数名.length属性用法分析(对比arguments.length)
2016/09/16 Javascript
Bootstrap基本组件学习笔记之缩略图(13)
2016/12/08 Javascript
JS判断键盘是否按的回车键并触发指定按钮点击操作的方法
2017/02/13 Javascript
原生JS实现列表内容自动向上滚动效果
2019/05/22 Javascript
vue 动态组件用法示例小结
2020/03/06 Javascript
[01:34:42]NAVI vs EG 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
使用Python操作Elasticsearch数据索引的教程
2015/04/08 Python
Python基于Matplotlib库简单绘制折线图的方法示例
2017/08/14 Python
详解appium+python 启动一个app步骤
2017/12/20 Python
CSS3,线性渐变(linear-gradient)的使用总结
2017/01/09 HTML / CSS
豪华床上用品 :Jennifer Adams
2019/09/15 全球购物
七一表彰活动方案
2014/01/18 职场文书
学校三八妇女节活动情况总结
2014/03/09 职场文书
工地质量标语
2014/06/12 职场文书
十佳标兵事迹材料
2014/08/18 职场文书
大学生心理健康活动总结
2015/05/08 职场文书