在centos6.5上编译安装zabbix2.4
zabbix server安装节点为:192.168.1.36
被监控主机节点为:192.168.1.37
本来想在centos6.5上安装zabbix3.0,没想到装到第一步就进行不下去了,百度、谷歌好半天也没搜到答案,好多人也遇到同样的问题:就是进入zabbix的web页面,第一步点击下一步时,现象是页面刷新后,没有进行下一步,所以,只好作罢,改装了zabbix2.4。
还有一个失败是,本来打算使用企业公众号进行微信的zabbix告警实验,但也是到test时候一直失败,苦于找不到解答,只好采用网上文档较多的使用微信企业号进行zabbix告警实验。
所以,以上是遇到的问题解决不了,只好绕开问题把实验做成功。
zabbix的server端IP:192.168.1.36
zabbix的agent端IP:192.168.1.37
前提是两台主机的防火墙和selinux都关闭:
]# service iptabels stop
]# vim /etc/sysconfig/selinux
SELINUX=disabled
在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并设置成开机自动启动
]# service httpd start
]# service mysqld start
]# chkconfig httpd on
]# chkconfig mysqld on
如果实际生产中设置了iptables,则可参考如下设置:
]# iptables -I INPUT -p tcp -m multiport --destination-port 80,10050:10051 -j ACCEPT
]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 multiport dports 80,10050:10051
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#保存iptables规则
]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
三.配置PHP参数
zabbix的运行需要特定的php参数支持,修改如下
]# sed -i "s@;date.timezone =@date.timezone = Asia/Shanghai@g" /etc/php.ini
]# sed -i "s@max_execution_time = 30@max_execution_time = 300@g" /etc/php.ini
]# sed -i "s@post_max_size = 8M@post_max_size = 32M@g" /etc/php.ini
]# sed -i "s@max_input_time = 60@max_input_time = 300@g" /etc/php.ini
]# sed -i "s@memory_limit = 128M@memory_limit = 128M@g" /etc/php.ini
]# sed -i "s@;mbstring.func_overload = 0@ambstring.func_overload = 2@g" /etc/php.ini
修改httpd的FQDN错误,重启httpd服务
]# echo "ServerName localhost:80" >>/etc/httpd/conf/httpd.conf
]# /etc/init.d/httpd restart
四.下载zabbix-2.4.5.tar.gz
https://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.4.5/zabbix-2.4.5.tar.gz/download?use_mirror=jaist
五.添加zabbix用户和组
]# groupadd -g 201 zabbix
]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix
六.安装zabbix-server端
]# tar xf zabbix-2.4.5.tar.gz
]# cd 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、
]# make && make install
#创建zabbix数据库以及相关表
]# mysql -e "create database zabbix default charset utf8;"
]# mysql -e "grant all on zabbix.* to zabbix@localhost identified by 'zabbix';"
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/schema.sql
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/p_w_picpaths.sql
]# mysql -uzabbix -pzabbix zabbix<./database/mysql/data.sql
#配置软连接和启动文件信息
]# mkdir /var/log/zabbix
]# chown zabbix.zabbix /var/log/zabbix
]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
]# ln -s /usr/local/zabbix/bin*;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
测试方法:
./weixin.sh crystal 1 helloevery
crystal 是用户账号(不是微信号,是你在企业号里的名字)
1 这是部门的ID(或者是应用ID,我的都是1)
test:是你想发的内容
出现以上内容说明脚本执行成功,你的微信企业号会收到你发的报警内容,至此我们成功了多一半了*..*
以上是手机微信收到的内容。
接下来我们要做的就是在web界面设置报警媒介类型和触发动作了
点击管理(Administration)-媒体类型(Mediatypes)-创建媒体类型(Create media type)
填写完后,即可看到示警媒介类型增加了一个weixin。
下一步,点击点击管理(Administration)-Users Create user
下一步,点击点击管理(Administration)-Users Create user
选择用户组:
此时,先不要点击添加,设置示警媒介后再添加。
选择创建的weixin:
在Media点add
类型(ty)pe选刚才定义的weixin
收件人(send to) :填你的微信号
接下来在permissions中把user_type改成超级管理员
点击添加,到此user增加完毕了。
下面一步是创建触发动作
默认信息:
Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}
恢复信息:
Server recovered.
Host:{HOST.NAME}
Time:{EVENT.DATE}{EVENT.TIME}
Status:{TRIGGER.STATUS}
Event:{TRIGGER.NAME}
这样当服务器恢复后,可以收到一条以Serverrecovered开头的信息,能及时知道服务器恢复正常。
条件(Conditions)无视。
注意:必须填完下面operations里的选项才能点击添加(ADD)
在填完操作(operations)里的选项时先按里面的add再按外面的add,否则会报错
至此配置完毕,现在关闭被监控机,等一会,若微信收到消息,则配置成功。
大概等了有不到5分钟,微信报警就收到了。
到此为止,实验大功告成!!
烧香,网上能找到文档且能搞成功!!