Zabbix概述

Zabbix是一个高度集成的企业级开源网络监控解决方案,与Cacti、Nagios类似,提供分布式监控以及集中的Web管理界面。被监控对象只要支持SNMP协议或者运行Zabbix_agents代理程序即可。Zabbix具备常见商业监控软件所具备的功能:主机性能监控、网络设备性能监控、数据库性能监控、ftp等等通用协议的监控,能够利用灵活的可定制警告机制,允许用户对事件发送基于E-mail的警告,可以保证相关维护人员对问题作出快速响应,还可以利用存储数据提供杰出的报表及实时的图形化数据处理,实现对Linux、Windows主机的7*24小时集中监控,监控的项目可包括CPU、内存、磁盘、网卡流量、服务可用性等各种资源。

实验环境

zabbix服务器:192.168.10.128
linux客户机:192.168.10.142

安装LAMP

为访问Zabbix的web页面

1、安装lamp

yum install -y \
httpd \
mariadb-server mariadb \
php \
php-mysql \
php-gd \
libjpeg* \
php-ldap \
php-odbc \
php-pear \
php-xml \
php-xmlrpc \
php-mhash             //安装lamp

2、修改httpd.conf文件

vim /etc/httpd/conf/httpd.conf

ServerName www.xxy.com            //域名

DirectoryIndex index.html index.php           //支持PHP首页

3、修改时区

vi /etc/php.ini

date.timezone = PRC      //设置中国时区

4、关闭防火墙及SElinux,开启httpd及数据库服务

systemctl stop firewalld.service
setenforce 0        //关闭防火墙及SElinux

systemctl start httpd.service
systemctl start mariadb.service             //开启httpd及数据库服务

mysql_secure_installation               //数据库配置

netstat -ntap | egrep '(80|3306)'               //查看80及3306端口

5、编辑首页文件并访问测试

vim /var/www/html/index.php



http://192.168.10.128/              //浏览器输入测试

部署Zabbix集中监控系统_第1张图片

6、登录数据库,提权

mysql -u root -p

CREATE DATABASE zabbix character set utf8 collate utf8_bin;       //创建zabbix数据库,并设置字符集
GRANT all privileges ON *.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123';        //任何主机上都使用zabbix管理所有库与表,密码为admin123
flush privileges;

7、检查数据库是否可用

修改首页文件,改为如下内容

vim /var/www/html/index.php

Success!!";
else echo "Fail!!";
mysql_close();
?>

http://192.168.10.128/              //浏览器输入测试

部署Zabbix集中监控系统_第2张图片

部署Zabbix服务器

1、安装zabbix服务程序

yum install php-bcmath php-mbstring -y
rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm       //会自动生成yum源文件,需要在联网状态
yum install zabbix-server-mysql zabbix-web-mysql -y

2、生成数据库文件

zcat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p  zabbix      //生成数据库文件,密码为admin123 

3、修改zabbix配置文件

grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf 

38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/var/run/zabbix/zabbix_server.pid
82:SocketDir=/var/run/zabbix
101:DBName=zabbix
117:DBUser=zabbix
125:DBPassword=admin123        //只修改本行,其余不用修改
356:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
474:Timeout=4
517:AlertScriptsPath=/usr/lib/zabbix/alertscripts
528:ExternalScripts=/usr/lib/zabbix/externalscripts
564:LogSlowQueries=3000

部署Zabbix集中监控系统_第3张图片

vim /etc/zabbix/zabbix_server.conf 

DBPassword=admin123

部署Zabbix集中监控系统_第4张图片

vim /etc/httpd/conf.d/zabbix.conf        //修改时区

php_value date.timezone Asia/Shanghai

部署Zabbix集中监控系统_第5张图片

vim /usr/share/zabbix/include/defines.inc.php       //修正图表中文乱码

:%s /graphfont/simkai/g     将原本graphfont字体替换成simkai字体

从微软系统下复制相应的字体文件到 /usr/share/zabbix/fonts 目录中,注意字体名称要对应配置文件,且注意大小写
cp simkai.ttf /usr/share/zabbix/fonts/

部署Zabbix集中监控系统_第6张图片

4、开启zabbix-server服务,重启httpd服务

systemctl enable zabbix-server
systemctl start zabbix-server
netstat -anpt | grep zabbix       //监听在10051端口上

systemctl restart httpd.service

部署Zabbix集中监控系统

5、浏览器访问测试

http://192.168.10.128/zabbix/             //安装后登录 用户名Admin 密码:zabbix

部署Zabbix集中监控系统_第7张图片
部署Zabbix集中监控系统_第8张图片
部署Zabbix集中监控系统_第9张图片
部署Zabbix集中监控系统_第10张图片
部署Zabbix集中监控系统_第11张图片
部署Zabbix集中监控系统_第12张图片
部署Zabbix集中监控系统_第13张图片
部署Zabbix集中监控系统_第14张图片
设置中文环境:Administrator-Users-点击用户-语言中设置
部署Zabbix集中监控系统_第15张图片

配置linux客户机

配置被控服务器,如果服务器也需要被自己监控也需要安装zabbix-agent

1、安装zabbix-agent

rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm         //安装yum源
yum install -y zabbix-agent

2、查看zabbix-agent配置文件

grep -n '^'[a-Z] /etc/zabbix/zabbix_agentd.conf

13:PidFile=/var/run/zabbix/zabbix_agentd.pid
32:LogFile=/var/log/zabbix/zabbix_agentd.log
43:LogFileSize=0
98:Server=192.168.175.155
139:ServerActive=192.168.175.155
150:Hostname=test
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf

