金庸武功之“黯然销魂掌”---zabbix实现微信报警

一.部署环境  

    系统:CentOS 6.5x64 最小化安装  

    Server:192.168.93.126

    Client:192.168.93.125

二.基础软件包安装

    在server安装基础软件包,这里的环境使用yum安装,如果使用源码安装也是可以的。

 yum -y install wget vim tree gcc gcc-c++ autoconf httpd php mysql mysql-server php-mysql httpd-manual mod_ssl mod_perl mod_auth_mysql php-gd php-xml php-mbstring php-ldap php-pear php-xmlrpc 

 php-bcmath mysql-connector-odbc mysql-devel libdbi-dbd-mysql net-snmp net-snmp-devel curl-devel

   启动httpd、mysql并设置成开机自动启动

    [sjwl@zabbix-server ~]# service httpd start
    [sjwl@zabbix-server ~]# service mysqld start
    [sjwl@zabbix-server ~]# chkconfig httpd on
    [sjwl@zabbix-server ~]# chkconfig mysqld on

    

    停止iptables、关闭Selinux

    service iptables stop

    chkconfig iptables off

    vi /etc/sysconfig/selinux  (需要重启服务器)

    SELINUX=disabled

   

三.配置PHP参数

    zabbix的运行需要特定的php参数支持,修改如下:

    [sjwl@zabbix-server ~]# sed -i "s@;date.timezone =@date.timezone = Asia/Shanghai@g" /etc/php.ini
    [sjwl@zabbix-server ~]# sed -i "s@max_execution_time = 30@max_execution_time = 300@g" /etc/php.ini
    [sjwl@zabbix-server ~]# sed -i "s@post_max_size = 8M@post_max_size = 32M@g" /etc/php.ini
    [sjwl@zabbix-server ~]# sed -i "s@max_input_time = 60@max_input_time = 300@g" /etc/php.ini
    [sjwl@zabbix-server ~]# sed -i "s@memory_limit = 128M@memory_limit = 128M@g" /etc/php.ini
    [sjwl@za-server ~]# sed -i "s@;mbstring.func_overload = 0@ambstring.func_overload = 2@g" /etc/php.ini    


 修改httpd的FQDN错误,重启httpd服务

    [sjwl@zabbix-server ~]# echo "ServerName localhost:80" >>/etc/httpd/conf/httpd.conf
    [sjwl@zabbix-server ~]# /etc/init.d/httpd restart
    Stopping httpd:                                            [  OK  ]
    Starting httpd:                                            [  OK  ]

 

四.下载zabbix-2.4.5.tar.gz


    [sjwl@zabbix-server ~]# wget  http://jaist.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz


五.添加zabbix用户和组

    [sjwl@zabbix-server ~]# groupadd -g 201 zabbix
    [sjwl@zabbix-server ~]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix


