一.部署环境
系统:CentOS 6.6x64 最小化安装Server:192.168.8.201 Client:192.168.3.202
二.基础软件包安装
在 server 安装基础软件包,这里的环境使用 yum 安装,如果使用源码安装也是可以的。
启动 httpd、mysql 并设置成开机自动启动
在 iptables 中放行 80,10050,10051 端口。
[root@zabbix ~]# 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
[root@zabbix-server ~]# service httpd start
[root@zabbix-server ~]# service mysqld start
[root@zabbix-server ~]# chkconfig httpd on
[root@zabbix-server ~]# chkconfig mysqld on
[root@zabbix-server ~]# iptables -I INPUT -p tcp -m multiport --destination-port
80,10050:10051 -j ACCEPT
#查看防火墙结果
[root@zabbix-server ~]# 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 规则
[root@zabbix-server ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
三.配置 PHP 参数
zabbix 的运行需要特定的 php 参数支持,修改如下
[root@zabbix-server ~]# sed -i "s@;date.timezone =@date.timezone = Asia/Shanghai@g"
/etc/php.ini
[root@zabbix-server ~]# sed -i "s@max_execution_time = 30@max_execution_time = 300@g"
/etc/php.ini
[root@zabbix-server ~]# sed -i "s@post_max_size = 8M@post_max_size = 32M@g" /etc/php.ini
[root@zabbix-server ~]# sed -i "s@max_input_time = 60@max_input_time = 300@g"
/etc/php.ini
[root@zabbix-server ~]# sed -i "s@memory_limit = 128M@memory_limit = 128M@g"
/etc/php.ini
[root@zabbix-server ~]# sed -i "s@;mbstring.func_overload = 0@ambstring.func_overload =
2@g" /etc/php.ini
修改 httpd 的 FQDN 错误,重启 httpd 服务
四.下载 zabbix-2.4.5.tar.gz
五.添加 zabbix 用户和组
六.安装 zabbix-server 端
[root@zabbix-server ~]# echo "ServerName localhost:80" >>/etc/httpd/conf/httpd.conf
[root@zabbix-server ~]# /etc/init.d/httpd restart
Stopping httpd: [ OK ]
Starting httpd: [ OK ]
[root@zabbix-server ~]# wget –x
http://sourceforge.net/projects/zabbix/files/latest/download/zabbix-2.4.5.tar.gz
[root@zabbix-server ~]# groupadd -g 201 zabbix
[root@zabbix-server ~]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix
[root@zabbix-server ~]# tar xf zabbix-2.4.5.tar.gz
[root@zabbix-server ~]# cd zabbix-2.4.5
[root@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
[root@zabbix-server zabbix-2.4.5]# make && make install
#创建 zabbix 数据库以及相关表
[root@zabbix-server zabbix-2.4.5]# mysql -e "create database zabbix default charset utf8;"
[root@zabbix-server zabbix-2.4.5]# mysql -e "grant all on zabbix.* to zabbix@localhost
identified by 'zabbix';"
[root@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix
zabbix<./database/mysql/schema.sql
[root@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix
zabbix<./database/mysql/images.sql
[root@zabbix-server zabbix-2.4.5]# mysql -uzabbix -pzabbix zabbix<./database/mysql/data.sql
#配置软连接和启动文件信息
[root@zabbix-server zabbix-2.4.5]# mkdir /var/log/zabbix
[root@zabbix-server zabbix-2.4.5]# chown zabbix.zabbix /var/log/zabbix
[root@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
[root@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/bin/* /usr/bin/
[root@zabbix-server zabbix-2.4.5]# ln -s /usr/local/zabbix/sbin/* /usr/sbin/
[root@zabbix-server zabbix-2.4.5]# cp /root/zabbix-2.4.5/misc/init.d/fedora/core/zabbix_*
/etc/init.d
[root@zabbix-server zabbix-2.4.5]# chmod 755 /etc/init.d/zabbix_*
#修改/etc/init.d 目录下的 zabbix_server 和 zabbix_agentd 启动文件
[root@zabbix-server zabbix-2.4.5]# sed -i
"s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g" /etc/init.d/zabbix_server
[root@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
[root@zabbix-server zabbix-2.4.5]# sed -i "s@DBUser=root@DBUser=zabbix@g"
/etc/zabbix/zabbix_server.conf
[root@zabbix-server zabbix-2.4.5]# sed -i "s@#DBPassword=@DBPassword=zabbix@g"
/etc/zabbix/zabbix_server.conf
[root@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.8.201
[root@zabbix-server zabbix-2.4.5]# sed -i
"s@Server=127.0.0.1@Server=127.0.0.1,192.168.8.201@g" /etc/zabbix/zabbix_agentd.conf
[root@zabbix-server zabbix-2.4.5]# sed -i
"s@ServerActive=127.0.0.1@ServerActive=$IP:10051@g" /etc/zabbix/zabbix_agentd.conf
[root@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
[root@zabbix-server zabbix-2.4.5]# sed -i "s@^#
UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
#复制 zabbix 站点的文件到/var/www/html 目录下
[root@zabbix-server zabbix-2.4.5]# cp -r /root/zabbix-2.4.5/frontends/php/
/var/www/html/zabbix/
[root@zabbix-server zabbix-2.4.5]# chown -R apache.apache /var/www/html/zabbix/
[root@zabbix-server zabbix-2.4.5]# chkconfig zabbix_server on
[root@zabbix-server zabbix-2.4.5]# chkconfig zabbix_agentd on
[root@zabbix-server zabbix-2.4.5]# service zabbix_server start
Starting zabbix_server: [ OK ]
[root@zabbix-server zabbix-2.4.5]# service zabbix_agentd start
Starting zabbix_agentd: [ OK ]
七.通过 web 站点配置 zabbix
以上步骤配置完后通过 http://192.168.8.201/zabbix/setup.php 网页端进行后续配置
1.安装界面
2.PHP 配置检查界面,结果是 OK 表示正常,如果是 fail 状态,请修改相关的 php 配置参数,并重启
httpd 服务
3.这里的数据库相关信息,在上文中有配置,具体请查看上文
4.填写 zabbix 的 server 地址,我这里填写的是本机的 IP 地址 192.168.8.201
5.最后配置结果预览
6.安装完成
八.访问 zabbix 的 web 管理界面
安装完成后,通过 http://192.168.8.201/zabbix/index.php#就能直接访问 web 管理界面 默认用户名:admin,密码:zabbix
九.调整 zabbix 语言
十.zabbix 语言设置成中文后,有乱码解决如下
1.从 windows 下控制面板->字体->选择一种中文字库例如“楷体”2.将字体上传至/var/www/html/zabbix/fonts 目录下
3.修改 zabbix 页面管理的中文字体设置
[root@zabbix-server zabbix-2.4.5]# vim /var/www/html/zabbix/include/defines.inc.php
#修改如下 2 行
define('ZBX_FONT_NAME', 'simkai');
define('ZBX_GRAPH_FONT_NAME', 'simkai');
修改后的 zabbix 界面。
十一.修改完以上步骤后,zabbix 界面的历史记录还是乱码,这是由于 mysql 的数据库字符集导致的,解 决办法如下
1.备份 zabbix 数据库,并修改备份下来的数据文件
[root@zabbix-server ~]# mysqldump zabbix >zabbix.sql
[root@zabbix-server ~]# sed -i 's/latin1/utf8/g' zabbix.sql
2.删除 zabbix 数据库
mysql> drop database zabbix;
Query OK, 104 rows affected (0.42 sec)
3.关闭 mysql 数据库,设置默认字符集
[root@zabbix-server ~]# service mysqld stop
Stopping mysqld: [ OK ]
#在 mysql 配置文件中添加字符集参数
[root@zabbix-server ~]# vim /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
default-character-set = utf8
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
4.启动 mysql 并恢复 zabbix 数据库
[root@zabbix-server ~]# service mysqld start
Starting mysqld: [ OK ]
[root@zabbix-server ~]# mysql
mysql> create database zabbix;
Query OK, 1 row affected (0.00 sec)
mysql> show create database zabbix;
+----------+-----------------------------------------------------------------+
| Database | Create Database |
+----------+-----------------------------------------------------------------+
| zabbix | CREATE DATABASE `zabbix` /*!40100 DEFAULT CHARACTER SET utf8 */ |
+----------+-----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| test |
| zabbix |
+--------------------+
4 rows in set (0.00 sec)
mysql> use zabbix;
Database changed
mysql> source zabbix.sql;
5.查看修改后的结果
十二.在 client 端 192.168.8.202 安装 zabbix
[root@zabbix-c1 ~]# yum install wget vim tree gcc gcc-c++ -y
安装 zabbix_agentd
[root@zabbix-c1 ~]# wget –x http://sourceforge.net/projects/zabbix/files/latest/download/zabbix-2.4.5.tar.gz
[root@zabbix-c1 ~]# groupadd -g 201 zabbix
[root@zabbix-c1 ~]# useradd -g zabbix -u 201 -s /sbin/nologin zabbix
[root@zabbix-c1 ~]# tar xf zabbix-2.4.5.tar.gz
[root@zabbix-c1 ~]# cd zabbix-2.4.5
#开始编译安装 zabbix 客户端
[root@zabbix-c1 zabbix-2.4.5]# ./configure --prefix=/usr/local/zabbix --enable-agent
[root@zabbix-c1 zabbix-2.4.5]# make && make install
#创建 zabbix 的日志目录
[root@zabbix-c1 zabbix-2.4.5]# mkdir /var/log/zabbix
[root@zabbix-c1 zabbix-2.4.5]# chown zabbix.zabbix /var/log/zabbix
#复制 zabbix_agentd 启动文件到/etc/init.d 目录下
[root@zabbix-c1 zabbix-2.4.5]# cp misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
[root@zabbix-c1 zabbix-2.4.5]# chmod 755 /etc/init.d/zabbix_agentd
#在 iptables 中放行 10050 和 10051 端口
[root@zabbix-c1 zabbix-2.4.5]# iptables -I INPUT -p tcp -m multiport --dports 10050:10051 -j
ACCEPT
[root@zabbix-c1 zabbix-2.4.5]# service iptables save #保存 iptables 规则
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]
#查看 iptables 结果
[root@zabbix-c1 zabbix-2.4.5]# 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 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
#修改启动文件和配置软连接
[root@zabbix-c1 zabbix-2.4.5]# sed -i "s@BASEDIR=/usr/local@BASEDIR=/usr/local/zabbix@g"
/etc/init.d/zabbix_agentd
[root@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/etc/ /etc/zabbix
[root@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/bin/* /usr/bin
[root@zabbix-c1 zabbix-2.4.5]# ln -s /usr/local/zabbix/sbin/* /usr/sbin/
#/etc/zabbix/zabbix_agentd.conf,这里的 IP 地址写的是 zabbix_server 端的 IP 地址
[root@zabbix-c1 zabbix-2.4.5]# sed -i "s@Server=127.0.0.1@Server=192.168.8.201@g"
/etc/zabbix/zabbix_agentd.conf
[root@zabbix-c1 zabbix-2.4.5]# sed -i
"s@ServerActive=127.0.0.1@ServerActive=192.168.8.201:10051@g"
/etc/zabbix/zabbix_agentd.conf
[root@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
[root@zabbix-c1 zabbix-2.4.5]# sed -i "s@^#
UnsafeUserParameters=0@UnsafeUserParameters=1\n@g" /etc/zabbix/zabbix_agentd.conf
#设置 zabbix_agentd 开机自动启动,并启动 zabbix_agentd 服务
[root@zabbix-c1 zabbix-2.4.5]# chkconfig zabbix_agentd on
[root@zabbix-c1 zabbix-2.4.5]# service zabbix_agentd start
Starting zabbix_agentd: [ OK ]
#Web 配置客户端
http://192.168.8.201/zabbix/dashboard.php
然后填写主机名称和 ip 地址(选择群组否则不能添加),点击确定。
组态---主机---创建主机
然后可以选择监控的模块。
选择,后添加最后更新。 监控中----图形
代表监控成功,流量图有了。 已经完成客户端监控。
十三.邮件报警(使用外部邮箱账号发送报警邮件设置)service postfix stop
chkconfig postfix off
yum install mailx –y
vim /etc/mail.rc #在最后增加
set from=xxxxxx@qq.com smtp=smtp.qq.com
set smtp-auth-user=xxxxxx smtp-auth-password=xxxxxx
set smtp-auth=login
echo "zabbix test mail" |mail -s "zabbix" 18358176531@126.com #测试发送邮件
测试成功。
1.打开 zabbix web 页面管理—示警介类型—创建媒体类型
名称:sendmail类型:脚本
脚本名称:sendmail.sh已启用:勾选
2.设置报警用户和邮箱地址 管理—用户
设置两个邮箱关联至 admin 用户。
最后一定要更新才会保存。
3.设置 zabbix 触发报警的动作 组态-动作-创建动作
从上往下一个一个选择。
最后添加即可。
4.添加 zabbix 服务端邮件发送脚本
cd /usr/local/zabbix/share/zabbix/alertscripts vi sedmail.sh #编辑,添加以下代码
#!/bin/sh
echo "$3" | mail -s "$2" $1
:wq! #保存退出
chown zabbix.zabbix /usr/local/zabbix/share/zabbix/alertscripts/sedmail.sh
#设置脚本所有者为 zabbix 用户
chmod +x /usr/local/zabbix/share/zabbix/alertscripts/sedmail.sh
#设置脚本执行权限
5.测试 zabbix 邮件报警
关闭 zabbix 客户端服务 service zabbix_agentd stop
然后查看邮件,会受到报警操作。
再开启 Zabbix 客户端服务 service zabbix_agentd start
查看邮箱,会收到恢复邮件
十四.zabbix 微信报警 首先需要申请一个企业号,其实公众号也可以,不过脚本不一样。而且公众号任何人都可以关注,有泄密 的风险。企业号只有指定的人可以关注,安全性较高。
申请企业号,需要一个绑定你本人开户银行卡的微信号。 申请网址 https://qy.weixin.qq.com/
点击“立即注册”。 根据提示注册企业号,到“选择类型”时,选择最右边的企业号。 注意:企业描述中:“报警”是敏感词不能使用。 登录之后,可以看到如下页面
按照下图依次点击。
这里只需要 填写正确的微信号, 账号需要记住,还有微信号,后面需要用到。 保存之后可以看到用户。
注:这里的账号相当于你的企业账号,与微信号无关。
必须先在此处创建用户,并且填写正确的微信号或者手机号,才可通过扫描二维码关注该企业号(知道为 何安全了吧)。
关注企业号的方法:
点击左侧的“设置”-二维码,使用微信扫一扫扫描二维码。
点击左侧列的“应用中心”,点击“我的应用”下面的加号。
填写应用名称,描述。 一切正常的话,点击进入刚才创建的应用。
这里的应用 id 号需要记住。后面需要填写 设置管理员:
设置-功能设置-权限管理-新建管理组
注意:这里要记录下来下面的 CorpID 和 Secret。
现在万事俱备,可以开始编写脚本了。
编写脚本
在/usr/local/zabbix/share/zabbix/alertscripts 目录下新建一个脚本 在目录下创建 wechat.sh 脚本文件。
脚本内容如下:
#!/bin/bash
CropID='wxe46cfc0c07e23' #这个是 CorpID Secret='0fYtetwOKhDOQIVff3QQjoYGUFTrBLlYlGVW_Ct8vShJisK41_GESW' #这个是 Secret GURL="https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=$CropID&corpsecret=$Secret" Gtoken=$(/usr/bin/curl -s -G $GURL | awk -F\" '{print $4}') PURL="https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=$Gtoken"
function body() {
local int AppID=1 ##这个是应用 id local UserID=$1
local PartyID=1
local Msg=$(echo "$@" | cut -d" " -f3-) printf '{\n'
printf '\t"touser": "'"$User"\"",\n" printf '\t"toparty": "'"$PartyID"\"",\n" printf '\t"msgtype": "text",\n'
printf '\t"agentid": "'" $AppID "\"",\n" printf '\t"text": {\n'
printf '\t\t"content": "'"$Msg"\""\n" printf '\t},\n'
printf '\t"safe":"0"\n'
printf '}\n'
}
/usr/bin/curl --data-ascii "$(body $1 $2 $3)" $PURL以上黄色背景都需要输入,填错了就无效。
chown -R zabbix:zabbix /usr/local/zabbix/alertscripts chmod 750 /usr/local/zabbix/alertscripts/wechat.sh执行./wechat.sh 1 1 test 看自己微信是否能收到东西。 如果能的话,继续下一步。反之检查上面有什么问题。
添加触发器
点击管理---媒体类型---创建媒体类型
管理---用户---添加用户
组态---动作---添加动作名称:weixin_action
默认接收人:故障{TRIGGER.STATUS},服务器:{HOSTNAME1}发生: {TRIGGER.NAME}故障!默认信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}告警项目:{TRIGGER.KEY1}问题详情:{ITEM.NAME}:{ITEM.VALUE}当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}事件 ID:{EVENT.ID}
恢复信息:打钩
恢复主旨:恢复{TRIGGER.STATUS}, 服务器:{HOSTNAME1}: {TRIGGER.NAME}已恢复!恢复信息:
告警主机:{HOSTNAME1}
告警时间:{EVENT.DATE} {EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息: {TRIGGER.NAME}告警项目:{TRIGGER.KEY1}问题详情:{ITEM.NAME}:{ITEM.VALUE}当前状态:{TRIGGER.STATUS}:{ITEM.VALUE1}事件 ID:{EVENT.ID}
已启用:打钩
最后测试,是否会微信报警。 进去客户端,关闭 zabbix_agentd
告警已经成功。