部署Zabbix集中监控系统_第16张图片

3、关闭防火墙及SElinux,开启zabbix-agent服务

syatemctl stop firewalld.service
setenforce 0

systemctl enable zabbix-agent.service
systemctl restart zabbix-agent.service
netstat -anpt | grep zabbix         //监听在10050端口

部署Zabbix集中监控系统

zabbix服务端添加被控主机

web页面上操作步骤:配置→主机→创建主机
部署Zabbix集中监控系统_第17张图片
部署Zabbix集中监控系统_第18张图片
模板页需要链接模板,根据需要链接相应的模板,这里我添加了sshd和httpd两个服务
部署Zabbix集中监控系统_第19张图片
部署Zabbix集中监控系统_第20张图片

zabbix服务器配置邮件报警功能

1、安装邮箱服务

yum -y install mailx

2、修改/etc/mail.rc文件

vi /etc/mail.rc     //注意网易邮箱需要开启客户端授权码进行第三方登录

#文件末尾添加
set from=131********@139.com        //实际不是*号
set smtp=smtp.139.com
set smtp-auth-user=131********@139.com
set smtp-auth-password=邮箱密码
set smtp-auth=login

部署Zabbix集中监控系统_第21张图片

3、测试邮箱发送功能

echo "hello world" | mail -s "testmail" 131********@139.com        //测试发信是否正常

部署Zabbix集中监控系统_第22张图片

4、编写发邮件脚本

cd /usr/lib/zabbix/alertscripts

vi mailx.sh //编写发邮件脚本

#!/bin/bash
#send mail
messages=`echo $3 | tr '\r\n' '\n'`
subject=`echo $2 | tr '\r\n' '\n'`
echo "${messages}" | mail -s "${subject}" $1 >>/tmp/mailx.log 2>&1

touch /tmp/mailx.log     //创建日志文件 
chown -R zabbix.zabbix  /tmp/mailx.log       //设置日志文件属主属组
chmod +x /usr/lib/zabbix/alertscripts/mailx.sh       //给发邮件脚本执行权限
chown -R zabbix.zabbix /usr/lib/zabbix/        //设置/usr/lib/zabbix/目录属主属组

5、发邮件测试

./mailx.sh 131********@139.com "主题" "内容"       //测试发邮件脚本是否可以正常工作

./mailx.sh 131********@139.com "test" "this is test" 

部署Zabbix集中监控系统_第23张图片

部署邮件报警

在zabbix服务器web页面上配置

1、设置报警媒体类型

管理→报警媒体类型→创建媒体类型

名称:Mail-Test
类型:脚本
脚本名称:mailx.sh
脚本参数:         //新增以下三个参数

{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}

部署Zabbix集中监控系统_第24张图片
部署Zabbix集中监控系统_第25张图片

2、设置报警媒介

管理→用户→点击Admin→报警媒介

类型:Mail-Test      //调用上面设置的脚本
收件人:131********@139.com
其它默认保存

部署Zabbix集中监控系统_第26张图片
部署Zabbix集中监控系统_第27张图片
部署Zabbix集中监控系统_第28张图片

3、设置出问题后的动作

配置→动作→创建动作→删除默认标签,修改触发条件

名称:Mailx
条件 A 主机群组=Linux servers

部署Zabbix集中监控系统_第29张图片
部署Zabbix集中监控系统_第30张图片
部署Zabbix集中监控系统_第31张图片

操作→如下配置

默认操作步骤持续时间 60
默认标题: {TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容:

告警主机:{HOST.NAME}
告警  IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件  ID:{EVENT.ID}

操作细节:

步骤:1-3
步骤持续时间:60
操作类型:发送消息
发送到用户:Admin (Zabbix Administrator) 
仅送到:Mail-Test       //一定要配置否则邮件发送不成功

部署Zabbix集中监控系统_第32张图片

恢复操作→如下配置

默认标题:{TRIGGER.STATUS}:{TRIGGER.NAME}
消息内容:

恢复主机:{HOST.NAME}
恢复  IP:{HOST.IP}
恢复时间:{EVENT.DATE}-{EVENT.TIME}
恢复等级:{TRIGGER.SEVERITY}
恢复信息:{TRIGGER.NAME}:{ITEM.VALUE}
恢复  ID:{EVENT.ID}

操作细节:
操作类型:发送消息
发送到用户:Admin (Zabbix Administrator) 
仅送到:Mail-Test          //一定要配置否则邮件发送不成功

部署Zabbix集中监控系统_第33张图片
添加完成
部署Zabbix集中监控系统_第34张图片

4、zabbix服务端与linux客户端分别重启服务

systemctl restart zabbix-server               //zabbix服务端重启zabbix-server
systemctl restart zabbix-agent.service             //linux客户端重启zabbix-agent.service 

5、测试报警

#可以在被控主机上模拟相关参数超过阈值,如磁盘空间。然后验证邮件收发。
systemctl stop httpd.service      //linux客户端上开启了httpd服务,现将其关闭,测试报警邮件的发送

正常监控页面如下
部署Zabbix集中监控系统_第35张图片
被控端关闭httpd服务后出现问题
部署Zabbix集中监控系统_第36张图片
收到邮件提醒
部署Zabbix集中监控系统_第37张图片
被控端开启httpd服务,显示问题已解决
部署Zabbix集中监控系统_第38张图片
问题解决邮件提醒
部署Zabbix集中监控系统_第39张图片