7328 字
37 分钟
01-Zabbix-Server-核心服务端-部署

Zabbix 6.4 分布式企业级性能监控平台#

Zabbix Server 核心服务端 部署
官网:https://www.zabbix.com/cn
https://www.zabbix.com/cn/download?zabbix=7.2&os_distribution=rocky_linux&os_version=9&components=server_frontend_agent&db=mysql&ws=nginx

一、Zabbix 功能简介#

针对整个IT架构各个关键设备运行状态的实时监控与及时预警,是运维管理中的一个极其重要的工作环节,及时感知性能瓶颈与故障,本 身就是自动化运维工作的一个组成部分。
Zabbix 作为一个企业级的性能监控系统,可以采用多种方式来获取关键设备的运行状态数据,例如:网络设备状态、主机硬件状态、系统 运行状态、程序运行状态等等,因此得到了企业的广泛赞誉与生产应用。
Zabbix 功能十分强大,其分布式平台管理架构,无论是对于拥有少量服务器的中小型企业,还是拥有大量服务器的大型企业而言,在经过 适当的配置之后,均可在IT基础设施的性能监控方面发挥重要作用,世界上许多不同规模的组织都采用Zabbix作为主要的监控平台。
Zabbix 支持主动轮询和被动捕获的方式,来获取IT基础设施的性能状态数据,并可配置使用多种通知机制,来及时予以故障报警,从而有 助于运维工程师的快速响应并排查故障,Zabbix Web前端还为我们提供了出色的可视化数据展示与数据报告的功能。
Zabbix 遵循 GPL 通用公共许可证,作为一个开源软件项目,它的源代码可以免费分发、公共使用。
现在依据官方文档,将其功能特性介绍如下:

二、部署Zabbix Server 6.4 核心服务器#

Zabbix 作为一个开源的分布式性能监控管理平台,在其管理架构中,主要分为<Zabbix Server 服务器>、<Zabbix Proxy 代理服务器>、<Zabbix 各类客户端> 这三种角色。
<Zabbix Server 服务器>是整个 Zabbix 性能监控管理平台的核心,本章将指导大家安装部署<Zabbix Server 6.4 核心服务器>。

1. 环境说明:#

★ 本次部署,采用:松耦合方式,尽可能独立部署<Zabbix Server 服务器>的各个功能组件,从而方便我们在生产中予以集群化部署。
节点角色IP 地址操作系统:硬件规格
rocky-9-16MySQL 数据库(版本:8.0)192.168.168.16/24Rocky Linux 91 vCPU、2GB 内存
rocky-9-17Nginx + PHP Web 前端192.168.168.17/24Rocky Linux 91 vCPU、2GB 内存
rocky-9-18Zabbix Server 核心服务(版本:6.4)192.168.168.18/24Rocky Linux 91 vCPU、2GB 内存

2. 安装部署:MySQL数据库#

##
## 安装:MySQL 数据库,并创建<zabbix 用户数据库>
##
Terminal window
[root@Rocky-9-16 ~]# dnf install -y mysql-server mysql
[root@Rocky-9-16 ~]# systemctl enable mysqld
[root@Rocky-9-16 ~]# systemctl restart mysqld
[root@Rocky-9-16 ~]# mysqladmin -uroot password 'a123456!'
[root@Rocky-9-16 ~]# mysql -uroot -p'a123456!' <<EOF
create database if not exists zabbix character set utf8mb4 collate utf8mb4_bin;
create user if not exists root@'%' identified by 'a123456!';
grant all privileges on *.* to root@'%';
create user if not exists zabbix@localhost identified by 'a123456!';
grant all privileges on zabbix.* to zabbix@localhost;
create user if not exists zabbix@'%' identified by 'a123456!';
grant all privileges on zabbix.* to zabbix@'%';
set global log_bin_trust_function_creators = 1; ## 在<zabbix 用户数据库>导入数据之前,允许:<非特权用户>创建<存储函数>
EOF
[root@Rocky-9-16 ~]# firewall-cmd --permanent --add-port=3306/tcp
[root@Rocky-9-16 ~]# firewall-cmd --reload

3. 安装部署:Nginx Web 前端#

