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处理文本文件并生成指定格式的文件
Jul 31 Python
python删除过期文件的方法
May 29 Python
python简单实现刷新智联简历
Mar 30 Python
简单谈谈Python中函数的可变参数
Sep 02 Python
python jieba分词并统计词频后输出结果到Excel和txt文档方法
Feb 11 Python
pandas系列之DataFrame 行列数据筛选实例
Apr 12 Python
Python中应该使用%还是format来格式化字符串
Sep 25 Python
Python WEB应用部署的实现方法
Jan 02 Python
解决django中ModelForm多表单组合的问题
Jul 18 Python
python set集合使用方法解析
Nov 05 Python
基于Pycharm加载多个项目过程图解
Jan 19 Python
python单例模式的应用场景实例讲解
Feb 24 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
《星际争霸II》全新指挥官斯台特曼现已上线
2020/03/08 星际争霸
codeigniter自带数据库类使用方法说明
2014/03/25 PHP
php设置静态内容缓存时间的方法
2014/12/01 PHP
JavaScript中Object和Function的关系小结
2009/09/26 Javascript
js实现兼容IE6与IE7的DIV高度
2010/05/13 Javascript
jquery.validate.js插件使用经验记录
2014/07/02 Javascript
Javascript常用小技巧汇总
2015/06/24 Javascript
利用jQuery对无序列表排序的简单方法
2016/10/16 Javascript
js数组操作方法总结(必看篇)
2016/11/22 Javascript
vue-resourse将json数据输出实例
2017/03/08 Javascript
Node.js实现连接mysql数据库功能示例
2017/09/15 Javascript
AngularJS中控制器函数的定义与使用方法示例
2017/10/10 Javascript
JavaScript数据结构之优先队列与循环队列实例详解
2017/10/27 Javascript
Vue.js通用应用框架-Nuxt.js的上手教程
2017/12/25 Javascript
详解使用jest对vue项目进行单元测试
2018/09/07 Javascript
npm 常用命令详解(小结)
2019/01/17 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python保存数据到本地文件的方法
2018/06/23 Python
python实现将json多行数据传入到mysql中使用
2019/12/31 Python
如何将PySpark导入Python的放实现(2种)
2020/04/26 Python
python使用Word2Vec进行情感分析解析
2020/07/31 Python
利用Python如何制作贪吃蛇及AI版贪吃蛇详解
2020/08/24 Python
html5文字阴影效果text-shadow使用示例
2013/07/25 HTML / CSS
浅谈html5增强的页面元素
2016/06/14 HTML / CSS
基于HTML5+tracking.js实现刷脸支付功能
2020/04/16 HTML / CSS
使用layui框架实现点击左侧导航切换右侧内容且右侧选项卡跟随变化的效果
2020/11/10 HTML / CSS
Gap加拿大官网:Gap Canada
2017/08/24 全球购物
C#如何允许一个类被继承但是避免这个类的方法被重载?
2015/02/24 面试题
公开服务承诺制度
2014/03/26 职场文书
副董事长岗位职责
2014/04/02 职场文书
敬老院献爱心活动总结
2014/07/08 职场文书
纪念九一八事变演讲稿:青少年应树立远大理想
2014/09/14 职场文书
2014社会治安综合治理工作总结
2014/12/04 职场文书
工人先锋号事迹材料(2016精选版)
2016/03/01 职场文书
vue里使用create, mounted调用方法
2022/04/26 Vue.js