一、Zabbix概述

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

二、Zabbix监控原理

Zabbix主要由zabbix-server和zabbix-agent组成,通过C/S模式采集数据,在通过B/S模式在web端展示和配置。其中zabbxi-server运行在Linux系统上,还需要LAMP平台来承载数据库和web界面。
Zabbix agent需要安装到被监控的主机上,它负责定期收集各项数据,并发送到zabbix server端,zabbix server将数据存储到数据库中,zabbix web根据数据在前端进行展现和绘图。这里agent收集数据分为主动和被动两种模式。
主动模式:agent请求server获取主动的监控项列表,并主动将监控项内需要检测的数据提交给server/proxy。
被动模式:server向agent请求获取监控项的数据,agent接收请求之后返回数据。
当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。
zabbix监控范畴:
   硬件监控 :Zabbix IPMI Interface
   系统监控 :Zabbix Agent Interface
   Java 监控:ZabbixJMX Interface
   网络设备监抟:Zabbix SNMP Interface
   应用服务监控:Zabbix Agent UserParameter
   MySQL 数据库监控:percona-monitoring-pldlgins
   URL监控:Zabbix Web监控
部署Zabbix集中监控系统
部署Zabbix集中监控系统

三、部署Zabbix Server端

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       //yum安装lamp架构
vi /etc/httpd/conf/httpd.conf       //更改apache配置文件

对应修改以下内容
ServerName www.aa.com #修改主机名
DirectoryIndex index.html index.php #添加php格式的网页文件
vi /etc/php.ini //更改php配置文件
mysqli.default_socket = /var/lib/mysql/mysql.sock #加入用于连接数据库的套接字文件
date.timezone = PRC #更改时区

systemctl start httpd.service   //开启http服务
systemctl start mariadb.service //开启mariadb服务
netstat -anpt | grep 80 //查看监听端口
netstat -anpt | grep 3306
mysql_secure_installation   //配置mariadb
mysql -u root -pabc123      //进入数据库
CREATE DATABASE zabbix character set utf8 collate utf8_bin; //创建zabbix数据库
GRANT all ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'admin123'; //为zabbix库授权访问用户
flush privileges;   //刷新权限
vi /var/www/html/index.php      //创建php文件测试数据库连接

添加以下内容
<?php
$link=mysql_connect('192.168.80.100','zabbix','admin123');
if($link) echo "<h1>Success!!</h1>";
else echo "Fail!!";
mysql_close();
?>
Web浏览器访问192.168.80.100
部署Zabbix集中监控系统
2、安装zabbix-server
vi /etc/yum.repos.d/CentOS-Base.repo //添加阿里源
[Ali]
name=CentOS-$releasever - Base
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

yum makecache       //加载加载元数据缓存
yum install -y php-mbstring php-bcmath  //安装必备插件
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         //安装zabbix服务端和web页面支持
cat /usr/share/doc/zabbix-server-mysql-4.0.0/create.sql.gz | mysql -uzabbix -p zabbix   //将数据库文件添加到zabbix库中,注意密码不要输成root的
vi /etc/zabbix/zabbix_server.conf   //修改zabbix_server配置文件

125行下面添加
DBPassword=admin123
grep -n '^'[a-Z] /etc/zabbix/zabbix_server.conf //查看配置文件有效项
部署Zabbix集中监控系统
vi /etc/httpd/conf.d/zabbix.conf //修改zabbix对应web页面配置文件
php_value date.timezone Asia/Shanghai //修改时区并将此行注释去掉

systemctl enable zabbix-server  //开机自启zabbix-server服务
systemctl start zabbix-server       //开启服务
netstat -anpt | grep zabbix  //查看监听端口

部署Zabbix集中监控系统
systemctl restart httpd.service //重启http服务
3、web安装访问并安装
http://192.168.80.100/zabbix/ //安装后登录 用户名Admin 密码:zabbix
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统

四、部署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    //下载zabbix镜像源
yum install -y zabbix-agent //安装zabbix agent端
vi /etc/zabbix/zabbix_agentd.conf   //修改zabbix代理端配置文件

部署Zabbix集中监控系统

systemctl enable zabbix-agent.service   //设置代理端开机自启
systemctl start zabbix-agent.service    //启动服务
netstat -anpt | grep zabbix //查看代理端监听端口

部署Zabbix集中监控系统
2、将代理端添加为被控主机
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统

五、配置邮件报警功能

1、zabbix server端安装邮件模块

yum install mailx -y        //安装邮件报警模块
vi /etc/mail.rc  //配置第三方邮件接收,注意qq邮箱需要开启P0P3/STMP

末行添加
set from=719248211@qq.com
set smtp=smtp.qq.com
set smtp-auth-user=719248211@qq.com
set smtp-auth-password=lsgpdhlbvtlrbcfd #开授权码为qq邮箱P0P3/STMP服务开启后自动生成的
set smtp-auth=login
部署Zabbix集中监控系统
echo "ttttttttttt" | mail -s "testmail" 719248211@qq.com //测试发信正常
部署Zabbix集中监控系统

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/ //更改zabbix用户工作目录权限
./mailx.sh 719248211@qq.com aaa bbb //执行发送邮件脚本程序

部署Zabbix集中监控系统
2、在Zabbix服务端WEB页面配置
管理-》报警媒体类型-》创建媒体类型-》
名称:Mail
类型:脚本
脚本名称:mailx.sh
脚本参数://新增以下三个参数
{ALERT.SENDTO}
{ALERT.SUBJECT}
{ALERT.MESSAGE}
部署Zabbix集中监控系统
管理-》用户-》点击Admin-》报警媒介:
类型:Mail //调用上面创建的媒介br/>收件人:719248211@qq.com
其它默认-添加-更新
部署Zabbix集中监控系统
部署Zabbix集中监控系统
部署Zabbix集中监控系统
配置-》动作-》创建动作-》删除默认标签,修改触发条件
名称:Mailx
条件 A 主机群组=Linux servers
部署Zabbix集中监控系统
操作-》如下配置

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

告警主机:{HOST.NAME}
告警 IP:{HOST.IP}
告警时间:{EVENT.DATE}-{EVENT.TIME}
告警等级:{TRIGGER.SEVERITY}
告警信息:{TRIGGER.NAME}:{ITEM.VALUE}
事件 ID:{EVENT.ID}
部署Zabbix集中监控系统
点击新的-》添加操作细节

操作类型:发送消息
发送到用户:Admin (Zabbix Administrator)
仅送到:Mail //一定要配置否则邮件发送不成功
部署Zabbix集中监控系统
操作-》如下配置

默认标题:{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 //一定要配置否则邮件发送不成功
部署Zabbix集中监控系统

systemctl restart zabbix-server //服务端重启
systemctl restart zabbix-agent.service  //代理端重启

3、测试邮件报警
ifconfig ens33 down //在zabbix agent端停掉网卡
部署Zabbix集中监控系统
ifconfig ens33 up //在zabbix agent端启动网卡
部署Zabbix集中监控系统