##
## (1) 禁用:<EPEL 源>中的<Zabbix 软件包>
##
Terminal window
[root@Rocky-9-17 ~]# vi /etc/yum.repos.d/ustc_epel_9.repo ## 这是:一个国内的 EPEL YUM 镜像源
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.ustc.edu.cn/epel/$releasever//Everything/$basearch #可以使用阿里云平替
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
##
## (2) 获取:<Zabbix 软件包>的<repo 源配置文件>
##
Terminal window
[root@Rocky-9-17 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
[root@Rocky-9-17 ~]# yum clean all
[root@Rocky-9-17 ~]# yum makecache
##
## (3) 安装:<Nginx Web 前端>
##
Terminal window
[root@Rocky-9-17 ~]# dnf install -y zabbix-web-mysql zabbix-nginx-conf
##
## (4) 针对<Nginx Web 前端>配置:侦听端口、虚拟主机名称
##
Terminal window
[root@Rocky-9-17 ~]# vim /etc/nginx/conf.d/zabbix.conf
......
listen 80;
server_name zabbix.test.cn;
root /usr/share/zabbix;
index index.php;
......
##
## (5) 配置:<Nginx Web 前端>的<PHP 配置文件>,设置正确的<时区>
##
Terminal window
[root@Rocky-9-17 ~]# vim /etc/php-fpm.d/zabbix.conf
[zabbix]
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1
... ...
php_value[date.timezone] = Asia/Shanghai
##
## (6) 授予:<nginx 用户>针对</etc/zabbix/web 目录>具备<写入权限>,因为在<Web 安装向导>中,需要自定生成<配置文件>
##
Terminal window
[root@Rocky-9-17 ~]# setfacl -m u:nginx:rwx /etc/zabbix/web/
##
## (7) 启动:Nginx 服务进程、php-fpm 服务进程
##
Terminal window
[root@Rocky-9-17 ~]# systemctl enable nginx php-fpm
[root@Rocky-9-17 ~]# systemctl restart nginx php-fpm
[root@Rocky-9-17 ~]# firewall-cmd --permanent --zone=public --add-port=80/tcp
[root@Rocky-9-17 ~]# firewall-cmd --reload
## 禁用:SElinux
if ! [[ $(getenforce) == "Disabled" ]]; then
sed -r -i 's/^\s*SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
reboot
fi
##
## (8) 添加:可视化的<中文字体>支持
##
##
## ① win+r 搜索:fonts,从而打开 Windows 的<Fonts 目录>
##
##
## ② 挑选:simfang.ttf 字体文件,并将其上传到 /usr/share/zabbix/assets/fonts 目录
##

## ## ③ 挑选:simfang.ttf 字体文件,并将其上传到 /usr/share/zabbix/assets/fonts 目录 ## ## ## ④ 修改:/usr/share/zabbix/include/defines.inc.php 配置文件 ##

Terminal window
[root@Rocky-9-17 ~]# vim /usr/share/zabbix/include/defines.inc.php
......
define('ZBX_GRAPH_FONT_NAME', 'simfang'); // font file name
......

4. 安装部署:Zabbix Server 核心服务器#

##
## (1) 禁用:EPEL 源中的 Zabbix
##
Terminal window
[root@Rocky-9-18 ~]# vim /etc/yum.repos.d/ustc_epel_9.repo ## 这是:一个国内的 EPEL YUM 镜像源
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.ustc.edu.cn/epel/$releasever//Everything/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
##
## (2) 获取:<Zabbix 软件包>的<repo 源配置文件>
##
Terminal window
[root@Rocky-9-18 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
[root@Rocky-9-18 ~]# yum clean all
[root@Rocky-9-18 ~]# yum makecache
##
## (3) 安装:Zabbix Server 核心服务、Agent 客户端代理
##
Terminal window
[root@Rocky-9-18 ~]# dnf install -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
##
## (4) 针对 MySQL 数据库,导入:初始架构和数据
##
Terminal window
[root@Rocky-9-18 ~]# dnf install -y mysql
[root@Rocky-9-18 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | \
mysql --default-character-set=utf8mb4 -uzabbix -p'a123456!' -h 192.168.168.16 zabbix
##
## (5) 在导入数据库架构之后,针对 MySQL 数据库,禁用:log_bin_trust_function_creators 选项。
##
Terminal window
[root@Rocky-9-18 ~]# mysql -uroot -p'a123456!' -h 192.168.168.16 <<EOF
set global log_bin_trust_function_creators = 0; ## 在<zabbix 用户数据库>导入数据之后,禁止:<非特权用户>创建<存储函数>
use zabbix;
show tables;
EOF
##
## (6) 针对 Zabbix Server 核心服务,配置:数据库连接参数
##
Terminal window
[root@Rocky-9-18 ~]# vim /etc/zabbix/zabbix_server.conf
......
DBHost=192.168.168.16
DBName=zabbix
DBUser=zabbix
DBPassword=a123456!
DBPort=3306
......
Terminal window
[root@Rocky-9-18 ~]# cat /etc/zabbix/zabbix_server.conf | grep -vE "^\s*(#|$)"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=192.168.168.16
DBName=zabbix
DBUser=zabbix
DBPassword=a123456!
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
##
## (7) 启动:Zabbix Server 服务进程、Agent 客户端代理
##
Terminal window
[root@Rocky-9-18 ~]# systemctl enable zabbix-server zabbix-agent
[root@Rocky-9-18 ~]# systemctl restart zabbix-server zabbix-agent
[root@Rocky-9-18 ~]# firewall-cmd --permanent --zone=public --add-port=10050/tcp ## 防火墙放行:<Zabbix Agent 客户端代理>的<侦听端口>
[root@Rocky-9-18 ~]# firewall-cmd --permanent --zone=public --add-port=10051/tcp ## 防火墙放行:<Zabbix Server 核心服务>的<侦听端口>
[root@Rocky-9-18 ~]# firewall-cmd --reload
## 禁用:SElinux
if ! [[ $(getenforce) == "Disabled" ]]; then
sed -r -i 's/^\s*SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
reboot
fi

5. 执行:Web安装向导#

http://zabbix.test.cn

##
## Web 登录:
## 管理员:Admin
## 默认口令:zabbix
##

##
## 在<Web 安装向导>执行完成之后,需编辑:<Nginx Web 前端>的</etc/zabbix/web/zabbix.conf.php>
## 明确指定:$ZBX_SERVER = '192.168.168.18'; ## 这是:Zabbix Server 的 IP 地址
## $ZBX_SERVER_PORT = '10051'; ## 这是:Zabbix Server 的侦听端口
## 从而访问:分离式部署的<Zabbix Server 核心服务节点>
## 否则:将会默认访问<localhost>
##
Terminal window
vi /etc/zabbix/web/zabbix.conf.php
......
$ZBX_SERVER = '192.168.168.18';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'zabbix_server';
......
##
## 刷新页面
##

##
## 修改:<Zabbix Web 前端>的<Admin 管理员密码>
##

6. 查看日志:zabbix-server.log 日志#

Terminal window
cat /var/log/zabbix/zabbix_server.log

★ Zabbix -1-作业#

1. 采用松耦合的方式#

  1. 采用松耦合的方式,来部署 Zabbix Server 核心服务、Nginx Web 前端、MySQL 数据库
Terminal window
[root@Rocky-9-16 ~]# dnf install -y mysql-server mysql
[root@Rocky-9-16 ~]# systemctl enable mysqld
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service /usr/lib/systemd/system/mysqld.service.
[root@Rocky-9-16 ~]# systemctl restart mysqld
[root@Rocky-9-16 ~]# ss -tunlp | grep mysql
tcp LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=38456,fd=31))
tcp LISTEN 0 151 *:3306 *:* users:(("mysqld",pid=38456,fd=33))
[root@Rocky-9-16 ~]# mysqladmin -uroot password 'a123456!'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@Rocky-9-16 ~]# mysql -uroot -p"a123456!" -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
=
[root@Rocky-9-16 ~]# mysql -uroot -p'a123456!' <<EOF
> create database if not exists zabbix character set utf8mb4 collate utf8mb4_bin;
> create user if not exists root@'%' identified by 'a123456!';
> grant all privileges on *.* to root@'%';
> create user if not exists zabbix@localhost identified by 'a123456!';
> grant all privileges on zabbix.* to zabbix@localhost;
> create user if not exists zabbix@'%' identified by 'a123456!';
> grant all privileges on zabbix.* to zabbix@'%';
> set global log_bin_trust_function_creators = 1;
> EOF
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@Rocky-9-16 ~]#
[root@Rocky-9-16 ~]# systemctl status firewalld.service
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@Rocky-9-16 ~]#
[root@Rocky-9-17 ~]# vim /etc/yum.repos.d/ustc_epel_9.repo
[root@Rocky-9-17 ~]# cat /etc/yum.repos.d/ustc_epel_9.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
[root@Rocky-9-17 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
获取https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
警告:/var/tmp/rpm-tmp.J9AvCl: 头V4 RSA/SHA512 Signature, 密钥 ID 08efa7dd: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@Rocky-9-17 ~]# dnf clean all && dnf makecache
33 个文件已删除
Rocky Linux 9 - BaseOS 1.1 MB/s | 9.9 MB 00:09
Rocky Linux 9 - AppStream 39 kB/s | 14 MB 06:06
Rocky Linux 9 - Extras 140 B/s | 17 kB 02:02
Extra Packages for Enterprise Linux 9 - x86_64 2.4 MB/s | 20 MB 00:08
Zabbix Official Repository - x86_64 72 kB/s | 566 kB 00:07
Zabbix Official Repository (non-supported) - x86_64 661 B/s | 1.1 kB 00:01
Zabbix Official Repository (Agent2 Plugins) - x86_64 102 B/s | 1.6 kB 00:16
元数据缓存已建立。
[root@Rocky-9-17 ~]#
[root@Rocky-9-17 ~]# dnf install -y zabbix-web-mysql zabbix-nginx-conf
[root@Rocky-9-17 ~]# vim /etc/nginx/conf.d/zabbix.conf
[root@Rocky-9-17 ~]# head -n9 /etc/nginx/conf.d/zabbix.conf | grep -vE "^\s*(#|$)"
server {
listen 80;
server_name zabbix.test.cn;
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
[root@Rocky-9-17 ~]# vim /etc/php-fpm.d/zabbix.conf
[root@Rocky-9-17 ~]# cat /etc/php-fpm.d/zabbix.conf | grep -E "user|group|listen|date"
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1
php_value[date.timezone] = Asia/Shanghai
[root@Rocky-9-17 ~]# setfacl -m u:nginx:rwx /etc/zabbix/web/
[root@Rocky-9-17 ~]# ls -ald /etc/zabbix/web/
drwxrwxr-x+ 2 apache apache 33 2月 5 14:49 /etc/zabbix/web/
[root@Rocky-9-17 ~]# systemctl status firewalld.service
○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@Rocky-9-17 ~]# getenforce
Disabled
[root@Rocky-9-17 ~]# cat /etc/selinux/config | grep SELINUX
# SELINUX= can take one of these three values:
# NOTE: Up to RHEL 8 release included, SELINUX=disabled would also
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
SELINUXTYPE=targeted
[root@Rocky-9-17 ~]#
[root@Rocky-9-17 ~]# systemctl enable nginx php-fpm --now
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service → /usr/lib/systemd/system/nginx.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service → /usr/lib/systemd/system/php-fpm.service.
[root@Rocky-9-17 ~]# ss -tunlp
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 127.0.0.1:323 0.0.0.0:* users:(("chronyd",pid=763,fd=5))
udp UNCONN 0 0 [::1]:323 [::]:* users:(("chronyd",pid=763,fd=6))
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=39202,fd=6),("nginx",pid=39201,fd=6),("nginx",pid=39200,fd=6),("nginx",pid=39199,fd=6),("nginx",pid=39198,fd=6))
tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=783,fd=3))
tcp LISTEN 0 511 [::]:80 [::]:* users:(("nginx",pid=39202,fd=7),("nginx",pid=39201,fd=7),("nginx",pid=39200,fd=7),("nginx",pid=39199,fd=7),("nginx",pid=39198,fd=7))
tcp LISTEN 0 128 [::]:22 [::]:* users:(("sshd",pid=783,fd=4))
[root@Rocky-9-17 ~]# systemctl status nginx.service php-fpm.service
● nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
└─php-fpm.conf
Active: active (running) since Thu 2026-02-05 15:04:15 CST; 42s ago
Process: 39194 ExecStartPre=/usr/bin/rm -f /run/nginx.pid (code=exited, status=0/SUCCESS)
Process: 39196 ExecStartPre=/usr/sbin/nginx -t (code=exited, status=0/SUCCESS)
Process: 39197 ExecStart=/usr/sbin/nginx (code=exited, status=0/SUCCESS)
Main PID: 39198 (nginx)
Tasks: 5 (limit: 4178)
Memory: 4.7M (peak: 5.0M)
CPU: 42ms
CGroup: /system.slice/nginx.service
├─39198 "nginx: master process /usr/sbin/nginx"
├─39199 "nginx: worker process"
├─39200 "nginx: worker process"
├─39201 "nginx: worker process"
└─39202 "nginx: worker process"
2月 05 15:04:15 Rocky-9-17 systemd[1]: Starting The nginx HTTP and reverse proxy server...
2月 05 15:04:15 Rocky-9-17 nginx[39196]: nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
2月 05 15:04:15 Rocky-9-17 nginx[39196]: nginx: configuration file /etc/nginx/nginx.conf test is successful
2月 05 15:04:15 Rocky-9-17 systemd[1]: Started The nginx HTTP and reverse proxy server.
● php-fpm.service - The PHP FastCGI Process Manager
Loaded: loaded (/usr/lib/systemd/system/php-fpm.service; enabled; preset: disabled)
Active: active (running) since Thu 2026-02-05 15:04:15 CST; 42s ago
Main PID: 39195 (php-fpm)
Status: "Processes active: 0, idle: 10, Requests: 0, slow: 0, Traffic: 0req/sec"
Tasks: 11 (limit: 4178)
Memory: 18.5M (peak: 19.0M)
CPU: 95ms
CGroup: /system.slice/php-fpm.service
├─39195 "php-fpm: master process (/etc/php-fpm.conf)"
├─39203 "php-fpm: pool www"
├─39204 "php-fpm: pool www"
├─39205 "php-fpm: pool www"
├─39206 "php-fpm: pool www"
├─39207 "php-fpm: pool www"
├─39208 "php-fpm: pool zabbix"
├─39209 "php-fpm: pool zabbix"
├─39210 "php-fpm: pool zabbix"
├─39211 "php-fpm: pool zabbix"
└─39212 "php-fpm: pool zabbix"
2月 05 15:04:15 Rocky-9-17 systemd[1]: Starting The PHP FastCGI Process Manager...
2月 05 15:04:15 Rocky-9-17 systemd[1]: Started The PHP FastCGI Process Manager.
[root@Rocky-9-17 ~]#

