zabbix wechat 报警

监控在运维工作中是比不可少的一环,那伴随着监控也同时会涉及到告警机制,一般的监控到的结果是成功或者失败,如Ping不通、访问网页出错、连接不到Socket,发生时这些称之为故障,故障是最优先的告警。那针对于 zabbix 的告警可以有多种方式去做:

zabbix三种常见报警介质:

短信:它的好处是不用联网手机有信号就行,但是需要有短信网关,需要花钱。

邮件:它也可以做到手机短信通知,基本现在邮箱都有这个功能(如果你使用的是移动的手机号,可以让zabbix将报警信息发送到139邮箱,再通过139绑定到手机号来接收短信,免费),当然如果你使用qq邮箱微信也是可以推送邮件提醒的,完全免费。

微信:对于我这种手机一响就会掏出来看一下的人比较方便,可定制化强, 完全免费

QQ:通过OneAlert 110告警机器人实现,具体请查百度”one alert 110告警机器人”


下面来介绍下如何通过 wechat 来配置 zabbix 报警

wechat 报警所具备的一些条件:

1、在 zabbix_server 中配置 alertscript 路径:

这里写图片描述

2、在 zabbix 界面中确保触发器是已经启用的状态(一般做测试都会临时搭建一个 zabbix_server 出来,通过 ansible 定制包10分钟就可以安装完成)

这里写图片描述

3、需要申请微信企业号

去该页面申请一个即可:https://qy.weixin.qq.com/
具体操作则是输入基本信息,在邮箱中点击链接进行激活,选择微信企业号类型、信息登记就可以了。


一、安装 simplejson 3.8.2 (Zabbix_Server 端操作)

wget https://pypi.python.org/packages/f0/07/26b519e6ebb03c2a74989f7571e6ae6b82e9d7d81b8de6fcdbfc643c7b58/simplejson-3.8.2.tar.gz#md5=53b1371bbf883b129a12d594a97e9a18
tar zxf simplejson-3.8.2.tar.gz
cd simplejson-3.8.2
python setup.py build
python setup.py install

下载 wechat.py 安装脚本

git clone https://github.com/X-Mars/Zabbix-Alert-WeChat.git  
cp Zabbix-Alert-WeChat/wechat.py /usr/local/zabbix/alertscripts/
chmod +x wechat.py

二、企业微信号设置

我起名该企业微信号名称为报警小灵通

这里写图片描述

1、通讯录设置
点击通讯录,新建一个技术部、接着在技术部下面新建一个子部门 —> 运维小组

这里写图片描述

并记录运维小组的部门ID(等下修改wechat.py脚本的时候需要该ID号,用于发送报警信息)

这里写图片描述

在通讯录中添加一个用户(该用户用来发送微信企业号的消息)

这里写图片描述


2、应用中心设置

创建应用,取名 zabbix 报警,新建消息型应用,填写应用名称、功能介绍、并且选择可见范围 —> 运维小组。

这里写图片描述

并且记录应用ID(等下修改wechat.py脚本的时候需要该ID号,用于发送报警信息)

这里写图片描述

3、应用权限设置

点击左侧栏 —> 设置 —> 权限设置 —> 新建管理组,并且设置权限

这里写图片描述

这里写图片描述

继续点击刚才新建的小组 —> 权限处理 —> 记录 CorpID与Secret(等下修改wechat.py脚本的时候需要该ID号,用于发送报警信息)

这里写图片描述

扫二维码即可关注,接收消息

这里写图片描述


三、wechat 脚本修改(修改部门ID、应用ID、CorpID与SecretID),就是我们刚才所记录的,如果没有记录,可以回头去看

#!/usr/bin/python
#_*_coding:utf-8 _*_


import urllib,urllib2
import json
import sys
import simplejson

