Zabbix-Server 设置

  1. # 使脚本目录生效
  2. [root@zabbix ~]# grep 'script' /etc/zabbix/zabbix_server.conf
  3. # AlertScriptsPath=${datadir}/zabbix/alertscripts
  4. AlertScriptsPath=/usr/lib/zabbix/alertscripts

Python 脚本

  1. # 在写 Python 脚本前,我们需要几个 Python 模块
  2. [root@zabbix ~]# wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz
  3. [root@zabbix ~]# tar zxvf simplejson-3.8.2.tar.gz && cd simplejson-3.8.2
  4. [root@zabbix ~]# python setup.py build
  5. [root@zabbix ~]# python setup.py install
  6. # 进入脚本目录,编写 Python 脚本
  7. [root@zabbix ~]# cd /usr/lib/zabbix/alertscripts
  8. [root@zabbix alertscripts]# vim wechat.py
  9. #!/usr/bin/python
  10. #_*_coding:utf-8 _*_
  11. import urllib,urllib2
  12. import json
  13. import sys
  14. import simplejson
  15. reload(sys)
  16. sys.setdefaultencoding('utf-8')
  17. def gettoken(corpid,corpsecret):
  18. gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
  19. # print gettoken_url
  20. try:
  21. token_file = urllib2.urlopen(gettoken_url)
  22. except urllib2.HTTPError as e:
  23. print e.code
  24. print e.read().decode("utf8")
  25. sys.exit()
  26. token_data = token_file.read().decode('utf-8')
  27. token_json = json.loads(token_data)
  28. token_json.keys()
  29. token = token_json['access_token']
  30. return token
  31. def senddata(access_token,user,subject,content):
  32. send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
  33. send_values = {
  34. "touser":'damaiyunwei', # 企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
  35. "toparty":"2", # 企业号中的部门id。
  36. "msgtype":"text", # 消息类型。
  37. "agentid":"1000002", # 企业号中的应用id。
  38. "text":{
  39. "content":subject + '\n' + content
  40. },
  41. "safe":"0"
  42. }
  43. # send_data = json.dumps(send_values, ensure_ascii=False)
  44. send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
  45. print(send_data)
  46. send_request = urllib2.Request(send_url, send_data)
  47. response = json.loads(urllib2.urlopen(send_request).read())
  48. print str(response)
  49. if __name__ == '__main__':
  50. user = str(sys.argv[1]) # zabbix 传过来的第一个参数
  51. subject = str(sys.argv[2]) # zabbix 传过来的第二个参数
  52. content = str(sys.argv[3]) # zabbix 传过来的第三个参数
  53. corpid = 'xxxxxxxxxxxxxx' # CorpID 是企业号的标识
  54. corpsecret = 'xxxxxxxxxxxxxxx-xxxxxx-xxxxx' # corpsecretSecret 是管理组凭证密钥
  55. accesstoken = gettoken(corpid,corpsecret)
  56. senddata(accesstoken,user,subject,content)
  57. # 给脚本文件加可执行权限
  58. [root@zabbix alertscripts]# chmod +x wechat.py







关注企业微信插件,无需下载企业微信即可获取报警信息:



告警动作中文格式

  1. # ====================== 故障告警格式 =========================== #
  2. 故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!
  3. 接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
  4. 告警主机:{HOST.NAME}
  5. 主机地址:{HOST.IP}
  6. 告警时间:{EVENT.DATE} {EVENT.TIME}
  7. 告警等级:{TRIGGER.SEVERITY}
  8. 告警信息:{TRIGGER.NAME}
  9. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  10. 事件代码:{EVENT.ID}
  11. # ====================== 恢复通知格式 =========================== #
  12. 恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!
  13. 接收人:{TRIGGER.STATUS}: {TRIGGER.NAME}
  14. 恢复主机:{HOST.NAME}
  15. 主机地址:{HOST.IP}
  16. 恢复时间:{EVENT.DATE} {EVENT.TIME}
  17. 恢复等级:{TRIGGER.SEVERITY}
  18. 恢复信息:{TRIGGER.NAME}
  19. 问题详情:{ITEM.NAME}:{ITEM.VALUE}
  20. 事件代码:{EVENT.ID}