Terminal window
[root@Rocky-9-17 ~]# chmod 777 simfang.ttf
[root@Rocky-9-17 ~]# mv simfang.ttf /usr/share/zabbix/assets/fonts/
[root@Rocky-9-17 ~]# vim +88 /usr/share/zabbix/include/defines.inc.php
[root@Rocky-9-17 ~]# grep -n ZBX_GRAPH_FONT_NAME /usr/share/zabbix/include/defines.inc.php
88://define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
89:define('ZBX_GRAPH_FONT_NAME', 'simfang'); // font file name
[root@Rocky-9-17 ~]# systemctl restart nginx.service php-fpm.service
[root@Rocky-9-18 ~]# vim /etc/yum.repos.d/ustc_epel_9.repo
[root@Rocky-9-18 ~]# cat /etc/yum.repos.d/ustc_epel_9.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
[root@Rocky-9-18 ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
获取https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
警告:/var/tmp/rpm-tmp.hosafe: 头V4 RSA/SHA512 Signature, 密钥 ID 08efa7dd: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@Rocky-9-18 ~]# dnf clean all && dnf makecache
25 个文件已删除
Rocky Linux 9 - BaseOS 98 kB/s | 9.9 MB 01:43
Rocky Linux 9 - AppStream 904 kB/s | 14 MB 00:15
Rocky Linux 9 - Extras 493 B/s | 17 kB 00:34
Extra Packages for Enterprise Linux 9 - x86_64 2.3 MB/s | 20 MB 00:08
元数据缓存已建立。
[root@Rocky-9-18 ~]#
[root@Rocky-9-18 ~]# dnf install -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
上次元数据过期检查:0:37:19 前,执行于 2026年02月05日 星期四 15时03分56秒。
软件包 zabbix-server-mysql-6.0.43-release1.el9.x86_64 已安装。
软件包 zabbix-sql-scripts-6.0.43-release1.el9.noarch 已安装。
软件包 zabbix-selinux-policy-6.0.43-release1.el9.x86_64 已安装。
软件包 zabbix-agent-6.0.43-release1.el9.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root@Rocky-9-18 ~]# dnf install -y mysql
上次元数据过期检查:0:18:47 前,执行于 2026年02月05日 星期四 15时48分37秒。
软件包 mysql-8.0.44-1.el9_7.x86_64 已安装。
依赖关系解决。
无需任何处理。
完毕!
[root@Rocky-9-18 ~]# #初始架构和数据
[root@Rocky-9-18 ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'a123456!' -h 192.168.88.11 zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@Rocky-9-18 ~]# #禁用:log_bin_trust_function_creators 选项。
[root@Rocky-9-18 ~]#
[root@Rocky-9-18 ~]# mysql -uroot -p'a123456!' -h 192.168.88.11 <<EOF
> set global log_bin_trust_function_creators = 0;
> use zabbix;
> show tables;
> EOF
mysql: [Warning] Using a password on the command line interface can be insecure.
Tables_in_zabbix
acknowledges
actions
alerts
auditlog
......
widget
widget_field
[root@Rocky-9-18 ~]# #配置:数据库连接参数
[root@Rocky-9-18 ~]#
[root@Rocky-9-18 ~]# vim /etc/zabbix/zabbix_server.conf
[root@Rocky-9-18 ~]# cat /etc/zabbix/zabbix_server.conf | grep -vE "^\s*(#|$)"
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=192.168.88.11
DBName=zabbix
DBUser=zabbix
DBPassword=a123456!
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
[root@Rocky-9-18 ~]#
[root@Rocky-9-18 ~]# systemctl enable zabbix-server zabbix-agent
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.
[root@Rocky-9-18 ~]# systemctl restart zabbix-server zabbix-agent
[root@Rocky-9-18 ~]#

