初步了解zabbix:

Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。被监控对象只要支持SNMP协议或者运行zabbix_agents代理程序即可。
agent端:主机通过安装agent方式采集数据。
server端:通过收集agent发送的数据,写入数据库(MySQL,ORACLE等),再通过php+apache在web前端展示.

SNMP:

SNMP是英文"Simple Network Management Protocol"的缩写,中文意思是"简单网络管理协议"。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。

zabbix工作原理:

Agentd安装在被监控的主机上,Agent负责定期收集客户端本地各项数据,并发送至Zabbix Server端,Zabbix Server收到数据,将数据存储到数据库中,用户基于Zabbix WEB可以看到数据在前端展现图像。当Zabbix监控某个具体的项目,改项目会设置一个触发器阈值,当被监控的指标超过该触发器设定的阈值,会进行一些必要的动作,动作包括:发送信息(邮件、微信、短信)、发送命令(SHELL 命令、Reboot、Restart、Install等)。

zabbix重要的五个组件:

1、Zabbix Server:负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行;
2、Database Storage:专用于存储所有配置信息,以及由zabbix收集的数据;
3、Web interface:zabbix的GUI接口,通常与Server运行在同一台主机上;
4、Proxy:可选组件,常用于分布监控环境中,代理Server收集部分被监控端的监控数据并统一发往Server端;
5、Agent:部署在被监控主机上,负责收集本地数据并发往Server端或Proxy端;

zabbix基本组件拓扑:
在LAMP架构中部署zabbix监控系统及邮件报警机制

下面我对如何部署zabbix进行详细配置
实验环境:
在LAMP架构中部署zabbix监控系统及邮件报警机制

STKAITI字体文件链接:https://pan.baidu.com/s/1EC_jdOhRGjDJewAKueaTUg
提取码:zmv4
一、部署LAMP架构
下载LAMP所需安装包

[root@localhost ~]# yum install httpd mariadb mariadb-server php php-mysql php-gd libjpeg* php-ldap php-odbc php-pear php-xml php-xmlrpc php-mhash -y

配置Apache主配置文件

[root@localhost ~]# vim /etc/httpd/conf/httpd.conf
ServerName www.yun.com:80 #修改域名
DirectoryIndex index.html index.php #让Apache支持PHP

为了让zabbix连接互联网,设置中国时区

[root@localhost ~]# vim /etc/php.ini
date.timezone = PRC

开启httpd服务和mysql

[root@localhost ~]# systemctl start httpd.service 
[root@localhost ~]# systemctl start mariadb.service 
[root@localhost ~]# netstat -ntap | egrep '80|3306'            #查看两个服务的端口
tcp        0      0 0.0.0.0:3306            0.0.0.0:*               LISTEN      38513/mysqld        
tcp6       0      0 :::80                   :::*                    LISTEN      38242/httpd         

重新配置mariadb数据库的参数

[root@localhost ~]# mysql_secure_installation 
Set root password? [Y/n] y         #是否设置密码
Remove anonymous users? [Y/n] n      #是否删除默认用户
Disallow root login remotely? [Y/n] n      #是否禁止root远程登录
Remove test database and access to it? [Y/n] n        #是否删除测试数据库
Reload privilege tables now? [Y/n] y       #是否对数据库进行初始化配置

创建zabbix数据库

[root@localhost ~]# mysql -uroot -p
MariaDB [(none)]> create database zabbix character set utf8 collate utf8_bin;    #创建一个zabbix数据库
MariaDB [(none)]> grant all on zabbix.* to 'zabbix'@'%' identified by '123123';     #为zabbix数据库创建管理用户
MariaDB [(none)]> flush privileges;

创建PHP测试首页

[root@localhost ~]# vim /var/www/html/index.php    
<?php
  phpinfo();
?>

在LAMP架构中部署zabbix监控系统及邮件报警机制

编写测试脚本,测试PHP能否连接数据库

<?php
$link=mysql_connect('192.168.199.129','zabbix','123123');
if($link) echo "<h1>success</h1>";
else echo "fail";
mysql_close();
?>

在LAMP架构中部署zabbix监控系统及邮件报警机制

在使用zabbix用户进行登录数据库时有时会出现登录失败的现象,这是因为里面有空用户占用导致本地用户无法登录,所以需要删除空用户

