CentOS 安装 Zabbix 5.0
说明:本文介绍CentOS 8.3 搭建 Zabbix5.0 监控平台安装及相关要求
Zabbix同时需要物理内存和磁盘空间。刚开始使用Zabbix,建议128MB物理内存和256MB可用磁盘空间。然而, 具体需要的内存大小和磁盘空间要根据主机数量和监控参数而定。如果你计划对监控的参数进行长期保存,你应该考虑至少在数据库中预留几个GB的空间,以用来保留历史数据。 每个Zabbix的守护进程需要与数据库服务器建立多个连接。分配给连接的内存数量,取决于数据库引擎的配置。
根据监控参数及选择的数据库引擎,Zabbix,特别是Zabbix数据库,可能需要大量的CPU资源,
如果需要启用短信(SMS)通知功能,需要串行通讯口(serial communication port)和串行GSM调制解调器(serial GSM modem)。USB转串行转接器也同样可以工作。
systemctl disable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
dnf install -y sysstat traceroute net-tools telnet tree \
net-snmp-utils vim lrzsz tcpdump wget git zip tar
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
sed -i '3c baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/$basearch/' /etc/yum.repos.d/zabbix.repo
dnf -y install zabbix-server-mysql zabbix-web-mysql zabbix-apache-conf zabbix-agent vim
dnf install -y @httpd @mariadb
systemctl enable --now httpd mariadb
mysql_secure_installation
要求你配置VALIDATE PASSWORD component(验证密码组件): 输入y ,回车进入该配置 选择密码验证策略等级, 我这里选择0 (low),回车 输入新密码两次 确认是否继续使用提供的密码?输入y ,回车 移除匿名用户? 输入y ,回车 不允许root远程登陆? 不需要输入y,需要远程登陆输入n ,回车 移除test数据库? 输入y ,回车 重新载入权限表? 输入y ,回车

mysql -uroot -p
use mysql;
select host,user from user;
mysql -uroot -p
use mysql;
update user set host='%' where user='root';
flush privileges;
exit
MySQL会反向解析远程连接地址的dns记录,如果MySQL主机无法连接外网,则dns可能无法解析成功,导致第一次连接MySQL速度很慢,所以在配置中可以关闭该功能。
echo "[mysqld]
skip-name-resolve" >> /etc/my.cnf
systemctl restart mysqld
mysql -uroot -p
create database zabbix character set utf8 collate utf8_bin;
show databases;
create user zabbix@localhost identified by 'password';
flush privileges;
grant all privileges on zabbix.* to zabbix@localhost;
quit;
zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix
zabbix_server.conf 配置说明
- ListenPort 监听端口,默认10051
- SourceIP 源ip,默 认为空,可以写机器ip地址SourceIP=机器ip
- LogType 日志类型,system\file\console,默认file
- LogFile 日志路径,默认/var/log/zabbix/zabbix_server.logLogFile=/var/log/zabbix/zabbix_server.log
- LogFileSize 日志大小,0-1024MB,0禁用自动日志轮换LogFileSize=0
- DebugLevel 调试级别,0~5,默认为3显示waring信息
- PidFile pid文件,默认/var/run/zabbix/zabbix_server.pidPidFile=/var/run/zabbix/zabbix_server.pid
- SockerDir socker文件夹,默认/var/run/zabbixSocketDir=/var/run/zabbix
- DBHOst 数据库地址,默认127.0.0.1
- DBName 数据库名称,默认 zabbixDBName=zabbix
- DBSchema 数据库dschema,默认 空
- DBUser 数据库用户,默认zabbixDBUser=zabbix
- DBPassword 数据库密码DBPassword=zabbixmysql
- DBSocket DBScoket地址
- DBPort 数据库端口,默认为空,
- HistoryStorageURL 历史存储的HTTP地址
- HistoryStorageTypes 用逗号分隔的类型列表,uint\dbl\str\log\text
- HistoryStorageDateIndex 是否历史记录预处理 0 disable,1 enable
- ExportDir 导出路径
- ExportFileSize 导出文件大小1M~1G,默认1G
- StartPollers 预分叉的轮询器实例数,默认5
- StartIPMIPollers IPMI轮询器数量
- StartPreprocessors 启动预处理器数量,默认3
- StartPollersUnreachable 无法访问是轮询次数
- StartTrappers
- StartPingers ICMP预习处理数
- StartDiscoverers 发现者预处理数
- StartHTTPPollers HTTP查询器预处理数
- StartTimers 计时器数
- JavaGateway zabbix网关ip地址或主机名,仅在启动java轮询器时需要JavaGateway=机器当前ip
- JavaGatewayPort zabbix网关的监听端口,默认10052
- StartJavaPollers java轮询器预处理数StartJavaPollers=5
- StartVMwareCollectors 虚拟收集器的数量
- SNMPTrapperFile SNMPtrapper文件,从snmp守护进程传递到服务器的临时文件SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
- StartSNMPTrapper 为1,启动SNMPTrapper
- ListenIP trapper监听的端口列表,用逗号分隔
- CacheSize 缓存
- Timeout SNMP服务和外部检查超时时间Timeout=4
- AlertScriptsPath 预警脚本位置AlertScriptsPath=/usr/lib/zabbix/alertscripts
- ExternalScripts 外部脚本路径ExternalScripts=/usr/lib/zabbix/externalscripts
- LogSlowQueries 定义数据库慢查询时长,单位毫秒LogSlowQueries=3000
- StatsAllowedIP 允许访问的ip列表,用逗号分隔0.0.0.0/0代表所有ipv4地址StatsAllowedIP=0.0.0.0/0
vim /etc/zabbix/zabbix_server.conf
ListenPort=10051
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=password
PHP 优化,如有需要可根据相关参数进行优化
vim /etc/php.ini
expose_php = Off
# 禁止显示php版本的信息short_open_tag = On
# 取消前面的;,修改为On。表示支持php短标签cgi.fix_pathinfo=1
# 将注释去掉,开启PHP的pathinfo伪静态功能。post_max_size = 100M
# 单提交的最大数据 ,此项不是限制上传单个文件的大小,而是针对整个表单的提交数据进行限制的,默认8Mupload_max_filesize = 50M
#上载文件的最大许可大小 ,默认2Mmax_execution_time = 600
# 脚本运行的最长时间,默认30秒max_input_time = 600
# 脚本可以消耗的时间,默认60秒memory_limit = 256M
# 脚本运行最大消耗的内存,根据你的需求更改数值,默认128Mdate.timezone = asia/shanghai
#设置时区
sed -i '$a php_value[date.timezone] = Asia/Shanghai' /etc/php-fpm.d/zabbix.conf
systemctl restart zabbix-server zabbix-agent httpd php-fpm
systemctl enable --now zabbix-server zabbix-agent httpd php-fpm