def gettoken(corpid,corpsecret):
    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret
    print  gettoken_url
    try:
        token_file = urllib2.urlopen(gettoken_url)
    except urllib2.HTTPError as e:
        print e.code
        print e.read().decode("utf8")
        sys.exit()
    token_data = token_file.read().decode('utf-8')
    token_json = json.loads(token_data)
    token_json.keys()
    token = token_json['access_token']
    return token



def senddata(access_token,user,subject,content):

    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token
    send_values = {
        "touser":user,    #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。
        "toparty":"4",    #企业号中的部门id。
        "msgtype":"text", #消息类型。
        "agentid":"6",    #企业号中的应用id。
        "text":{
            "content":subject + '\n' + content
           },
        "safe":"0"
        }
#    send_data = json.dumps(send_values, ensure_ascii=False)
    send_data = simplejson.dumps(send_values, ensure_ascii=False).encode('utf-8')
    send_request = urllib2.Request(send_url, send_data)
    response = json.loads(urllib2.urlopen(send_request).read())
    print str(response)


if __name__ == '__main__':
    user = str(sys.argv[1])     #zabbix传过来的第一个参数
    subject = str(sys.argv[2])  #zabbix传过来的第二个参数
    content = str(sys.argv[3])  #zabbix传过来的第三个参数

    corpid =  'wx5053'   #CorpID是企业号的标识
    corpsecret = 'FOPk4InFyvHFdz6-_NjeZ9gHN1zJG'  #corpsecretSecret是管理组凭证密钥
    accesstoken = gettoken(corpid,corpsecret)
    senddata(accesstoken,user,subject,content)

执行 wechat.py 脚本进行测试,看是否收得到公众号信息,我这边是正常的

这里写图片描述

这里写图片描述


四、Zabibx Web 界面设置

1、添加报警媒介

点击管理 —> 报警媒介 —> 创建报警媒介
下图请注意!脚本参数中的第一个是我在微信企业号中创建的用户,并且 hongxue 是该用户的账户,并不是微信号!!!

这里写图片描述

2、设置用户报警媒介

点击管理 —> 用户 —> 报警媒介(类型为刚才创建的报警媒介、收件人还是选择hongxue)

这里写图片描述

3、配置触发器

点击配置 —> 动作 —> 创建动作(事件源为触发器),并且设置动作操作

这里写图片描述


五、验证微信报警是否正常

我做了几个操作,修改 /etc/passwd,并且关闭ssh服务,具体动作日志可以点击报表 —> 动作日志查看

这里写图片描述

下面可以看到我微信收到企业号推送的报警信息

这里写图片描述

本页内容版权归属为原作者,如有侵犯您的权益,请通知我们删除。
J2EE进阶(十一)SSH框架整合常见问题汇总(二) 问题 8       java.lang.ClassCastException : java.lang.String cannot be cast to java.lang.Boolean      解决       数据库中userdetail表的映射文件如下,可见xb字段数据类型为boolean类型,而自己在userdetail模型类中定义的类型为String类型。为此可以得出这样的结论。模型类中的数据及类型必须与数据表映射文件中的字段信息保持一致
背景: 为了方便整体产品的发布,希望通过docker实现增量发布。大致的思路如下: is-there-a-way-to-add-only-changed-files-to-a-docker-image-as-a-new-layer-with 。本博文对这种方式进行了尝试,与此同时简单介绍如何通过Dockerfile来创建Docker镜像。 前期准备: 解决centos的网络问题 【can not find a valid baseurl for repo: base/7/x86_64】 ,使用dhclie

pcap文件的python解析实例 - 2016-07-24 19:07:52

