Zabbix 邮件微信报警

分2大部分:

                1.Zabbix服务器端配置

                        邮件服务安装配置

                2.Web端服务配置

服务器端的设置:

系统 cenots 6.5   2.6.32-431.el6.x86_64

安装邮件发送服务:

[root@localhost ~]# wget http://sourceforge.net/projects/heirloom/files/latest/download?source=files

zabbix3.0微信邮件报警_zabbix

[root@localhost ~]# mv download\?source\=files mailx-12.4.tar.bz2

[root@localhost ~]# tar xf mailx-12.4.tar.bz2

[root@localhost ~]# cd mailx-12.4

打个补丁才可以用:

zabbix3.0微信邮件报警_zabbix_02

[root@localhost mailx-12.4]# patch -Np1 -i mailx-12.4-openssl_1.0.0_build_fix-1.patch

patching file makeconfig

patching file openssl.c

[root@localhost mailx-12.4]# make

[root@localhost mailx-12.4]# make install UCBINSTALL=/usr/bin/install

下面为输出信息:

zabbix3.0微信邮件报警_zabbix_03

test -d /usr/local/bin || mkdir -p /usr/local/bin

/usr/bin/install -c mailx /usr/local/bin/mailx

strip /usr/local/bin/mailx

test -d /usr/local/share/man/man1 || mkdir -p /usr/local/share/man/man1

/usr/bin/install -c -m 644 mailx.1 /usr/local/share/man/man1/mailx.1

test -d /etc || mkdir -p /etc

test -f /etc/nail.rc || \

              /usr/bin/install -c -m 644 nail.rc /etc/nail.rc

[root@localhost mailx-12.4]# vim /etc/nail.rc

编辑配置文件最下面加上:修改为你自己的

set from=xxx@163.com smtp=smtp.163.com

set smtp-auth-user=xxx@163.com smtp-auth-password=邮箱密码

set smtp-auth=login

 

[root@localhost mailx-12.4]# which mailx

/usr/local/bin/mailx

[root@localhost mailx-12.4]# cd /bin

[root@localhost bin]# ln -s /usr/local/bin/mailx mail

[root@localhost bin]# mail -V

12.4 7/29/08

[root@localhost bin]# mail -s "Message"  jinchuang1025@163.com < /tmp/yum_save_tx-2016-11-10-17-274YsBZQ.yumtx

[root@localhost bin]# echo $?

0

zabbix3.0微信邮件报警_zabbix_04

=======================邮件发送成功!==============================

 

Zabbix 报警脚本:

邮件:

[root@zabbix-server alertscripts]# vim sendmail.sh#!/bin/bash

echo "$3" > /tmp/zabbix_mail.txt  #此文件要有zabbix 权限不然乱码

dos2unix -k /tmp/zabbix_mail.txt

/bin/mail -s "$2" $1 < /tmp/zabbix_mail.txt

 

Zabbix server 配置文件修改

[root@zabbix-server ~]# vim /usr/local/zabbix/etc/zabbix_server.conf

添加或修改为下面这句:

AlertScriptsPath=/usr/local/zabbix/alertscripts  #开启zabbix调用脚本存放路径位置

 

重启zabbix服务生效

[root@zabbix-server ~]# /etc/init.d/zabbix_server restart

 

微信:

申请微信企业号

建立部门 和添加成员(接收消息的)

zabbix3.0微信邮件报警_zabbix_05

查看部门id

zabbix3.0微信邮件报警_报警_06

新建应用

zabbix3.0微信邮件报警_报警_07

查看应用id 和添加接收消息用户

zabbix3.0微信邮件报警_报警_08

查看corpid

zabbix3.0微信邮件报警_zabbix_09

查看管理组凭证密钥

zabbix3.0微信邮件报警_zabbix_10

 

脚本:修改红色的为你自己的企业号对应的。

[root@zabbix-server alertscripts]# vim weixin.py

#!/usr/bin/python

#_*_coding:utf-8 _*_

__author__ = 'lvnian'

 

import urllib,urllib2

import json

import sys

 

def gettoken(corpid,corpsecret):

    gettoken_url = 'https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=' + corpid + '&corpsecret=' + corpsecret

    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,content):

 

    send_url = 'https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=' + access_token

    send_values = {

        "touser":user ,    #企业号中的用户帐号,在zabbix用户Media中配置,如果配置不正常,将按部门发送。

        "toparty":"1",    #企业号中的部门id

        "msgtype":"text",  #消息类型。

        "agentid":"2",     #企业号中的应用id,

        "text":{

            "content":content

           },

        "safe":"0"

        }

    send_data = json.dumps(send_values, ensure_ascii=False)

    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 =  'wxdgfhshs3f1bba2jinc'   #CorpID是企业号的标识

    corpsecret = '3NDb5cKp-ViudjtgsiJ6Yw_R_jRj2cUdsgTmFLsOQGQYGPcc5wNLhPiAyTnpjinc'  #corpsecretSecret是管理组凭证密钥

    accesstoken = gettoken(corpid,corpsecret)

senddata(accesstoken,user,content)

给予执行权限:

[root@zabbix-server alertscripts]# chown zabbix.zabbix sendmail.sh weixin.py

[root@zabbix-server alertscripts]# chmod +x sendmail.sh weixin.py

 

 

 

Web端配置

1登录你的zabbix     -- 管理 – 报警媒介

 

zabbix3.0微信邮件报警_zabbix_11

 

 

创建媒体类型

zabbix3.0微信邮件报警_报警_12

 

 

创建邮件的:

zabbix3.0微信邮件报警_zabbix_13

 

 

创建微信的

zabbix3.0微信邮件报警_zabbix_14

 

 

       2再找到—配置 --- 动作

zabbix3.0微信邮件报警_zabbix_15

 

 

 

创建动作 (email  和 微信 相同)

zabbix3.0微信邮件报警_zabbix_16

 

 

 

配置动作 (email  和 微信 基本相同,注意 操作配置 里面的 仅送到选项 要选择不同的

zabbix3.0微信邮件报警_报警_17

zabbix3.0微信邮件报警_zabbix_18

zabbix3.0微信邮件报警_zabbix_19

 

找到 –管理 – 用户

zabbix3.0微信邮件报警_zabbix_20

 

 

选择报警媒介 – 添加 (我这里是添加过的)

zabbix3.0微信邮件报警_报警_21

 

创建邮件报警媒介 ,收件人那里要写正确,可以多个用逗号分隔

zabbix3.0微信邮件报警_zabbix_22

 

 

创建微信的

zabbix3.0微信邮件报警_报警_23

到此就结束了!

 

下面测试

停止一台服务器上zabbix_agentd服务

[root@localhost ~]# netstat -lntp |grep 10050

tcp        0      0 192.168.11.57:10050         0.0.0.0:*                   LISTEN      20537/zabbix_agentd

[root@localhost ~]# service zabbix_agentd stop

Shutting down zabbix_agentd:                               [  OK  ]

[root@localhost ~]# netstat -lntp |grep 10050

[root@localhost ~]#

zabbix3.0微信邮件报警_报警_24

等待几分钟 zabbix服务端监测不到就会触发报警了

zabbix3.0微信邮件报警_报警_25

发送细节状态:

zabbix3.0微信邮件报警_zabbix_26

收取到的邮件:

zabbix3.0微信邮件报警_zabbix_27

微信收到的:

zabbix3.0微信邮件报警_报警_28