- 1.输入数据库连接端口,zabbix数据库密码,输入名称
- 2.默认的用户是Admin,密码为zabbix,该用户是超级用户,输入登录信息后,点击Sign In按钮,进行登录 左下角设置可以切换语言






zabbix 4.0:/usr/share/zabbix/fonts/
zabbix 4.2:/usr/share/zabbix/assets/fonts/
zabbix5.0:/usr/share/zabbix/assets/fonts
/usr/share/zabbix/include/defines.inc.php
我这里安装的是zabbix5.0,进入到
/usr/share/zabbix/assets/fonts
目录,可以看到一个graphfont.ttf
软连接,默认指向/etc/alternatives/zabbix-web-font
这个字体文件,由于php配置文件已经配置好了graphfont.ttf,所以这个软连接指向哪个字体文件就使用哪 个文件 
cd /usr/share/zabbix/assets/fonts
wget https://raw.githubusercontent.com/chenqing/ng-mini/master/font/msyh.ttf
mv -f msyh.ttf /usr/share/fonts/dejavu/DejaVuSans.ttf
systemctl restart zabbix-server

systemctl disable --now firewalld.service
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
dnf install -y sysstat traceroute net-tools telnet tree \
net-snmp-utils vim lrzsz tcpdump wget git zip tar
注意:这里需要下载和Zabbix Server版本一致的Zabbix Agent 软件包和Yum源
rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/8/x86_64/zabbix-release-5.0-1.el8.noarch.rpm
sed -i '3c baseurl=https://mirrors.aliyun.com/zabbix/zabbix/5.0/rhel/8/$basearch/' /etc/yum.repos.d/zabbix.repo
dnf -y install zabbix-agent zabbix-sender
- PidFile Pid文件PidFile=/var/run/zabbix/zabbix_agentd.pid
- LogType 日志类型,system\file\console,默认file
- LogFile 日志文件LogFile=/var/log/zabbix/zabbix_agentd.log
- LogFileSize 日志大小,0-1024MB,0禁用自动日志轮换LogFileSize=0
- DebugLevel 调试级别,0~5,默认为3显示waring信息
- SourceIP 源IP,默认为空,可以写机器IP地址SourceIP=机器IP
- AllowKey 允许执行的项目键
- DenyKey
- Server zabbix-server的IP或名称,列出主机接受传入的连接Server=服务端机器IP
- ListenPort 监听端口,默认10050
- ListenIP 监听IP,zabbix-agent的IPListenIP=机器IP
- StartAgents 监听的服务,zabbix-server的IP地址ServerActive=服务端机器IP:10051
- Hostname 主机名zabbix-agent的IP,在zabbix-web上添加hosts时用这个名称Hostname=机器的名称
- UnsafeUserParameters=1 默认为0,不允许使用以下字符 ' " ` * ? [ ] { } ~ $ ! & ; ( ) < > | # @,此外,不允许换行符,修改为1,表示自定义脚本中可以包含特殊字符。
- HostMetadataItem 主机元数据,默认是system.uname,当Agent程序向服务端发送自动注册请求时,会发送其主机名,在某些情况下,Zabbix服务器的主机名不足以区分发现的主机,主机元数据可将其他信息从Agent发送到服务端。
vim /etc/zabbix/zabbix_agentd.conf
Server=192.168.186.139 # 服务器IP
ServerActive=192.168.186.139 # 服务器IP
Hostname=hezhiqiang-agent01 # 客户端主机名
UnsafeUserParameters=1 # 默认为0,修改为1,表示自定义脚本中可以包含特殊字符。
HostMetadataItem=system.uname # 主机元数据
systemctl enable --now zabbix-agent.service
vim /etc/yum.repos.d/nginx.repo
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
dnf makecache timer
dnf info nginx
dnf install -y nginx

