一.部署环境
系统: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网页端进行后续配置
2.PHP配置检查界面,结果是OK表示正常,如果是fail状态,请修改相关的php配置参数,并重启httpd服务
3.这里的数据库相关信息,在上文中有配置,具体请查看上文
4.填写zabbix的server地址,我这里填写的是本机的IP地址192.168.3.28
5.最后配置结果预览
6.安装完成
八.访问zabbix的web管理界面
默认用户名:admin,密码: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
此处有2个主意:a.hostname 要填被监控端的hostname,此处是client,否则可能报错
b.Agent interfaces 处的ip address填被监控端ip,此处为192.168.93.125
然后点击Configuration→Hosts的template增加模板(select)
选择ping linux主机2个选项,这里只是简单的测试,后期可以自己加items
加完后点击Configuration→Hosts效果,Z变绿就OK了
至此zabbix基础搭建完成,接下来是重点微信报警
十一.设置微信企业号
https://qy.weixin.qq.com/ 这个地址申请企业号 按照步骤一步步来就行了
登陆后可以可以看到如下:
进入“通讯录”,点击“组织架构”旁边的加号,点击“新增成员”
注:这里的账号相当于你的企业账号,与微信号无关。
必须先在此处创建用户,并且填写正确的微信号或者手机号,才可通过扫描二维码关注该企业号
我这里是mengxl@shengjing360.com(这个会在后面脚本参数里用到)
关注企业号的方法:点击左侧的“设置”-二维码,使用微信扫一扫扫描二维码
点击左侧列的“应用中心”,点击“我的应用”
这里要记住一个值:应用ID
设置-功能设置-权限管理-新建管理组
管理员必须事先已经关注了企业号,并且已经设置好邮箱地址
增加完的系统组:
注意应用权限,通讯录权限,
注意:这里要记录下来下面的CorpID和Secret。
下面是重点了:
http://qydev.weixin.qq.com/debug 微信企业号接口调试工具(看看接口是否能调用成功)
这里的CorpID和Secret填上,就会出现access_token
然后接口类型换成发送消息
这里的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)
下一步,点击点击管理(Administration)-Users Create user
填完先别点底下的add ,而是点User右边的Media
在Media点add
type选刚才定义的weixin
send to :填你的微信号(别告诉我你不知道自己的微信号,哈哈,小编当时就不知道,土鳖的。。。)
接下来在permissions中把user_type改成超级管理员
到此user增加完毕了
下面一步是创建触发动作
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
在填完operations里的选项时先按里面的add再按外面的add,否则会报错
至此配置完毕,现在关闭被监控机。
[root@Jewel~]# service network stop
等一会,若微信收到消息,则配置成功。
本文出自 “冷月葬玉魂” 博客,请务必保留此出处http://mxlmgl.blog.51cto.com/9834691/1831695