Zabbix 微信监控报警的更多相关文章

  1. zabbix实现企业微信监控报警

    一.zabbix基本说明 简介:zabbix基于Web界面的分布式系统监控的企业级开源软件.可以监控各种系统与设备,网络参数,保证服务器设备安全运营:提供灵活的通知机制.如果检测到的指标不达标,就实现 ...

  2. Python-WXPY实现微信监控报警

    概述: 本文主要分享一下博主在学习wxpy 的过程中开发的一个小程序.博主在最近有一个监控报警的需求需要完成,然后刚好在学习wxpy 这个东西,因此很巧妙的将工作和学习联系在一起. 博文中主要使用到的 ...

  3. 毕业设计之zabbix+微信企业号报警

    需要自己申请一个微信企业号 创建应用 AgentId 1000003 Secret SOI8b20G96yUVM29K02-bP5N5o6dovwSF2RrDaXHJNg 企业ID(自己再企业信息里面 ...

  4. zabbix之微信告警(python版):微信个人报警,微信企业号告警脚本

    微信个人告警脚本 微信个人告警:使用个人微信,发送到微信群组,微信好友 两个脚本执行: 1)能连接网络2)先执行server.py,扫描登录微信,登录之后没有报错,打开新终端查看端口是否起来了3)在z ...

  5. zabbix 定义触发器,并使用邮件,微信消息报警。

    触发器可根据监控项获取到的值来进行一些操作,如监控项获取到的values为0,触发器可判断为正常,如果获取到了1,就触发报警. 定义报警方式比较简单,但是用shell脚本实现起来,总是有格式问题,所以 ...

  6. 带你了解zabbix如何监控mysql主从到报警触发

    本章博客我们一起来聊一聊如何监控mysql数据库主从状态? 思路梳理: 1)首先我们都知道,判断Mysql主从是否正常,是通过主从上面的SQL和IO线程都为yes状态判断(通过awk取值,grep过滤 ...

  7. 通过脚本发送zabbix微信报警

    实现zabbix通过微信报警的方式也是通过脚本来实现,与邮件报警不同的是,脚本调用的微信的相关接口的获取相对复杂一点 1.申请一个微信公众号(企业号) 申请方法不多说,如果已申请请忽略 2.在微信企业 ...

  8. zabbix的简单操作(查看监控,自定义监控和钉钉监控报警)

    zabbix是一种监控软件,我用的是centos7.5版本 一:我已经添加好主机了,接下来就是看看怎么查看监控内容的 1.打开zabbix服务的web网页 2.检测最新数据,要在最新数据中筛选 3.查 ...

  9. Zabbix微信报警脚本及写触发记录

    一.Zabbix微信报警 默认路径:/usr/lib/zabbix/scripts/weixin.py #!/usr/bin/python # -*- coding: utf-8 -*- import ...

随机推荐

  1. XEE - Pikachu

    概述 XXE -"xml external entity injection"既"xml外部实体注入漏洞".概括一下就是"攻击者通过向服务器注入指定的 ...

  2. python—base64

    今天在写题时,执行脚本又报错了 脚本如下 #! /usr/bin/env python3 # _*_ coding:utf-8 _*_ import base64 # 字典文件路径 dic_file_ ...

  3. Windows程序通用自动更新模块(C#,.NET4.5以上)

    本通用自动更新模块适合所有Windows桌面程序的自动更新,不论语言,无论Winform还是wpf. 一.工作流程:1. 主程序A调起升级程序B2. B从服务器获取更新程序列表,打印更新信息.3. B ...

  4. 国内最具影响力科技创投媒体36Kr的容器化之路

    本文由1月19日晚36Kr运维开发工程师田翰明在Rancher技术交流群的技术分享整理而成.微信搜索rancher2,添加Rancher小助手为好友,加入技术群,实时参加下一次分享~ 田翰明,36Kr ...

  5. Effective Java, 3e阅读笔记一

    引言 本书的目标是帮助读者更加有效地使用Java编程语言及其基本类库,适用于任何具有实际Java工作经验的程序员. 本书一共90个条目,12章,每个条目讨论一条规则,这些规则反映了最有经验的优秀程序员 ...

  6. SpringBoot @Value 解析集合配置

    引自:https://jitwxs.cn/d6d760c4.html 一.前言 在日常开发中,经常会遇到需要在配置文件中,存储 List 或是 Map 这种类型的数据.Spring 原生是支持这种数据 ...

  7. Android iText向pdf模板插入数据和图片

    一.需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 二.方案 手工设计一个pdf模板,这个具体步骤就不再赘述 ...

  8. Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18

    Go RPC 框架 KiteX 性能优化实践 原创 基础架构团队 字节跳动技术团队 2021-01-18

  9. 如何手动封装Promise函数

    第一步:Promise构造函数接受一个函数作为参数,该函数的两个参数分别是:resolve和reject; function Promise(task) { // 缓存this let that = ...

  10. C# 给Word不同页面设置不同背景

    给Word文档设置背景时,通常只能针对整篇文档设置统一的背景,如果需要对某些页面单独设置背景,则需要通过另外的方式来实现.本文通过C# 程序代码演示如何来实现.并附VB.NET代码作参考. 思路:通过 ...