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的登录注册系统的示例代码
May 14 Python
Python重新加载模块的实现方法
Oct 16 Python
解决python写入带有中文的字符到文件错误的问题
Jan 31 Python
Python的matplotlib绘图如何修改背景颜色的实现
Jul 16 Python
django mysql数据库及图片上传接口详解
Jul 18 Python
python 三元运算符使用解析
Sep 16 Python
树莓派安装OpenCV3完整过程的实现
Oct 10 Python
节日快乐! Python画一棵圣诞树送给你
Dec 24 Python
python设置代理和添加镜像源的方法
Feb 14 Python
使用Python获取当前工作目录和执行命令的位置
Mar 09 Python
python通过函数名调用函数的几种方法总结
Jun 07 Python
讲解Python实例练习逆序输出字符串
May 06 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校验ISBN码的函数代码
2011/01/17 PHP
php mysql_real_escape_string addslashes及mysql绑定参数防SQL注入攻击
2016/12/23 PHP
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
Jquery判断$("#id")获取的对象是否存在的方法
2013/09/25 Javascript
Extjs4中Form的使用之本地hiddenfield
2013/11/26 Javascript
网页实时显示服务器时间和javscript自运行时钟
2014/06/09 Javascript
浅析javascript中的DOM
2015/03/01 Javascript
分享Javascript实用方法二
2015/12/13 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JS 全屏和退出全屏详解及实例代码
2016/11/07 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
jQuery验证表单格式的使用方法
2017/01/10 Javascript
详解用函数式编程对JavaScript进行断舍离
2017/09/18 Javascript
vue.js绑定事件监听器示例【基于v-on事件绑定】
2018/07/07 Javascript
使用D3.js+Vue实现一个简单的柱形图
2018/08/05 Javascript
JS使用H5实现图片预览功能
2019/09/30 Javascript
环形加载进度条封装(Vue插件版和原生js版)
2019/12/04 Javascript
原生JavaScript实现弹幕组件的示例代码
2020/10/12 Javascript
[28:57]EG vs VGJ.T 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/16 DOTA
[33:28]完美世界DOTA2联赛PWL S3 PXG vs GXR 第三场 12.19
2020/12/24 DOTA
python检测某个变量是否有定义的方法
2015/05/20 Python
python发送邮件功能实现代码
2016/07/15 Python
对numpy Array [: ,] 的取值方法详解
2018/07/02 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python有参函数使用代码实例
2020/01/06 Python
Python Numpy中数据的常用保存与读取方法
2020/04/01 Python
澳大利亚百货公司:David Jones
2018/02/08 全球购物
利达恒信公司.NET笔试题面试题
2016/03/05 面试题
办加油卡单位介绍信
2014/01/09 职场文书
最美护士演讲稿
2014/08/27 职场文书
整改报告怎么写
2014/11/06 职场文书
自主招生自荐信怎么写
2015/03/24 职场文书
用Python提取PDF表格的方法
2021/04/11 Python
MySQL 查询速度慢的原因
2021/05/25 MySQL
基于Java的MathML转图片的方法(示例代码)
2021/06/23 Java/Android
java协程框架quasar和kotlin中的协程对比分析
2022/02/24 Java/Android