最近一直在分析数据包。 同时也一直想学python。 凑一块儿了...于是,便开工了。座椅爆炸! 正文 首先要说的是,我知道python有很多解析pcap文件的库,这里不使用它们的原因是为了理解pcap文件的格式细节。使用tcpdump你可以很容易抓取到一系列的数据包,然而tcpdump并没有分析数据包的功能,如果想从这个抓包文件中分析出一些端倪,比如重传情况,你必须使用wireshark之类的软件,用wireshark打开tcpdump抓取的pcap文件,如果你看到了一堆堆的深红色(类似静脉血管里流出的猪

CPU和内存监测 - 2016-07-24 19:07:07

CPU和内存监测 vmstat命令的VM模式 vmstat可以监测给定时间间隔的服务器的状态值,包括CPU的使用率,内存的使用,虚拟内存的交换情况,IO读写情况。 主要从/proc/meminfo,/proc/stat和/proc/*/stat中获取数据 常用手段vmstat [采样的时间间隔秒数] [采样的次数],举例如下: [root@dtbase-master- 2 /root] #vmstat 5 10 procs -----------memory---------- ---swap-- ---
正文 为了弥补pcap文件的缺陷,让抓包文件可以容纳更多的信息,pcapng格式应运而生。关于它的介绍详见《 PCAP Next Generation Dump File Format 》         当前的wireshark/tshark抓取的包默认都被保存为pcapng格式。         形而上的论述就不多谈了,直接给出一个pcapng数据包文件的例子: 然后我强烈建议,对着《 PCAP Next Generation Dump File Format 》来把一个实际抓取的pcapng文件里面
PS:历史原因作者账号名为:ymh198816,但事实上作者的生日并不是1988年1月6日 今天作者要在这里通过一个简单的电商网站订单实时分析系统和大家一起梳理一下大数据环境下的实时分析系统的架构模型。当然这个架构模型只是实时分析技术的一 个简单的入门级架构,实际生产环境中的大数据实时分析技术还涉及到很多细节的处理, 比如使用Storm的ACK机制保证数据都能被正确处理, 集群的高可用架构, 消费数据时如何处理重复数据或者丢失数据等问题,根据不同的业务场景,对数据的可靠性要求以及系统的复杂度的要求也会不同
一 协议端口 如果把IP地址比作一间房子 ,端口就是出入这间房子的门。真正的房子只有几个门,但是一个IP地址的端口可以有65536(即:2^16)个之多!端口是通过端口号来标记的,端口号只有整数,范围是从0 到65535(2^16-1)。 在Internet上,各主机间通过TCP/IP协议发送和接收数据包,各个数据包根据其目的主机的ip地址来进行互联网络中的路由选择,把数据包顺利的传送到目的主机。大多数操作系统都支持多程序(进程)同时运行,那么目的主机应该把接收到的数据包传送给众多同时运行的进程中的哪一个
MyBatis真正的强大,在于其映射语句的魔力。 SQL 映射文件有很少的几个顶级元素(按照它们应该被定义的顺序): (1)cache  给定命名空间的配置缓存。 (2)cache-ref  其他命名空间缓存配置的引用。 (3)resultMap  是最复杂也是最强大的元素,用来描述如何从数据库结果集中来加载对象 (4)sql 可被其他语句引用的可重用语句块。 (5)insert 映射插入语句 (6)update  映射更新语句 (7)delete   映射删除语句 (8)select   映射查询语句
1、Maven构建Spring Boot 创建Maven Web工程,引入spring-boot-starter-parent依赖 project xmlns = "http://maven.apache.org/POM/4.0.0" xmlns:xsi = "http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/m

平衡搜索树之AVLTree - 2016-07-24 14:07:56

今天我想要在这里写下个人觉得比较难的数据结构---AVL树的一些些心得。 一。了解一种新的数据结构,首先要搞懂它的定义 : AVL树又称为高度平衡的二叉搜索树,是1962年有俄罗斯的数学家G.M.Adel'son-Vel'skii和E.M.Landis提出来的。它能保持二叉树的高度 平衡,尽量降低二叉树的高度,减少树的平均搜索长度。所以严格点来说,对于一棵搜索二叉树,能达到O(logn)的只是AVL树,因为他对于二叉树的深度控制的最为严格 ,那么这是为什么呢?让我们来看看 AVL树的性质 : 左子树和右子