Terminal window
[root@Rocky-9-17 ~]# vim /etc/zabbix/web/zabbix.conf.php
[root@Rocky-9-17 ~]# grep ZBX_SE /etc/zabbix/web/zabbix.conf.php
// $ZBX_SERVER = '';
// $ZBX_SERVER_PORT = '';
$ZBX_SERVER = '192.168.88.13';
$ZBX_SERVER_PORT = '10051';
$ZBX_SERVER_NAME = 'Zabbix_Server';
[root@Rocky-9-17 ~]#

2. 采用紧耦合的方式#

  1. 采用紧耦合的方式,来部署 Zabbix Server 核心服务、Nginx Web 前端、MySQL 数据库
Terminal window
[root@zabbix ~]# systemctl status firewalld.service
firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; disabled; preset: enabled)
Active: inactive (dead)
Docs: man:firewalld(1)
[root@zabbix ~]# getenforce
Disabled
[root@zabbix ~]# cat /etc/selinux/config | grep SELINUX
# SELINUX= can take one of these three values:
# NOTE: Up to RHEL 8 release included, SELINUX=disabled would also
#SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of these three values:
SELINUXTYPE=targeted
[root@zabbix ~]# vim /etc/yum.repos.d/ustc_epel_9.repo
[root@zabbix ~]# cat /etc/yum.repos.d/ustc_epel_9.repo
[epel]
name=Extra Packages for Enterprise Linux $releasever - $basearch
baseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
[root@Rocky-9-17 ~]# dnf clean all && dnf makecache
33 个文件已删除
Rocky Linux 9 - BaseOS 1.1 MB/s | 9.9 MB 00:09
Rocky Linux 9 - AppStream 39 kB/s | 14 MB 06:06
Rocky Linux 9 - Extras 140 B/s | 17 kB 02:02
Extra Packages for Enterprise Linux 9 - x86_64 2.4 MB/s | 20 MB 00:08
Zabbix Official Repository - x86_64 72 kB/s | 566 kB 00:07
Zabbix Official Repository (non-supported) - x86_64 661 B/s | 1.1 kB 00:01
Zabbix Official Repository (Agent2 Plugins) - x86_64 102 B/s | 1.6 kB 00:16
元数据缓存已建立。
#[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/8/x86_64/zabbix-release-6.0-4.el8.noarch.rpm //适配 Rocky 8 的 Zabbix 6.0 源
[root@zabbix ~]# rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm //适配 Rocky 9 的 Zabbix 6.0 源
获取https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm
警告:/var/tmp/rpm-tmp.jiGmYA: 头V4 RSA/SHA512 Signature, 密钥 ID 08efa7dd: NOKEY
Verifying... ################################# [100%]
准备中... ################################# [100%]
正在升级/安装...
1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@zabbix ~]# dnf install -y mysql-server mysql
Rocky Linux 9 - BaseOS 94 B/s | 4.3 kB 00:46
Rocky Linux 9 - AppStream 106 B/s | 4.8 kB 00:46
Rocky Linux 9 - Extras 68 B/s | 3.1 kB 00:46
依赖关系解决。
=====================================
已安装:
mariadb-connector-c-config-3.2.6-1.el9_0.noarch mecab-0.996-3.el9.4.x86_64 mysql-8.0.44-1.el9_7.x86_64 mysql-common-8.0.44-1.el9_7.x86_64 mysql-errmsg-8.0.44-1.el9_7.x86_64
mysql-selinux-1.0.14-1.el9_6.noarch mysql-server-8.0.44-1.el9_7.x86_64 protobuf-lite-3.14.0-16.el9.x86_64
完毕!
[root@zabbix ~]# systemctl enable mysqld --now
Created symlink /etc/systemd/system/multi-user.target.wants/mysqld.service /usr/lib/systemd/system/mysqld.service.
[root@zabbix ~]# ss -tunlp | grep mysql
tcp LISTEN 0 151 *:3306 *:* users:(("mysqld",pid=31681,fd=33))
tcp LISTEN 0 70 *:33060 *:* users:(("mysqld",pid=31681,fd=31))
[root@zabbix ~]# mysqladmin -uroot password 'a123456!'
mysqladmin: [Warning] Using a password on the command line interface can be insecure.
Warning: Since password will be sent to server in plain text, use ssl connection to ensure password safety.
[root@zabbix ~]# mysql -uroot -p"a123456!" -e "show databases;"
mysql: [Warning] Using a password on the command line interface can be insecure.
+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| sys |
+--------------------+
[root@zabbix ~]# mysql -uroot -p'a123456!' <<EOF
> create database if not exists zabbix character set utf8mb4 collate utf8mb4_bin;
> create user if not exists root@'%' identified by 'a123456!';
> grant all privileges on *.* to root@'%';
> create user if not exists zabbix@localhost identified by 'a123456!';
> grant all privileges on zabbix.* to zabbix@localhost;
> create user if not exists zabbix@'%' identified by 'a123456!';
> grant all privileges on zabbix.* to zabbix@'%';
> set global log_bin_trust_function_creators = 1;
> EOF
[root@zabbix ~]# dnf install -y zabbix-web-mysql zabbix-nginx-conf
上次元数据过期检查:0:00:39 前,执行于 2026年02月06日 星期五 09时31分03秒。
依赖关系解决。
====================================
完毕!
[root@zabbix ~]# vim /etc/nginx/conf.d/zabbix.conf
[root@zabbix ~]# head -n9 /etc/nginx/conf.d/zabbix.conf | grep -vnE "^\s*(#|$)"
1:server {
2: listen 80;
3: server_name zabbix.test.cn;
5: root /usr/share/zabbix;
7: index index.php;
9: location = /favicon.ico {
[root@zabbix ~]# vim /etc/php-fpm.d/zabbix.conf
[root@zabbix ~]# cat /etc/php-fpm.d/zabbix.conf | grep -nE "user|group|listen|date"
2:user = nginx
3:group = nginx
5:listen = /run/php-fpm/zabbix.sock
6:listen.acl_users = apache,nginx
7:listen.allowed_clients = 127.0.0.1
25:php_value[date.timezone] = Asia/Shanghai
[root@zabbix ~]# setfacl -m u:nginx:rwx /etc/zabbix/web/
[root@zabbix ~]# ls -ald /etc/zabbix/web/
drwxrwxr-x+ 2 apache apache 33 2月 6 09:32 /etc/zabbix/web/
[root@zabbix ~]#

Terminal window
[root@zabbix ~]# chmod 777 simfang.ttf
[root@zabbix ~]# cp simfang.ttf /usr/share/zabbix/assets/fonts/
[root@zabbix ~]# vim +88 /usr/share/zabbix/include/defines.inc.php
[root@zabbix ~]# grep -n ZBX_GRAPH_FONT_NAME /usr/share/zabbix/include/defines.inc.php
88://define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name
89:define('ZBX_GRAPH_FONT_NAME', 'simfang'); // font file name
[root@zabbix ~]# systemctl enable nginx php-fpm --now
Created symlink /etc/systemd/system/multi-user.target.wants/nginx.service /usr/lib/systemd/system/nginx.service.
Created symlink /etc/systemd/system/multi-user.target.wants/php-fpm.service /usr/lib/systemd/system/php-fpm.service.
[root@zabbix ~]# systemctl status nginx.service php-fpm.service
nginx.service - The nginx HTTP and reverse proxy server
Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; preset: disabled)
Drop-In: /usr/lib/systemd/system/nginx.service.d
└─php-fpm.conf
................
[root@zabbix ~]#
[root@zabbix ~]# dnf install -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent
上次元数据过期检查:0:14:19 前,执行于 2026年02月06日 星期五 09时31分03秒。
依赖关系解决。
==========================
................
zabbix-sql-scripts-6.0.43-release1.el9.noarch
完毕!
[root@zabbix ~]# zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p'a123456!' zabbix
mysql: [Warning] Using a password on the command line interface can be insecure.
[root@zabbix ~]# mysql -uroot -p'a123456!' <<EOF
> set global log_bin_trust_function_creators = 0;
> use zabbix;
> show tables;
> EOF
................
widget_field
[root@zabbix ~]#
[root@zabbix ~]# vim /etc/zabbix/zabbix_server.conf
[root@zabbix ~]# cat /etc/zabbix/zabbix_server.conf | grep -vnE "^\s*(#|$)"
38:LogFile=/var/log/zabbix/zabbix_server.log
49:LogFileSize=0
72:PidFile=/run/zabbix/zabbix_server.pid
82:SocketDir=/run/zabbix
93:DBHost=localhost
105:DBName=zabbix
121:DBUser=zabbix
129:DBPassword=a123456!
146:DBPort=3306
391:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
515:Timeout=4
556:AlertScriptsPath=/usr/lib/zabbix/alertscripts
565:ExternalScripts=/usr/lib/zabbix/externalscripts
601:LogSlowQueries=3000
716:StatsAllowedIP=127.0.0.1
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent --now
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-server.service → /usr/lib/systemd/system/zabbix-server.service.
Created symlink /etc/systemd/system/multi-user.target.wants/zabbix-agent.service → /usr/lib/systemd/system/zabbix-agent.service.

紧耦合Zabbix_Server安装脚本#

#!/bin/bash
# Zabbix 6.0 最终完美版 | Rocky Linux 9
# 已严格匹配你的所有配置:EPEL、MySQL、Nginx、PHP、Zabbix Server
# ===================== 固定配置 =====================
DB_PASSWORD="a123456!"
ZABBIX_DB="zabbix"
ZABBIX_USER="zabbix"
TIMEZONE="Asia/Shanghai"
# ======================================================
echo -e "\n===== 1. 关闭防火墙 ====="
# 停止防火墙
if systemctl stop firewalld ; then
echo "✅ 防火墙 停止成功"
else
echo "⚠️ 防火墙 未运行或停止失败"
fi
# 禁用开机自启
if systemctl disable firewalld ; then
echo "✅ 防火墙 开机自启 已禁用"
else
echo "⚠️ 防火墙 开机自启 禁用失败/已禁用"
fi
# ======================================================
echo -e "\n===== 2. 关闭 SELinux ====="
# 永久修改配置文件
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
if grep -q "SELINUX=disabled" /etc/selinux/config; then
echo "✅ SELinux 配置已永久禁用(重启生效)"
else
echo "❌ SELinux 配置修改失败"
fi
# 临时关闭(当前会话)+ 不退出脚本
setenforce 0 > /dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ SELinux 临时关闭成功"
else
echo "⚠️ SELinux 已关闭,无需重复操作"
fi
# ======================================================
echo -e "\n===== 3. 配置阿里云 EPEL 源 ====="
# 写入 repo 文件
cat > /etc/yum.repos.d/ustc_epel_9.repo <<EOF
[epel]
name=Extra Packages for Enterprise Linux \$releasever - \$basearch
baseurl=https://mirrors.aliyun.com/epel/\$releasever//Everything/\$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
EOF
# 检测文件是否创建成功
if [ -f /etc/yum.repos.d/ustc_epel_9.repo ]; then
echo "✅ EPEL 源文件创建成功"
else
echo "❌ EPEL 源文件创建失败"
fi
# ======================================================
echo -e "\n===== 4. 安装 Zabbix 官方源 ====="
# 安装 Zabbix 源(静默安装 + 失败忽略)
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm --nosignature
# 检测是否安装成功
if rpm -q zabbix-release ; then
echo "✅ Zabbix 官方源 安装成功"
else
echo "⚠️ Zabbix 官方源 已安装或安装失败"
fi
# ======================================================
echo -e "\n===== 5. 重建缓存 ====="
# 自动检测并杀死 DNF/YUM 锁进程
echo "🔍 检测是否有 DNF/YUM 进程占用..."
for pid in $(ps -ef | grep -E "dnf|yum" | grep -v grep | awk '{print $2}'); do
kill -9 $pid >/dev/null 2>&1 && echo "✅ 已强制结束占用进程 PID: $pid"
done
# 强制删除 yum/dnf 锁文件(最关键!)
rm -f /var/run/yum.pid /var/run/dnf.pid /var/lib/dnf/rpm.lock
rm -f /var/lib/rpm/.rpm.lock
# 清理并重建缓存(静默执行)
dnf clean all && dnf makecache -y
# 检测是否成功
if [ $? -eq 0 ]; then
echo "✅ 缓存重建成功"
else
echo "❌ 缓存重建失败"
fi
# ======================================================
echo -e "\n===== 6. 安装 MySQL ====="
# 安装 MySQL(静默安装)
dnf install -y mysql-server mysql
# 检测安装是否成功
if [ $? -eq 0 ]; then
echo "✅ MySQL 安装成功"
else
echo "❌ MySQL 安装失败"
exit 1
fi
# 启动并开机自启
systemctl enable mysqld --now
# 检测服务状态
if systemctl is-active --quiet mysqld; then
echo "✅ MySQL 服务已启动并开机自启"
else
echo "❌ MySQL 服务启动失败"
fi
# ======================================================
echo -e "\n===== 7. 设置 MySQL 密码 ====="
# 尝试设置密码(兼容已设置过的情况)
mysqladmin -uroot password "$DB_PASSWORD" 2>/dev/null || true
# 检测是否能正常登录(验证密码有效性)
if mysql -uroot -p"$DB_PASSWORD" -e "SELECT 1" ; then
echo "✅ MySQL 密码设置成功,可正常登录"
else
echo "⚠️ MySQL 密码已设置,无需重复操作"
fi
# ======================================================
echo -e "\n===== 8. 创建库与授权 ====="
# 执行数据库初始化(修复了拼写错误)
mysql -uroot -p"$DB_PASSWORD" <<EOF
create database if not exists zabbix character set utf8mb4 collate utf8mb4_bin;
create user if not exists root@'%' identified by 'a123456!';
grant all privileges on *.* to root@'%';
create user if not exists zabbix@localhost identified by 'a123456!';
grant all privileges on zabbix.* to zabbix@localhost;
create user if not exists zabbix@'%' identified by 'a123456!';
grant all privileges on zabbix.* to zabbix@'%';
set global log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EOF
# 检测执行结果
if [ $? -eq 0 ]; then
echo "✅ 数据库创建与权限授权成功"
else
echo "❌ 数据库初始化失败"
exit 1
fi
# ======================================================
echo -e "\n===== 9. 安装 Zabbix WEB + Nginx + PHP ====="
# 安装
dnf install -y zabbix-web-mysql zabbix-nginx-conf
# 检测安装结果
if [ $? -eq 0 ]; then
echo "✅ Zabbix WEB + Nginx + PHP 安装成功"
else
echo "❌ 安装失败,请检查网络或YUM源"
exit 1
fi
# ======================================================
echo -e "\n===== 10. Nginx 配置 ====="
# 备份原有配置(不存在也不报错)
cp /etc/nginx/conf.d/zabbix.conf /etc/nginx/conf.d/zabbix.conf-backup
# 写入新配置
cat > /etc/nginx/conf.d/zabbix.conf <<'EOF'
server {
listen 80;
server_name zabbix.test.cn;
root /usr/share/zabbix;
index index.php;
location = /favicon.ico {
log_not_found off;
}
location / {
try_files $uri $uri/ =404;
}
location /assets {
access_log off;
expires 10d;
}
location ~ /\.ht {
deny all;
}
location ~ /(api\/|conf[^\.]|include|locale) {
deny all;
return 404;
}
location /vendor {
deny all;
return 404;
}
location ~ [^/]\.php(/|$) {
fastcgi_pass unix:/run/php-fpm/zabbix.sock;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_index index.php;
fastcgi_param DOCUMENT_ROOT /usr/share/zabbix;
fastcgi_param SCRIPT_FILENAME /usr/share/zabbix$fastcgi_script_name;
fastcgi_param PATH_TRANSLATED /usr/share/zabbix$fastcgi_script_name;
include fastcgi_params;
fastcgi_param QUERY_STRING $query_string;
fastcgi_param REQUEST_METHOD $request_method;
fastcgi_param CONTENT_TYPE $content_type;
fastcgi_param CONTENT_LENGTH $content_length;
fastcgi_intercept_errors on;
fastcgi_ignore_client_abort off;
fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
}
}
EOF
# 检测配置文件是否生成成功
if [ -f /etc/nginx/conf.d/zabbix.conf ]; then
echo "✅ Nginx 配置文件写入成功"
else
echo "❌ Nginx 配置文件写入失败"
exit 1
fi
# ======================================================
echo -e "\n===== 11. PHP-FPM 配置 ====="
# 备份原有配置(不存在也不报错)
cp /etc/php-fpm.d/zabbix.conf /etc/php-fpm.d/zabbix.conf.backup
# 写入新配置
cat > /etc/php-fpm.d/zabbix.conf <<'EOF'
[zabbix]
user = nginx
group = nginx
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx
listen.allowed_clients = 127.0.0.1
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 200
php_value[session.save_handler] = files
php_value[session.save_path] = /var/lib/php/session
php_value[max_execution_time] = 300
php_value[memory_limit] = 128M
php_value[post_max_size] = 16M
php_value[upload_max_filesize] = 2M
php_value[max_input_time] = 300
php_value[max_input_vars] = 10000
php_value[date.timezone] = Asia/Shanghai
EOF
# 检测配置文件是否生成成功
if [ -f /etc/php-fpm.d/zabbix.conf ]; then
echo "✅ PHP-FPM 配置文件写入成功"
else
echo "❌ PHP-FPM 配置文件写入失败"
exit 1
fi
# ======================================================
echo -e "\n===== 12. 目录权限 ====="
# 设置权限(不存在也不报错)
setfacl -m u:nginx:rwx /etc/zabbix/web/
# 验证权限是否设置成功
if getfacl /etc/zabbix/web/ | grep -q "nginx:rwx"; then
echo "✅ Nginx 目录权限设置成功"
else
echo "⚠️ 目录权限无需设置或已存在"
fi
# ======================================================
echo -e "\n===== 13. 中文字体(解决图形乱码)====="
# 下载字体(修复可用地址 + 静默)
wget -O /root/simfang.ttf https://gitcode.com/qq_39549344/soft/raw/main/simfang.ttf --no-check-certificate -q
# 检测是否下载成功
if [ -f /root/simfang.ttf ]; then
echo "✅ 中文字体下载成功"
# 复制并替换配置
chmod 777 /root/simfang.ttf
cp /root/simfang.ttf /usr/share/zabbix/assets/fonts/
# 修改Zabbix字体配置
sed -i '88s/^/\/\//' /usr/share/zabbix/include/defines.inc.php 2>/dev/null
sed -i '88a define('"'"'ZBX_GRAPH_FONT_NAME'"'"', '"'"'simfang'"'"'); // font file name' /usr/share/zabbix/include/defines.inc.php 2>/dev/null
echo "✅ 中文字体已部署到 Zabbix"
else
echo "⚠️ 字体下载失败(网络问题),跳过配置"
fi
# ======================================================
echo -e "\n===== 14. 安装 Zabbix Server & Agent & get ====="
# 静默安装
dnf install -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-get
# 检测安装结果
if [ $? -eq 0 ]; then
echo "✅ Zabbix Server & Agent 安装成功"
else
echo "❌ 安装失败,请检查 YUM 源或网络"
exit 1
fi
# ======================================================
echo -e "\n===== 15. 导入数据库 ====="
# 静默导入数据库
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -p"$DB_PASSWORD" zabbix
# 检测导入是否成功
if [ $? -eq 0 ]; then
echo "✅ Zabbix 数据库导入成功"
else
echo "❌ 数据库导入失败(密码错误或文件不存在)"
exit 1
fi
# ======================================================
echo -e "\n===== 16. 关闭函数信任 ====="
# 执行关闭命令(静默)
mysql -uroot -p"$DB_PASSWORD" -e "set global log_bin_trust_function_creators = 0;"
# 检测是否执行成功
if [ $? -eq 0 ]; then
echo "✅ 函数信任已关闭"
else
echo "❌ 关闭函数信任失败"
exit 1
fi
# ======================================================
echo -e "\n===== 17. Zabbix Server 配置 ====="
# 备份原有配置
cp /etc/zabbix/zabbix_server.conf /etc/zabbix/zabbix_server.conf-backup
# 写入全新配置
cat > /etc/zabbix/zabbix_server.conf << 'EOF'
LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=0
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=a123456!
DBPort=3306
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StatsAllowedIP=127.0.0.1
EOF
# ===================== 【配置检测】 =====================
# 检查文件是否生成
if [ ! -f /etc/zabbix/zabbix_server.conf ]; then
echo "❌ 配置文件生成失败!"
exit 1
fi
# 检查关键配置是否正确
ok=true
grep -q "^DBHost=localhost" /etc/zabbix/zabbix_server.conf || ok=false
grep -q "^DBName=zabbix" /etc/zabbix/zabbix_server.conf || ok=false
grep -q "^DBUser=zabbix" /etc/zabbix/zabbix_server.conf || ok=false
grep -q "^DBPassword=a123456!" /etc/zabbix/zabbix_server.conf || ok=false
grep -q "^DBPort=3306" /etc/zabbix/zabbix_server.conf || ok=false
# 输出结果
if $ok; then
echo "✅ Zabbix Server 配置文件生成并验证成功"
else
echo "❌ Zabbix 配置文件内容错误"
exit 1
fi
# ===================== 服务端日志检测:存在跳过,不存在创建赋权 =====================
echo -e "\n===== 检查 Zabbix Server 日志文件 ====="
SERVER_LOG="/var/log/zabbix/zabbix_server.log"
SNMP_LOG="/var/log/snmptrap/snmptrap.log"
# 处理 zabbix_server.log
if [ -f "$SERVER_LOG" ]; then
echo "✅ $SERVER_LOG 已存在,跳过"
else
mkdir -p /var/log/zabbix/
touch "$SERVER_LOG"
chown -R zabbix:zabbix /var/log/zabbix/
chmod 644 "$SERVER_LOG"
echo "✅ $SERVER_LOG 已创建并授权"
fi
# 处理 snmptrap.log
if [ -f "$SNMP_LOG" ]; then
echo "✅ $SNMP_LOG 已存在,跳过"
else
mkdir -p /var/log/snmptrap/
touch "$SNMP_LOG"
chown -R zabbix:zabbix /var/log/snmptrap/
chmod 644 "$SNMP_LOG"
echo "✅ $SNMP_LOG 已创建并授权"
fi
# ======================================================
echo -e "\n===== 18. 启动所有服务 ====="
# 重启服务
systemctl daemon-reload
systemctl enable nginx php-fpm zabbix-server zabbix-agent --now
systemctl restart nginx php-fpm zabbix-server zabbix-agent
# 逐个检测服务状态
all_ok=true
for service in nginx php-fpm zabbix-server zabbix-agent; do
if ! systemctl is-active --quiet $service; then
echo "❌ $service 启动失败!"
all_ok=false
fi
done
# 最终结果提示
if $all_ok; then
echo "✅ 所有服务启动并运行正常"
else
echo "❌ 部分服务启动异常,请检查!"
exit 1
fi
# ======================================================
echo -e "\n========================================"
echo -e "✅ Zabbix 6.0 安装完成!"
echo -e "🌐 访问:http://本机IP"
echo -e "👤 用户:Admin"
echo -e "🔑 密码:zabbix"
echo -e "🗝️ 数据库密码:$DB_PASSWORD"
echo -e "========================================"
📌 使用方法(超级简单)
1. 上传字体文件
把你的 `simfang.ttf` 上传到 **/root** 目录
2. 创建脚本
```bash
vim install_zabbix6.sh
```
**粘贴上面全部代码**,保存退出。
3. 加权限
```bash
chmod +x install_zabbix6.sh
```
4. 运行安装
```bash
./install_zabbix6.sh
```
脚本自动完成以下所有操作
- 关闭防火墙
- 永久关闭 SELinux
- 配置阿里云 EPEL
- 安装 MySQL 8
- 自动设置密码:`a123456!`
- 创建 zabbix + 用户
- 安装 zabbix-web、nginx、php
- 配置中文、时区
- 替换字体(**解决图形中文乱码**
- 导入 zabbix 初始数据库
- 配置 zabbis_server.conf
- 启动所有服务:nginx/php-fpm/zabbix-server/zabbix-agent
🌐 安装完成后
**访问:**
```
http://192.168.88.10
```
**默认账号:**
```
用户名:Admin
密码:zabbix
```

Zabbix-agent安装脚本#

#!/bin/bash
# Zabbix Agent 自动安装脚本 | Rocky Linux 9 / RHEL 9
# 优化:防卡死、防冲突、变量生效、格式正确、全流程检测
# ===================== 固定配置 =====================
hostname=$(hostname) # 获取本地设备名
ZABBIX_ALLOW_NETWORK="192.168.88.0/24" # 被动监控本地的地址、允许整个网段监控
ZABBIX_ACTIVE_IP="192.168.88.1" # 本地主动推送的地址、只允许IP
# ======================================================
echo -e "\n===== 1. 关闭防火墙 ====="
if systemctl stop firewalld >/dev/null 2>&1; then
echo "✅ 防火墙 停止成功"
else
echo "⚠️ 防火墙 未运行或停止失败"
fi
if systemctl disable firewalld >/dev/null 2>&1; then
echo "✅ 防火墙 开机自启 已禁用"
else
echo "⚠️ 防火墙 开机自启 禁用失败/已禁用"
fi
echo -e "\n===== 2. 关闭 SELinux ====="
sed -i 's/^SELINUX=.*/SELINUX=disabled/' /etc/selinux/config
if grep -q "SELINUX=disabled" /etc/selinux/config; then
echo "✅ SELinux 配置已永久禁用(重启生效)"
else
echo "❌ SELinux 配置修改失败"
fi
setenforce 0 >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ SELinux 临时关闭成功"
else
echo "⚠️ SELinux 已关闭,无需重复操作"
fi
echo -e "\n===== 3. 配置阿里云 EPEL 源 ====="
cat > /etc/yum.repos.d/aliyun_epel_9.repo <<EOF
[epel]
name=Extra Packages for Enterprise Linux \$releasever - \$basearch
baseurl=https://mirrors.aliyun.com/epel/\$releasever/Everything/\$basearch
failovermethod=priority
enabled=1
gpgcheck=0
excludepkgs=zabbix*
EOF
if [ -f /etc/yum.repos.d/aliyun_epel_9.repo ]; then
echo "✅ EPEL 源文件创建成功"
else
echo "❌ EPEL 源文件创建失败"
fi
echo -e "\n===== 4. 安装 Zabbix 官方源 ====="
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm --nosignature
if rpm -q zabbix-release >/dev/null 2>&1; then
echo "✅ Zabbix 官方源 安装成功"
else
echo "⚠️ Zabbix 官方源 已安装或安装失败"
fi
echo -e "\n===== 5. 重建缓存(防卡死强制解锁) ====="
echo "🔍 清理 DNF/YUM 占用进程..."
for pid in $(ps -ef | grep -E "dnf|yum|rpm" | grep -v grep | awk '{print $2}'); do
kill -9 $pid >/dev/null 2>&1 && echo "✅ 已结束占用进程 PID: $pid"
done
rm -f /var/run/yum.pid /var/run/dnf.pid /var/lib/dnf/rpm.lock /var/lib/rpm/.rpm.lock
dnf clean all >/dev/null 2>&1
timeout 120 dnf makecache -y >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "✅ 缓存重建成功"
else
echo "⚠️ 缓存跳过,继续安装"
fi
echo -e "\n===== 6. 安装 zabbix-agent + zabbix-sender ====="
dnf install -y zabbix-agent zabbix-sender
if [ $? -eq 0 ]; then
echo "✅ zabbix-agent + zabbix-sender 安装成功"
else
echo "❌ 安装失败,请检查YUM源"
exit 1
fi
echo -e "\n===== 7. Zabbix-agent 配置(变量自动生效) ====="
# 备份
cp -n /etc/zabbix/zabbix_agentd.conf /etc/zabbix/zabbix_agentd.conf.backup
# 写入正确配置(无空格、变量生效)
cat > /etc/zabbix/zabbix_agentd.conf << EOF
PidFile=/run/zabbix/zabbix_agentd.pid
LogFile=/var/log/zabbix/zabbix_agentd.log
LogFileSize=0
# Zabbix服务地址,谁可以监控我/可以写网段
Server=$ZABBIX_ALLOW_NETWORK
ListenPort=10050
# Zabbix服务地址,是我主动推数据给谁/只能写IP
ServerActive=$ZABBIX_ACTIVE_IP
# 本地主机设备名
Hostname=$hostname
Timeout=30
Include=/etc/zabbix/zabbix_agentd.d/*.conf
EOF
# 权限
chown zabbix:zabbix /etc/zabbix/zabbix_agentd.conf
chmod 644 /etc/zabbix/zabbix_agentd.conf
echo "✅ Zabbix agent 配置已生成"
# ===================== 客户端日志检测:存在跳过,不存在创建赋权 =====================
echo -e "\n===== 检查 Zabbix Agent 日志文件 ====="
AGENT_LOG="/var/log/zabbix/zabbix_agentd.log"
if [ -f "$AGENT_LOG" ]; then
echo "✅ $AGENT_LOG 已存在,跳过"
else
mkdir -p /var/log/zabbix/
touch "$AGENT_LOG"
chown -R zabbix:zabbix /var/log/zabbix/
chmod 644 "$AGENT_LOG"
echo "✅ $AGENT_LOG 已创建并授权"
fi
echo -e "\n===== 8. 启动并开机自启 ====="
systemctl daemon-reload
systemctl enable --now zabbix-agent
systemctl restart zabbix-agent
if systemctl is-active --quiet zabbix-agent; then
echo "✅ zabbix-agent 正在运行"
else
echo "❌ zabbix-agent 启动失败,请检查配置"
fi
echo -e "\n========================================"
echo -e "✅ Zabbix-agent 安装完成!"
echo -e "📌 当前 Hostname:$hostname"
echo -e "📌 允许监控网段:$ZABBIX_ALLOW_NETWORK"
echo -e "📌 主动上报IP:$ZABBIX_ACTIVE_IP"
echo -e "⚠️ 如未自动替换,请修改:vim /etc/zabbix/zabbix_agentd.conf"
echo -e "========================================"

卸载脚本#

#!/bin/bash
# Zabbix 6.0 彻底卸载清空脚本 | Rocky Linux 9
# 安全版:不删除系统依赖,只删 Zabbix + 安装的组件
echo -e "\n===== 🔴 开始彻底卸载 Zabbix 6.0 ====="
# 1. 停止相关服务
echo -e "1. 停止服务..."
systemctl stop zabbix-server zabbix-agent nginx php-fpm mysqld 2>/dev/null
systemctl disable zabbix-server zabbix-agent nginx php-fpm mysqld 2>/dev/null
# 2. 卸载 Zabbix + MySQL + Nginx + PHP
echo -e "2. 卸载软件包..."
dnf remove -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent zabbix-get zabbix-web-mysql zabbix-nginx-conf mysql-server mysql zabbix* zabbix-agent mysql-server mysql nginx php*
rpm -e zabbix-release 2>/dev/null
# 3. 删除 Zabbix 源
#echo -e "3. 删除 YUM 源..."
#rm -rf /etc/y.repos.d/zabbix*.repo
# 4. 删除所有配置 & 数据文件
echo -e "4. 删除配置与数据..."
rm -rf /etc/zabbix
rm -rf /usr/share/zabbix
rm -rf /var/lib/zabbix
rm -rf /var/log/zabbix
rm -rf /etc/nginx/conf.d/zabbix.conf
rm -rf /etc/php-fpm.d/zabbix.conf
rm -rf /var/lib/php/session/*
rm -rf /var/lib/mysql
rm -rf /var/log/mysql*
rm -rf /run/zabbix
rm -rf /run/php-fpm/zabbix.sock
# 5. 清理字体与临时文件
echo -e "5. 清理临时文件..."
rm -rf /root/simfang.ttf
# 6. 清理系统缓存
# echo -e "6. 清理 DNF 缓存..."
# dnf clean all >/dev/null 2>&1
# dnf makecache -y >/dev/null 2>&1
echo -e "\n========================================"
echo -e "✅ Zabbix 已彻底卸载干净!"
echo -e "✅ MySQL/Nginx/PHP 已清空"
echo -e "✅ 可直接重新运行安装脚本"
echo -e "========================================\n"
01-Zabbix-Server-核心服务端-部署
https://fuwari.vercel.app/posts/zabbix监控/01-zabbix-server-核心服务端-部署/
作者
肥猫少杰
发布于
2026-06-04
许可协议
CC BY-NC-SA 4.0