六.安装zabbix-server端


    [sjwl@zabbix-server ~]# tar xf zabbix-2.4.5.tar.gz
    [sjwl@zabbix-server ~]# cd zabbix-2.4.5
    [sjwl@zabbix-server zabbix-2.4.5]#

     ./configure --prefix=/usr/local/zabbix --enable-server --enable-proxy --enable-agent --with-mysql=/usr/bin/mysql_config --with-net-snmp --with-libcurl

   [sjwl@zabbix-server zabbix-2.4.5]# make &&   make install


   #创建zabbix数据库以及相关表
   [sjwl@zabbix-server zabbix-2.4.5]# mysql -e "create database zabbix default charset utf8;"
   [sjwl@z-server zabbix-2.4.5]# mysql -e "grant all on zabbix.* to zabbix@localhost identified by ‘zabbix‘;"
   [sjwl@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix zabbix<./database/mysql/schema.sql
   [sjwl@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix zabbix<./database/mysql/images.sql
   [sjwl@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix zabbix<./database/mysql/data.sql

   #配置软连接和启动文件信息
   [sjwl@zabbix-server zabbix-2.4.5]# mkdir /var/log/zabbix
   [sjwl@zabbix-server zabbix-2.4.5]# chown zabbix.zabbix /var/log/zabbix
   [sjwl@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
   [sjwl@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/bin/* /usr/bin/
   [sjwl@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/sbin/* /usr/sbin/ 
   [sjwl@zabbix-server zabbix-2.4.5]# cp /root/zabbix-2.4.5/misc/init.d/fedora/core/zabbix_* /etc/init.d
   [sjwl@zabbix-server zabbix-2.4.5]# chmod 755 /etc/init.d/zabbix_*

   #修改/etc/init.d目录下的zabbix_server和zabbix_agentd启动文件
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g"                    /etc/init.d/zabbix_server
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g"                     /etc/init.d/zabbix_agentd

  #修改/etc/zabbix/zabbix_server.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@DBUser=root@DBUser=zabbix@g"                                                                                                       /etc/zabbix/zabbix_server.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@#DBPassword=@DBPassword=zabbix@g"                                                                                            /etc/zabbix/zabbix_server.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@# DBPassword=@DBPassword=zabbix@g"                                                                                            /etc/zabbix/zabbix_server.conf

  #修改/etc/zabbix/zabbix_agentd.conf,这里的IP地址写的是zabbix_server的IP地址,即192.168.93.126
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@Server=127.0.0.1@Server=127.0.0.1,192.168.3.28@g"                                                                            /etc/zabbix/zabbix_agentd.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@ServerActive=127.0.0.1@ServerActive=$IP:10051@g"                                                                            /etc/zabbix/zabbix_agentd.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i                                                                                             "s@tmp/zabbix_agentd.log@var/log/zabbix/zabbix_agentd.log@g" /etc/zabbix/zabbix_agentd.conf
   [sjwl@zabbix-server zabbix-2.4.5]# sed -i "s@^#    UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf

  #复制zabbix站点的文件到/var/www/html目录下
   [sjwl@zabbix-server zabbix-2.4.5]# cp -r /root/zabbix-2.4.5/frontends/php/ /var/www/html/zabbix/
   [sjwl@zabbix-server zabbix-2.4.5]# chown -R apache.apache /var/www/html/zabbix/

   [sjwl@zabbix-server zabbix-2.4.5]# chkconfig zabbix_server on
   [sjwl@zabbix-server zabbix-2.4.5]# chkconfig zabbix_agentd on
   [sjwl@zabbix-server zabbix-2.4.5]# service zabbix_server start
   Starting zabbix_server:                                    [  OK  ]
   [sjwl@zabbix-server zabbix-2.4.5]# service zabbix_agentd start
   Starting zabbix_agentd:                                   [  OK  ]


PS:以上配置是在Server上同时配置了agent,另外mysql也部署在本机,如果mysql不在本机,以上配置要做相应调整,如:mysql的用户zabbix授权时指定的主机IP

如果某些模块没加重新YUM安装,再编译一次后需要服务器重启 (小编这里php-bcmath 开始没加上)



七.通过web站点配置zabbix


    以上步骤配置完后通过http://192.168.93.126/zabbix/setup.php网页端进行后续配置 

    1.安装界面
金庸武功之“黯然销魂掌”---zabbix实现微信报警
















   2.PHP配置检查界面,结果是OK表示正常,如果是fail状态,请修改相关的php配置参数,并重启httpd服务

金庸武功之“黯然销魂掌”---zabbix实现微信报警

 3.这里的数据库相关信息,在上文中有配置,具体请查看上文

金庸武功之“黯然销魂掌”---zabbix实现微信报警

  4.填写zabbix的server地址,我这里填写的是本机的IP地址192.168.3.28

金庸武功之“黯然销魂掌”---zabbix实现微信报警

 5.最后配置结果预览

金庸武功之“黯然销魂掌”---zabbix实现微信报警


6.安装完成

金庸武功之“黯然销魂掌”---zabbix实现微信报警


八.访问zabbix的web管理界面

    默认用户名:admin,密码:zabbix

金庸武功之“黯然销魂掌”---zabbix实现微信报警


.在client端192.168.3.29安装zabbix

   安装基础软件包

    [sjwl@zabbix-c1 ~]# yum install wget vim tree gcc gcc-c++ -y

    

   安装zabbix_agentd

   [sjwl@zabbix-c1 ~]# groupadd  -g  201  zabbix
   [sjwl@zabbix-c1 ~]# useradd  -g  zabbix -u  201 -s /sbin/nologin zabbix 
   [sjwl@zabbix-c1 ~]# tar xf zabbix-2.4.5.tar.gz 
   [sjwl@zabbix-c1 ~]# cd zabbix-2.4.5

   #开始编译安装zabbix客户端
   [sjwl@zabbix-c1 zabbix-2.4.5]# ./configure --prefix=/usr/local/zabbix --enable-agent
   [sjwl@zabbix-c1 zabbix-2.4.5]# make && make install

   #创建zabbix的日志目录
   [sjwl@zabbix-c1 zabbix-2.4.5]# mkdir /var/log/zabbix
   [sjwl@zabbix-c1 zabbix-2.4.5]# chown zabbix.zabbix /var/log/zabbix

   #复制zabbix_agentd启动文件到/etc/init.d目录下
   [sjwl@zabbix-c1 zabbix-2.4.5]# cp misc/init.d/fedora/core/zabbix_agentd  /etc/init.d/
   [sjwl@zabbix-c1 zabbix-2.4.5]# chmod 755 /etc/init.d/zabbix_agentd

   #禁止iptables、关闭Selinux

    service iptables stop

    chkconfig iptables off

    vi /etc/sysconfig/selinux  (需要重启服务器)

    SELINUX=disabled


   #修改启动文件和配置软连接
    [sjwl@zabbix-c1 zabbix-2.4.5]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g"                                                                           /etc/init.d/zabbix_agentd
    [sjwl@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
    [sjwl@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/bin/*  /usr/bin
    [sjwl@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/sbin/*  /usr/sbin/

   #/etc/zabbix/zabbix_agentd.conf,这里的IP地址写的是zabbix_server端的IP地址
    [sjwl@zabbix-c1 zabbix-2.4.5]# sed -i "s@Server=127.0.0.1@Server=192.168.93.126@g"                                                                                          /etc/zabbix/zabbix_agentd.conf
    [sjwl@zabbix-c1 zabbix-2.4.5]# sed -i "s@ServerActive=127.0.0.1@ServerActive=192.168.93.126:10051@g"                                                          /etc/zabbix/zabbix_agentd.conf
    [sjwl@zabbix-c1 zabbix-2.4.5]# sed -i   "s@tmp/zabbix_agentd.log@var/log/zabbix/zabbix_agentd.log@g"  /etc/zabbix/zabbix_agentd.conf
    [sjwl@zabbix-c1 zabbix-2.4.5]# sed -i "s@^# UnsafeUserParameters=0@UnsafeUserParameters=1\n@g"                                                          /etc/zabbix/zabbix_agentd.conf

    #设置zabbix_agentd开机自动启动,并启动zabbix_agentd服务
    [sjwl@zabbix-c1 zabbix-2.4.5]# chkconfig zabbix_agentd on
    [sjwl@zabbix-c1 zabbix-2.4.5]# service zabbix_agentd start
    Starting zabbix_agentd:                                    [  OK  ]


十.web界面配置监控项

Configuration→Hosts→Create host

金庸武功之“黯然销魂掌”---zabbix实现微信报警金庸武功之“黯然销魂掌”---zabbix实现微信报警

此处有2个主意:a.hostname 要填被监控端的hostname,此处是client,否则可能报错

                             b.Agent interfaces 处的ip address填被监控端ip,此处为192.168.93.125

金庸武功之“黯然销魂掌”---zabbix实现微信报警



然后点击Configuration→Hosts的template增加模板(select)

金庸武功之“黯然销魂掌”---zabbix实现微信报警


选择ping linux主机2个选项,这里只是简单的测试,后期可以自己加items

金庸武功之“黯然销魂掌”---zabbix实现微信报警


加完后点击Configuration→Hosts效果,Z变绿就OK了



金庸武功之“黯然销魂掌”---zabbix实现微信报警

至此zabbix基础搭建完成,接下来是重点微信报警


十一.设置微信企业号


https://qy.weixin.qq.com/ 这个地址申请企业号 按照步骤一步步来就行了


登陆后可以可以看到如下:

金庸武功之“黯然销魂掌”---zabbix实现微信报警

进入“通讯录”,点击“组织架构”旁边的加号,点击“新增成员”

注:这里的账号相当于你的企业账号,与微信号无关。

必须先在此处创建用户,并且填写正确的微信号或者手机号,才可通过扫描二维码关注该企业号

我这里是mengxl@shengjing360.com(这个会在后面脚本参数里用到)


金庸武功之“黯然销魂掌”---zabbix实现微信报警



关注企业号的方法:点击左侧的“设置”-二维码,使用微信扫一扫扫描二维码


金庸武功之“黯然销魂掌”---zabbix实现微信报警



点击左侧列的“应用中心”,点击“我的应用”

金庸武功之“黯然销魂掌”---zabbix实现微信报警



这里要记住一个值:应用ID



设置-功能设置-权限管理-新建管理组

管理员必须事先已经关注了企业号,并且已经设置好邮箱地址

金庸武功之“黯然销魂掌”---zabbix实现微信报警


增加完的系统组:

注意应用权限,通讯录权限,

注意:这里要记录下来下面的CorpIDSecret

金庸武功之“黯然销魂掌”---zabbix实现微信报警




下面是重点了:

http://qydev.weixin.qq.com/debug     微信企业号接口调试工具(看看接口是否能调用成功)

这里的CorpIDSecret填上,就会出现access_token

金庸武功之“黯然销魂掌”---zabbix实现微信报警



然后接口类型换成发送消息

金庸武功之“黯然销魂掌”---zabbix实现微信报警

这里的access_token已经在上一步获得了,重点是body,经过看官方给的格式小编总结如下:


{

   "touser": "mengxl@shengjin360.com",

   "toparty": " PartyID1 | PartyID2 ",

   "totag": " TagID1 | TagID2 ",

   "msgtype": "text",

   "agentid": 1,

   "text": {

       "content": "lala(http://xxxxx)"

   },

   "safe":"0"

}

这里需要大家把touser的值(mengxl@shengjin360.com)换成自己的员工账号

然后大家就可以在微信企业号收到消息了,内容是"lala(http://xxxxx

以上证明接口调用没问题了,接下来就该上脚本了


首先:脚本放什么位置

             /usr/local/zabbix/share/zabbix/alertscripts

            chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh  

   chmod +x /usr/local/zabbix/share/zabbix/alertscripts/weixin.sh

好了,上正菜:


#!/bin/bash

###SCRIPT_NAME:weixin.sh###

###send message from weixin for zabbix monitor###

###cuiss###

###V1-2016-01-01###


CropID=wx5821c208b8ce2a6c

Secret=IzUkdDgMdlPC9XCQNO0TcEIMhPGy9p8D9douO3t6xf2yHvD2Rd-7VUS_QMTAqDXB

GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" 

Gtoken=$(/usr/bin/curl  $GURL -H "DNT: 1" -H "Accept-Encoding: gzip, deflate" -H "Accept-Language: zh-CN,zh;q=0.8" -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 BIDUBrowser/8.1 Safari/537.36" -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8" -H "X-DevTools-Emulate-Network-Conditions-Client-Id: B546FC80-414C-403F-95F0-EB0F70E58EF7" -H "Connection: keep-alive" -H "Cache-Control: max-age=0" --compressed | awk -F \" ‘{print $4}‘)


PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"

function body() {

        local int appId=1                        

        local userId=$1                         

        local partyId=1                    

        local tag=1

        local msg=$(echo "$@" | cut -d" " -f3-) 

printf ‘{\n‘

        printf ‘\t"touser":"‘"$userId"\"",\n"

        printf ‘\t"toparty":"‘"$partyId"\"",\n"

        printf ‘\t"msgtype": "text",‘"\n"

        printf ‘\t"totag":"‘"$tag"\"",\n"

        printf ‘\t"agentid":"‘"$appId"\"",\n"

        printf ‘\t"text":{\n‘

        printf ‘\t\t"content":"‘"$msg"\"

        printf ‘\n\t},\n‘

        printf ‘\t"safe":"0"\n‘

        printf ‘}\n‘

}

body $1 $2 $3

/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL


有人说了,你这不是和网上的一样的么(要一样就好了)其实就是网上的脚本少了个totag

您还别不信邪,少了这个您就测试通不过。

测试方法:

          ./weixin.sh mengxl@shengjing360.com 1 test

  

mengxl@shengjing360.com 是用户账号(不是微信号,是你在企业号里的名字)

1 这是部门的ID(或者是应用ID,我的都是1)

test:是你想发的内容

[root@server alertscripts]# ./weixin.sh mengxl@shengjing360.com 1 kk

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

101   101  101   101    0     0    197      0 --:--:-- --:--:-- --:--:--  2061

{

"touser":"mengxl@shengjing360.com",

"toparty":"1",

"msgtype": "text",

"totag":"1",

"agentid":"1",

"text":{

"content":"kk"

},

"safe":"0"

}

{"errcode":0,"errmsg":"ok","invaliduser":"all user invalid","invalidparty":"all party invalid"}[root@server alertscripts]# 


出现以上内容说明脚本执行成功,你的微信企业号会收到你发的报警内容,至此我们成功了多一半了*..*


接下来我们要做的就是在web界面设置报警媒介类型和触发动作了


点击管理(Administration)-媒体类型(Mediatypes)-创建媒体类型(Create media type)


金庸武功之“黯然销魂掌”---zabbix实现微信报警


金庸武功之“黯然销魂掌”---zabbix实现微信报警


金庸武功之“黯然销魂掌”---zabbix实现微信报警

下一步,点击点击管理(Administration)-Users Create user

金庸武功之“黯然销魂掌”---zabbix实现微信报警


金庸武功之“黯然销魂掌”---zabbix实现微信报警


填完先别点底下的add ,而是点User右边的Media

金庸武功之“黯然销魂掌”---zabbix实现微信报警

Media点add 

type选刚才定义的weixin 

send to :填你的微信号(别告诉我你不知道自己的微信号,哈哈,小编当时就不知道,土鳖的。。。)


接下来在permissions中把user_type改成超级管理员

金庸武功之“黯然销魂掌”---zabbix实现微信报警






到此user增加完毕了


下面一步是创建触发动作

金庸武功之“黯然销魂掌”---zabbix实现微信报警



金庸武功之“黯然销魂掌”---zabbix实现微信报警

Host:{HOST.NAME}

Time:{EVENT.DATE}{EVENT.TIME}

Status:{TRIGGER.STATUS}

Event:{TRIGGER.NAME}

 

勾选下面的故障恢复信息(Recoverymessage)并在Recovery message中填写:

Serverrecovered.

Host:{HOST.NAME}

Time:{EVENT.DATE}{EVENT.TIME}

Status:{TRIGGER.STATUS}

Event:{TRIGGER.NAME}

 

这样当服务器恢复后,可以收到一条以Serverrecovered开头的信息,省去了大半夜打车跑公司之苦。

 

条件(Conditions)无视。

这里有个坑,必须填完下面operations里的选项才能ADD

金庸武功之“黯然销魂掌”---zabbix实现微信报警



在填完operations里的选项时先按里面的add再按外面的add,否则会报错


至此配置完毕,现在关闭被监控机。

[root@Jewel~]# service network stop

等一会,若微信收到消息,则配置成功。


本文出自 “冷月葬玉魂” 博客,请务必保留此出处http://mxlmgl.blog.51cto.com/9834691/1831695

金庸武功之“黯然销魂掌”---zabbix实现微信报警

上一篇:微信支付对账单下载


下一篇:微信活动——微信房产经纪公司评比活动