[root@localhost ~]# mysql -u zabbix -p         #登录失败
Enter password: 
ERROR 1045 (28000): Access denied for user 'zabbix'@'localhost' (using password: YES)

[root@localhost ~]# mysql -u root -p
MariaDB [(none)]> select user,host from mysql.user;   #有空用户占用导致本地用户无法登陆
+--------+-----------------------+
| user   | host                  |
+--------+-----------------------+
| zabbix | %                     |
| root   | 127.0.0.1             |
| root   | ::1                   |
|        | localhost             |
| root   | localhost             |
|        | localhost.localdomain |
| root   | localhost.localdomain |
+--------+-----------------------+
7 rows in set (0.00 sec)

MariaDB [(none)]> drop user ''@'localhost';         #删除空用户
Query OK, 0 rows affected (0.01 sec)

MariaDB [(none)]> drop user ''@'localhost.localdomain';       #删除空用户
Query OK, 0 rows affected (0.00 sec)

[root@localhost ~]# mysql -u zabbix -p      #再次登录就可以了
MariaDB [(none)]> 

到此为止,LAMP架构就部署完了

二、部署zabbix server

[root@localhost ~]# yum install php-bcmath php-mbstring -y       #下载两个PHP依赖包
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm   #下载zabbix yum源,安装完成后会自动产生repo文件
[root@localhost ~]# yum install zabbix-server-mysql zabbix-web-mysql -y    #安装zabbix软件包

修改zabbix配置文件

[root@localhost ~]# 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=123123     #密码改为zabbix登陆密码
357:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
475:Timeout=4
518:AlertScriptsPath=/usr/lib/zabbix/alertscripts
529:ExternalScripts=/usr/lib/zabbix/externalscripts
565:LogSlowQueries=3000
[root@localhost ~]# vim /etc/httpd/conf.d/zabbix.conf    #修改时区
php_value date.timezone Asia/Shanghai

[root@localhost ~]# vim /usr/share/zabbix/include/defines.inc.php    #修正图表中文乱码
:%s /graphfont/kaiti/g     #将配置文件中的graphfont替换为kaiti
[root@localhost ~]# cp STKAITI.TTF /usr/share/zabbix/fonts/    #从微软系统下复制相应的字体文件到/usr/share/zabbix/fonts/

开启zabbix服务端

[root@localhost ~]# systemctl start zabbix-server.service    
[root@localhost ~]# systemctl enable zabbix-server.service 
[root@localhost ~]# netstat -ntap | grep 10051       #查看端口
tcp        0      0 0.0.0.0:10051           0.0.0.0:*               LISTEN      40703/zabbix_server 
tcp6       0      0 :::10051                :::*                    LISTEN      40703/zabbix_server 

[root@localhost ~]# systemctl restart httpd.service     #重启Apache服务

http://192.168.199.129/zabbix     #在浏览器上登陆zabbix页面

首先看见的是zabbix的版本:
在LAMP架构中部署zabbix监控系统及邮件报警机制
这里所有的选项都为OK表示配置是没问题的:
在LAMP架构中部署zabbix监控系统及邮件报警机制
密码为zabbix的登陆密码:
在LAMP架构中部署zabbix监控系统及邮件报警机制
名字填写zabbix:
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
默认的用户名和密码为Admin和zabbix:
在LAMP架构中部署zabbix监控系统及邮件报警机制
登陆完成后便会到zabbix的监控页面:
在LAMP架构中部署zabbix监控系统及邮件报警机制
点击右上角头像可以选择语言,这里我选择中文:
在LAMP架构中部署zabbix监控系统及邮件报警机制

三、安装被监控端

[root@localhost ~]# systemctl stop firewalld.service     #关闭防火墙
[root@localhost ~]# setenforce 0
[root@localhost~]#rpm -ivh http://repo.zabbix.com/zabbix/3.5/rhel/7/x86_64/zabbix-release-3.5-1.el7.noarch.rpm   #下载yum源
[root@localhost ~]# yum install zabbix-agent -y   #被监控端需要装agent包,如果想要监控本机器,也可以在监控服务器上进行安装

更改配置文件

