您的位置:首页 > 脚本大全 > > 正文

zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)

更多 时间:2022-01-25 00:37:42 类别:脚本大全 浏览量:1878

zabbix sender能否发送告警数据

python3实现zabbix告警推送钉钉的示例

自己写了一个简单的python脚本,用来推送zabbix告警到钉钉机器人,推送格式为markdown,有需要的可以自己修改markdown的格式及推送的值(zabbix宏)

zabbix sender能否发送告警数据(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路径下

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • [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

    zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)

    配置user

    zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)

    配置action

    zabbix sender能否发送告警数据(python3实现zabbix告警推送钉钉的示例)

    附上message

    告警

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • ## 故障
  •  
  • **主机名称:** {hostname1}
  • **告警名称:** {trigger.name}
  • **告警级别:** {trigger.severity}
  • **告警时间:** {event.date} {event.time}
  • **检查项:** {trigger.key1}
  • **当前值:** {item.lastvalue}
  • **ip地址:** {host.ip}
  • **事件id** {event.id}
  • 恢复

  • ?
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • ## 恢复 
  •  
  • **主机名称:** {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告警推送钉钉的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持开心学习网。

    原文链接:https://blog.csdn.net/u010871982/article/details/80469859