rm -rf /etc/nginx/conf.d/default.conf
nginx -V

从命令返回值中出现“
--with-http_stub_status_module
”这一个模块即代表内置运行状态模块已开启注意:stub_status模块只能应用在server或者location下
vim /etc/nginx/nginx.conf
参考以下内容进行修改:
server {
location /status { #定义运行状态页面名称,页面为status
stub_status on; #开启模块
access_log off; #不开启访问日志记录
allow 127.0.0.1; #运行127.0.0.1地址访问此网页
allow 192.168.186.0/24; #只运行192.168.186.0网段的主机访问此网页
deny all; #其余网段主机不允许访问
}
}

nginx -t
systemctl restart nginx
页面内容解析:
Active connections: 2
server accepts handled requests
2 2 1
Reading: 0 Writing: 1 Waiting: 1
- Active connections:当前活动的客户端连接数有多少( 包括在等待阶段的)
- accepts:接受的客户端连接总数
- handled:已处理的连接总数(通常与accepts数量一致,但存在某些资源限制的情况导致数量不一致)
- requests:客户端请求总数(包括接受请求或拒绝请求的)
- Reading:nginx正在读取请求标头的当前连接数。
- Writing:nginx正在将响应写回到客户端的当前连接数。
- Waiting:当前等待请求的空闲客户端连接数。

mkdir /etc/zabbix/script
vim /etc/zabbix/script/nginx_status.sh
#!/bin/bash
#function: monitor nginx1.16 for zabbix5.0
#blog: he.zhiqiang.cloud
#version: 1.0
#date: 2021/6/22
#定义Nginx status页面
ngx_status="http://127.0.0.1/status"
#判断status页面是否存活
ngx_status_code() {
http_code=`curl -o /dev/null -s -w %{http_code} ${ngx_status}`
if [ ${http_code} == "200" ];then
return 1
else
echo "Nginx status is not running."
fi
}
#获取当前活动的客户端连接数
active() {
ngx_status_code || curl -s ${ngx_status} | grep "Active" | awk '{print $NF}'
}
#获取接收客户端连接的总数量
accepts() {
ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $1}'
}
#获取已处理的连接总数量
handled() {
ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $2}'
}
#获取客户端请求总数量
requests() {
ngx_status_code || curl -s ${ngx_status} | awk NR==3 | awk '{print $3}'
}
#获取正在读取请求标头的当前连接数量
reading() {
ngx_status_code || curl -s ${ngx_status} | grep "Reading" | awk '{print $2}'
}
#获取正在将响应写回到客户端的当前连接数量
writing() {
ngx_status_code || curl -s ${ngx_status} | grep "Writing" | awk '{print $2}'
}
#获取当前正在等待响应的客户端连接数量
waiting() {
ngx_status_code || curl -s ${ngx_status} | grep "Waiting" | awk '{print $2}'
}
#使用位置变量控制脚本输出
case $1 in
active)
active;;
accepts)
accepts;;
handled)
handled;;
requests)
requests;;
reading)
reading;;
writing)
writing;;
waiting)
waiting;;
*)
echo "Unknown options"
esac
chmod +x /etc/zabbix/script/nginx_status.sh
比如第一个自定义键值为:
nginx.active
,要执行的命令为执行nginx_status.sh
这个脚本。vim /etc/zabbix/zabbix_agentd.d/userparameter_nginx.conf
UserParameter=nginx.active,bash /etc/zabbix/script/nginx_status.sh active
UserParameter=nginx.accepts,bash /etc/zabbix/script/nginx_status.sh accepts
UserParameter=nginx.handled,bash /etc/zabbix/script/nginx_status.sh handled
UserParameter=nginx.requests,bash /etc/zabbix/script/nginx_status.sh requests
UserParameter=nginx.reading,bash /etc/zabbix/script/nginx_status.sh reading
UserParameter=nginx.writing,bash /etc/zabbix/script/nginx_status.sh writing
UserParameter=nginx.waiting,bash /etc/zabbix/script/nginx_status.sh waiting
要在Zabbix页面创建主机组,请执行以下步骤:
- 进入: 配置 → 主机组
- 单击页面右上角的创建主机群组
- 在表单中输入组的相关参数

按照以下步骤在Zabbix前端创建一台主机:
- 进入: 配置 → 主机
- 单击页面右上角 创建主机 (或者在主机名上单击以编辑一台已有的主机)
- 在表单中输入主机的相关参数