[root@localhost ~]# 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.199.129     #将地址指向服务器端
139:ServerActive=192.168.199.129     #将地址指向服务器端
150:Hostname=test     #名字可自行定义
268:Include=/etc/zabbix/zabbix_agentd.d/*.conf

开启服务

[root@localhost ~]# systemctl start zabbix-agent.service      
[root@localhost ~]# systemctl enable zabbix-agent.service 
Created symlink from /etc/systemd/system/multi-user.target.wants/zabbix-agent.service to /usr/lib/systemd/system/zabbix-agent.service.
[root@localhost ~]# netstat -ntap | grep zabbix     #查看端口
tcp        0      0 0.0.0.0:10050           0.0.0.0:*               LISTEN      40351/zabbix_agentd 
tcp6       0      0 :::10050                :::*                    LISTEN      40351/zabbix_agentd 

在服务器上配置完了就可以到zabbix监控页面进行配置
首先在监控页面中添加被监控服务器
在LAMP架构中部署zabbix监控系统及邮件报警机制
配置主机项基本信息
在LAMP架构中部署zabbix监控系统及邮件报警机制
配置模板选项,添加想要监控的模块
在LAMP架构中部署zabbix监控系统及邮件报警机制
查看添加好的主机信息
在LAMP架构中部署zabbix监控系统及邮件报警机制
回到主界面,点击刷新,过一会就回出现监控信息
在LAMP架构中部署zabbix监控系统及邮件报警机制

四、配置邮件报警功能-----在监控服务器上配置

[root@localhost ~]# yum install mailx -y       #下载邮箱服务
[root@localhost ~]# vim /etc/mail.rc        #在文件末尾添加如下配置
set from=邮箱地址
set smtp=smtp.qq.com
set smtp-auth-user=邮箱地址
set smtp-auth-password=**********     #如果填写的是qq邮箱,密码为qq邮箱的SMTP密码
set smtp-auth=login

在LAMP架构中部署zabbix监控系统及邮件报警机制

[root@localhost ~]# systemctl restart postfix.service    #重新启动邮箱服务

[root@localhost ~]# echo "hello world" | mail -s "testmail" 邮箱地址   #发送一个测试邮件

可以看到我在QQ邮箱中收到了一封邮件
在LAMP架构中部署zabbix监控系统及邮件报警机制

[root@localhost ~]# vim /usr/lib/zabbix/alertscripts/mail.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/mail.log 2>&1
[root@localhost ~]# chmod +x /usr/lib/zabbix/alertscripts/mail.sh     #给脚本执行权限
[root@localhost ~]# touch /tmp/mail.log     #创建邮箱日志文件
[root@localhost ~]# chown -R zabbix.zabbix /tmp/mail.log    #将权限给zabbix用户
[root@localhost ~]# chown -R zabbix.zabbix /usr/lib/zabbix/

再次发送一封测试邮件使用脚本执行

[root@localhost ~]# cd /usr/lib/zabbix/alertscripts/
[root@localhost alertscripts]# ./mail.sh 邮箱地址 "yun" "hahahahaha"        #发送格式为“地址”“标题”“内容”

在LAMP架构中部署zabbix监控系统及邮件报警机制

六、配置zabbix邮件报警机制
1 选择报警媒介类型
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
2 选择管理用户
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
3 在动作配置项中定义报警邮件的发送形式
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制
4 配置恢复操作后邮件的发送形式
在LAMP架构中部署zabbix监控系统及邮件报警机制
在LAMP架构中部署zabbix监控系统及邮件报警机制

七、测试,如果我关闭受监控的服务来模拟服务故障,zabbix一个会发送一封邮件提醒我,当我再次打开这个服务时表示这个服务已经被修复,zabbix一个也会发一封恢复邮件。

[root@localhost ~]# systemctl stop sshd.service #关闭被监控端的ssh服务

在LAMP架构中部署zabbix监控系统及邮件报警机制
接着便会收到邮件信息了:
在LAMP架构中部署zabbix监控系统及邮件报警机制

[root@localhost ~]# systemctl start sshd.service #我再次开启被监控端的SSH服务

在LAMP架构中部署zabbix监控系统及邮件报警机制
到此为止zabbix监控系统就搭建完成了。