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使用post提交数据到远程url的方法
Apr 29 Python
Python中json格式数据的编码与解码方法详解
Jul 01 Python
python 捕获shell脚本的输出结果实例
Jan 04 Python
LRUCache的实现原理及利用python实现的方法
Nov 21 Python
python读取文本中的坐标方法
Oct 14 Python
pygame游戏之旅 创建游戏窗口界面
Nov 20 Python
在Django中URL正则表达式匹配的方法
Dec 20 Python
python使用suds调用webservice接口的方法
Jan 03 Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 Python
Spring Cloud Feign高级应用实例详解
Dec 10 Python
Django中ORM的基本使用教程
Dec 22 Python
python基于openpyxl生成excel文件
Dec 23 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
关于session在PHP5的配置文件中的详细设置参数说明
2011/04/20 PHP
解析php session_set_save_handler 函数的用法(mysql)
2013/06/29 PHP
PHP 魔术变量和魔术函数详解
2015/02/25 PHP
php实现递归抓取网页类实例
2015/04/03 PHP
Yii2学习笔记之汉化yii设置表单的描述(属性标签attributeLabels)
2017/02/07 PHP
自制PHP框架之模型与数据库
2017/05/07 PHP
PHP使用mysqli同时执行多条sql查询语句的实例
2019/03/22 PHP
PHP defined()函数的使用图文详解
2019/07/20 PHP
jQuery MD5加密实现代码
2010/03/15 Javascript
js跨域问题之跨域iframe自适应大小实现代码
2010/07/17 Javascript
event.currentTarget与event.target的区别介绍
2012/12/31 Javascript
通过Tabs方法基于easyUI+bootstrap制作工作站
2016/03/28 Javascript
JavaScript中for循环的几种写法与效率总结
2017/02/03 Javascript
jquery滚动条插件slimScroll使用方法
2017/02/09 Javascript
js实现PC端根据IP定位当前城市地理位置
2017/02/22 Javascript
jquery中绑定事件的异同
2017/02/28 Javascript
详解extract-text-webpack-plugin 的使用及安装
2018/06/12 Javascript
JavaScript常见鼠标事件与用法分析
2019/01/03 Javascript
vue无限轮播插件代码实例
2019/05/10 Javascript
使用xampp将angular项目运行在web服务器的教程
2019/09/16 Javascript
jQuery实现移动端下拉展现新的内容回弹动画
2020/06/24 jQuery
python 自动提交和抓取网页
2009/07/13 Python
python访问mysql数据库的实现方法(2则示例)
2016/01/06 Python
pycharm下打开、执行并调试scrapy爬虫程序的方法
2017/11/29 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
python使用threading.Condition交替打印两个字符
2019/05/07 Python
使用pandas库对csv文件进行筛选保存
2020/05/25 Python
matplotlib bar()实现多组数据并列柱状图通用简便创建方法
2021/02/24 Python
Expedia挪威官网:酒店、机票和租车
2018/03/03 全球购物
英国领先的大码时装品牌之一:Elvi
2018/08/26 全球购物
美国唇部护理专家:Sara Happ
2019/06/19 全球购物
如果一个类实现了多个接口但是这些接口有相同的方法名将会怎样
2013/06/16 面试题
安全生产月标语
2014/10/07 职场文书
优秀工作者事迹材料
2014/12/26 职场文书
幼儿园小班个人工作总结
2015/02/12 职场文书
Go 通过结构struct实现接口interface的问题
2021/10/05 Golang