目录
[5. Zabbix分布式监控系统的部署顺序](#5. Zabbix分布式监控系统的部署顺序)
[A.基本环境配置 --服务端、客户端节点](#A.基本环境配置 –服务端、客户端节点)
[B. LNMP环境部署(zabbix 服务端)](#B. LNMP环境部署(zabbix 服务端))
[C. Zabbix服务端部署及配置](#C. Zabbix服务端部署及配置)
[(3).zabbix-4.0.3.tar.gz 传到/usr/local/src 目录下解压编译安装](#(3).zabbix-4.0.3.tar.gz 传到/usr/local/src 目录下解压编译安装)
[(7). 编辑zabbix_server 的配置](#(7). 编辑zabbix_server 的配置)
[D. Zabbix Web 界面部署](#D. Zabbix Web 界面部署)
[(2).修改 php.ini 的配置文件](#(2).修改 php.ini 的配置文件)
[(3).修改 php-fpm.conf 的配置文件](#(3).修改 php-fpm.conf 的配置文件)
[E. Zabbix 客户端部署](#E. Zabbix 客户端部署)
[F. Zabbix web 界面的使用管理操作](#F. Zabbix web 界面的使用管理操作)
[G. Zabbix自定义监控项](#G. Zabbix自定义监控项)
[(6).进入Zabbix Web 配置](#(6).进入Zabbix Web 配置)
******一、**Zabbix分布式监控系统介绍
1.什么是" Z abbix"
Zabbix是一个基于WEB界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。 Zabbix能监视各种网络参数,保证服务器系统的安全运营;并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。Zabbix支持多种采集方式和采集客户端,有专用Agent (代理),也支持SNMP,IPMI,JMX,Telnet,SSH 等多种协议,它将采集到的数据存放在数据库,然后对其进行分析整理,达到条件出发告警。Zabbix由2部分构成,Zabbix server与可选组件Zabbix agent。
2.Zabbix 分布式监控系统的特点
- 自动发现服务器与网络设备
- 分布式监视以及WEB集中管理功能
- 可以无agent监视
- 用户安全认证和柔软的授权方式
- 通过WEB界面设置或查看监视结果
- 丰富的监控功能:Zabbix可以监控各种资源,包括服务器的CPU、内存、网络、磁盘等,还可以监控网络设备、数据库、应用程序的性能指标。
- 灵活的数据收集:Zabbix支持多种数据收集方式,包括主动和被动监控、SNMP、JMX等,可以根据需求选择最适合的方式进行监控。
- 强大的报警功能:Zabbix可以基于收集的监控数据设置各种报警规则,并通过Email、SMS、Webhook等方式及时通知管理员,帮助及时响应故障和异常情况。
- 可视化和报表功能:Zabbix提供直观的图表和报表功能,可以对监控数据进行可视化展示,帮助管理员更好地了解系统状态和趋势。
Zabbix能见识各种网络参数,保证服务器系统的安全运营;Zabbix还可以非常方便地自定义监控项目。你可以定制化监控业务的某个指标(比如,每分钟订单数量),这个监控项目不可能在Zabbix的自带模板中找到,所以只能自定义。另外,Zabbix还为我们提供了易用的二次开发接口,方便扩展。并提供灵活的通知机制以让系统管理员快速定位/解决存在的各种问题。
3.Zabbix 分布式监控系统的原理
- Zabbix Server会去收集zabbix agent采集的监控数据,并将采集的监控数据会写入到SQL数据库。
- Zabbix的Web后端采用PHP语言开发,所有配置信息、用户认证信息等会写入SQL 数据库。
- 企业级Zabbix的搭建依赖的环境:主流采用LNMP环境(CentOS7+Nginx+MySQL+PhP)
4.Zabbix 分布式监控系统的运用
- 服务器监控:Zabbix可以监控服务器的硬件状况和性能,及时发现问题并采取措施,提高系统的稳定性和可用性。
- 网络设备监控:Zabbix可以监控网络设备的带宽、连通性和性能指标,帮助管理员及时排查网络问题,并进行容量规划。
- 应用性能监控:Zabbix可以监控常见的应用程序(如Web服务器、数据库、消息队列等)的性能指标,帮助发现性能瓶颈,并进行优化。
- 云环境监控:Zabbix支持AWS、Azure等常见的云平台,可以监控云资源的使用情况和性能指标,帮助管理云环境的资源和成本
5 . Zabbix 分布式监控系统的部署顺序
- LNMP的环境搭建
- MySQL服务器搭建
- Zabbix Server搭建
- Zabbix 网页展示
二、搭建
1 . 设备硬件配置参考
配置两台虚拟机,一个为zabbix-server,一个为zabbix-agent

2 . zabbix分布式监控系统各节点设备名称和IP规划
|---------------|---------------|-----|
| 主机名 | IP地址 | 角色 |
| zabbix-server | 192.168.20.30 | 服务端 |
| zabbix-agent | 192.168.20.40 | 客户端 |
3 . 搭建步骤与思路
A. 基本环境配置 -- 服务端、客户端节点
( 1). 更改两台服务器的主机名
# hostnamectl set-hostname zabbix-server
# hostnamectl set-hostname zabbix-agent
(2).关闭两台机器防火墙以及安全规则
# systemctl stop firewalld
# systemctl disable firewalld
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
解析:systemctl stop firewalld 为暂时关闭防火墙,systemctl disable firewalld 为永久关闭防火墙。setenforce 0为临时关闭selinux,sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config为永久关闭selinux。
(3 ). 测试两台机器的网络
# ping baidu.com
PING baidu.com (39.156.69.79) 56(84) bytes of data.
64 bytes from 39.156.69.79 (39.156.69.79): icmp_seq=1 ttl=128 timc=47.2 ms
64bytes from 39.156.69.79 (39.156.69.79): icmp_seq=2 ttl=128 time=45.8 ms
( 4). 添加两台主机的映射
# vi /etc/hosts
192.168.20.30 zabbix-server
192.168.20.40 zabbix-agent
B. LNMP 环境部署(zabbix 服务端)
( 1 ). 上传L NMP 环境部署包
将lnmp环境包上传到/root/下
( 2 ). 解压L NMP 环境部署包
解压lnmp压缩包
# tar -zxvf lnmp1.6-full.tar.gz
(3). 一键部署L NMP 环境部署源码包
# cd lnmp1.6-full
修改Mysql数据目录:
# vi lnmp.conf
mysql_Data_Dir='/data/mysql'
# ./install.sh lnmp #执行脚本
选择MySQL 版本:

设置MySQL密码:

选择PHP版本:

选择不安装内存分配器:

按Enter键开始安装:

部署成功显示:

测试访问网页:

C. Z abbix服务端部署及配置
(1). 安装依赖包
# yum install -y libevent-devel wget tar gcc gcc-c++ make net-snmp-devel libxml2-devel libcurl-devel
解析:
- yum是一个用于下载东西的命令,可以更方便的解决所安装的工具的依赖关系。
- gcc (GNU CompilerCollection)是Linux下最主要的编译工具,GCC不仅功能非常强大,结构也非常灵活。它可以通过不同的前端模块来支持各种语言,如Java、 Fortran、Pascal、Modula-3和Ada。
- 不带 devel 后缀的package,通常只包含能让程序运行的动态库和配置文件。而带devel 后缀的package ,则包含使用这个package 开发程序的所有的必需文件。
- libevent-devel:libevent 开发库,用于事件处理。
- wget:用于从 Web 下载文件的工具。
- net-snmp-devel:Net-SNMP 开发库,用于网络管理协议。
- libxml2-devel:libxml2 开发库,用于处理 XML 文档。
- libcurl-devel:libcurl 开发库,用于通过网络进行文件传输。
(2) .创建zabbix用户
# useradd -s /sbin/nologin zabbix
(3).zabbix-4.0.3.tar.gz 传到/ usr/local/src 目录下解压编译安装
# tar -zxvf zabbix-4.0.3.tar.gz #解压源码包
# mkdir /usr/local/zabbix
# mv /usr/local/src/zabbix-4.0.3/* /usr/local/zabbix #迁移到安装目录
# cd /usr/local/zabbix/
# ./configure --prefix=/usr/local/zabbix --enable-server --enable-agent --with-mysql=/usr/local/mysql/bin/mysql_config --with-net-snmp --with-libcurl --with-libxml2
选项说明:
- --prefix 指定安装目录
- --enable-server安装Zabbix server,启用Zabbix服务器组件
- --enable-agent安装Zabbix agent,启用Zabbix代理组件
- --with-mysql 用MySQL来存储
- mysql_config:指定 MySQL 客户端配置脚本的位置。这将允许 Zabbix 与 MySQL 数据库交互。
- --with-net-snmp:启用对 Net-SNMP 库的支持。
- --with-libcurl:启用对 libcurl 库的支持。
- --with-libxml2:启用对 libxml2 库的支持。
编译完成结果:

# make && make install #编译安装

(4). 环境变量设置
# vi /etc/profile
export PATH=$PATH:/usr/local/zabbix/sbin/:/usr/local/zabbix/bin/
# source /etc/profile
# echo $PATH
查看版本: zabbix_server --version
(5). 配置启动脚本
# cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_server /etc/init.d/
#cp /usr/local/zabbix/misc/init.d/fedora/core/zabbix_agentd /etc/init.d/
# vi /etc/init.d/zabbix server
BASEDIR=/usr/local/zabbix #zabbix安装目录
# vi /etc/init.d/zabbix agentd
BASEDIR=/usr/local/zabbix #zabbix安装目录
添加权限:
# chmod 755 /etc/init.d/zabbix_*
启动zabbix服务及启动状态:
# systemctl start zabbix_server
# systemctl restart zabbix_agentd
# systemctl status zabbix_server
# systemctl status zabbix_agentd
(6). 登录数据库创建zabbix用户和导入zabbix库
# mysql -h 127.0.0.1-uroot -p000000
mysql> create database zabbix character set utf8 collate utf8_bin; ##创建zabbix 库和设置格式
mysql> grant all privileges on zabbix.* to zabbix@'127.0.0.1' identified by
'zabbix'; ##创建 Zabbix用户并分配权限
mysql> grant all privileges on zabbix.* to zabbix@'%' identified by 'zabbix';
mysql> flush privileges; ##刷新权限
mysql> set names utf8; ##设置字符集
mysql> use zabbix ##切换到 Zabbix库中
把源码/usr/local/zabbix/database/mysql/安装路径下的3个sql文件导入数据库:
mysql> source /usr/local/zabbix/database/mysql/schema.sql
mysql> source /usr/local/zabbix/database/mysql/data.sql
mysql> source /usr/local/zabbix/database/mysql/images.sql
mysql> show tables; ##查看导入的表格
(7) . 编辑zabbix _server 的配置
# cp /usr/local/zabbix/etc/zabbix_server.conf{,.bak}
# vi /usr/local/zabbix/etc/zabbix_server.conf
LogFile=/tmp/zabbix_server.log
DBHost=127.0.0.1 ##指定数据库信息(需配合参数DBSocket使用)
DBName=zabbix ##服务端连接数据库的库名
DBUser=zabbix ##连接数据库的用户
DBPassword=Zabbix ##连接数据库的密码
DBPort=3306 ##指定连接数据库的端口
Timeout=30 #与 AGNET和其它外部设备通信超时设置,单位为秒
LogSlowQueries=3000 ##用于服务端数据库慢查询功能,单位是亳秒
DBSocket=/tmp/mysql.sock ##指定 MYSQL的SOCK 连接路径
解析:
{,.bak}:用大括号括起来的参数表示扩展。在这种情况下,它将扩展为两个参数:.bak 和 zabbix_server.conf.bak。
修改 Zabbix目录的权限:
# chown zabbix:zabbix -R /usr/local/zabbix/
解析:
- -R:递归更改指定目录及其所有子目录和文件的权限。
- zabbix:zabbix:新所有者和组。
- /usr/local/zabbix/:要更改所有权的目录。
重启服务生效:
# systemctl restart zabbix_server
D. Zabbix Web 界面部署
(1). 配置Nginx虚拟主机
# vi /usr/local/nginx/conf/vhost/zabbix.com.conf
server
{
listen 800;
server_name zabbix.com www.zabbix.com;
index index.html index.htm index.php;
root /data/nginx/zabbix;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /data/nginx/zabbix$fastcgi_script_name;
include fastcgi_params;
}
}
源码安装包路径下的文件cp到Zabbix Web文件目录当中:
# mkdir -p /data/nginx/zabbix
# /etc/init.d/nginx reload #生效服务
# cp -rf /usr/local/zabbix/frontends/php/* /data/nginx/zabbix
解析:
reload:重新加载 Nginx 的配置。
(2). 修改 p hp.ini 的配置文件
# vi /usr/local/php/etc/php.ini
post_max_size = 32M
max_execution_time = 350
max_input_time = 350
date.timezone = Asia/Shanghai
(3). 修改 php-fpm.conf 的配置文件
# vi /usr/local/php/etc/php-fpm.conf
[www]
listen = 127.0.0.1:9000
重启php-fpm服务:
# /etc/init.d/php-fpm restart
检查端口是否启动:
# netstat -lntp | grep php
tcp 0 0 127.0.0.1:9000 0.0.0.0:*
LISTEN 2141/php-fpm: maste
(4).Web 界面部署安装
初始页面:

检查安装条件:(根据提示解决不满足条件的问题!)

配置数据库连接信息:

配置zabbix服务端详细信息:

安装前确认信息:

安装报错:

根据提示下载,并把它放到指定路径/data/nginx/zabbix/conf/Zabbix.conf.php
重新刷新页面:

登录界面:(账号:Admin 密码:zabbix)

登录后界面:

E. Zabbix 客户端部署
(1).下载Zabbix客户端安装包
# yum -y install wget
# wget http://repo.zabbix.com/zabbix/4.0/rhel/7/x86_64/zabbix-agent-4.0.3-1.el7.x86_64.rpm
通过wget命令下载安装包。
(2).安装zabbix客户端
# rpm -ivh zabbix-agent-4.0.3-1.el7.x86_64.rpm

安装完后我们后面经常使用的文件如路径如下:
/etc/zabbix/zabbix agentd.conf##zabbix agentd ##配置文件
/etc/zabbix/zabbix agentd.d##zabbix_agentd ##进程文件
/var/run/zabbix/zabbix agentd.pid##zabbix agentdpid ##文件路径
/var/log/zabbix/zabbix agentd.log##zabbix_agentd ##日志文件路径
备份配置文件
# cp /etc/zabbix/zabbix_agentd.conf{,.bak}
# egrep -v '^$|#' /etc/zabbix/zabbix_agentd.conf.bak > /etc/zabbix/zabbix_agentd.conf
修改配置文件:
# vi /etc/zabbix/zabbix_agentd.conf
PidFile=/var/run/zabbix/zabbix agentd.pid
LogFile=/var/log/zabbix/zabbix agentd.log
LogFileSize=0 ##指定日志文件的大小,单位 MB.0表示禁用日志轮转
ListenPort=10050 ##指定监听端口StartAgents-3
##Zabbix 启动之后开启被动监控的进程数量,如果设置为0,那么Zabbix被动监控被禁用
ListenIP=0.0.0.0 ##监听IP地址,默认为所有接口
Server=192.168.20.30 ##允许哪个Zabbixserver的P地址监控本机
#ServerActive=192.168.20.30 ##Zabbix主动监控server的ip 地址
Hostname=zabbix agent
Include=/etc/zabbix/zabbix agentd.d/*.conf ##自定义配置文件
解析:
主动模式和被动模式的区别:
- 主动模式: Zabbix的agent端,也就是客户端,主动把自己监测到的数据,上报给 Zabbix 服务器,Zabbix 服务器不需要向 agent 发起请求。
注意: ServerActive是主动模式开关,注掉主动模式关闭;与Server不能同时配置
- 被动模式: Zabbix 服务器向agent发送请求,告诉agnet我需要哪些数据然后 agnet 执行相关操作,把执行结果返回给服务端
注意:SlarAgenls=0表示被动模式关闭。
重启生效配置:
# systemctl start zabbix-agent
查看日志:
# tail -f /var/log/zabbix/zabbix_agentd.log
查看端口:
# netstat -lntp | grep zabbix
F. Zabbix web 界面的使用管理操作
(1).首先设置中文



可以看到这里的中文是乱码的形式

(2).解决中文乱码的问题
从Windows控制面板找到字体,选择字体文件,拷贝到zabbix服务器的/data/nginx/zabbix/fonts 目录下。

将DejaVuSans.ttf字体备份起来,然后用simhei.ttf重命名成DejaVuSans.ttf:
# mv DejaVuSans.ttf DejaVuSans.ttf.bak
# mv simhei.ttf DejaVuSans.ttf

重新刷新后中文乱码消失。

(3).创建客户端监控主机
创建主机


找到配置--->主机--->创建主机:



接着配置主机链接模板,选择Template OS Linux,单击"添加"按钮。

之后在最新数据中查看结果:

(4).创建模板
选择配置--->模板--->创建模板--->添加监控项

选择自带监控项:


G. Zabbix 自定义监控项
(1).配置自定义监控脚本,修改agent配置文件:
# vi /etc/zabbix/zabbix_agentd.d/users.conf
UnsafeUserParameters=1
UserParameter=user,/bin/bash /scripts/user.sh
(2).配置监控脚本:
# mkdir /scripts
# vi user.sh
#!/bin/bash
user=$(who|wc -l)
if [ $user -gt 3 ]; then
echo "1"
else
echo "2"
fi
(3).添加权限
# chmod 755 user.sh
(4).测试脚本
# ./user.sh

如果返回值为1,说明在线用户超过3个,如果返回值为2,说明在线用户不超过三个。
生效配置:
# systemctl restart zabbix-agent.service
# netstat -lntp #查看端口是否启动

(5).服务端测试
# zabbix_get -s 192.168.20.40 -k users
解析:
Zabbix_get命令是在 server 端用来检査 agent端的一个命令,在添加完主机或者触发器后,不能正常获得数据,可以用zabbix_get来检查能否采集到数据以便判断问题症结所在。
zabbix_get 参数说明:
- -s--host:指定客户端主机名或者IP
- -p --port:客户端端口,默认 10050。
- -I --source-address:指定源,写上Zabbixserver的IP地址即可,一般留空,服务器如果有多的时候,指定一个。
- -k --key:用户想获取的 key
至于使用长参数还是短的,自己选择,我经常使用-s而不是-host,
如果不知道 key参数可以使用 zabbix agentd-p 命令寻找自己想要找的参数,如下:
# zabbix_agentd -p | grep users

(6).进入Zabbix Web 配置
流程: 配置一> 主机 一> 监控项 一> 创建监控项 : 配置 一> 主机 一> 触发器 一> 创建触发器。
具体配置参数如图所示:



(7).验证
客户端主机开多于三个用户,看是否会出发报警!


红色显示的为严重灾难,已报警,至此,zabbix分布式监控系统部署完毕。
三、总结
搭建服务的时候,除了要知道每条命令的作用是什么,还需要注意命令与命令之间的连带关系,注意每个服务所连接的端口不能相同。
Zabbix分布式监控系统是一个基于Web界面的提供分布式系统监视以及网络监视功能的企业级的开源解决方案。服务端负责接收agent发送的报告信息的核心组件,所有配置,统计数据及操作数据均由其组织进行。客户端部署在被监控端主机上,负责收集本地数据并发往Server端或 Proxy 端。要明白zabbix分布式监控系统的原理以及搭建顺序。
项目中涉及LNMP环境的搭建,数据库的创建,服务端的配置等。