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-16 | MySQL 数据库(版本:8.0) | 192.168.168.16/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
| rocky-9-17 | Nginx + PHP Web 前端 | 192.168.168.17/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
| rocky-9-18 | Zabbix Server 核心服务(版本:6.4) | 192.168.168.18/24 | Rocky Linux 9 | 1 vCPU、2GB 内存 |
2. 安装部署:MySQL数据库
#### 安装:MySQL 数据库,并创建<zabbix 用户数据库>## [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 --reload3. 安装部署:Nginx Web 前端
#### (1) 禁用:<EPEL 源>中的<Zabbix 软件包>## [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 源配置文件>## [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 前端>## [root@Rocky-9-17 ~]# dnf install -y zabbix-web-mysql zabbix-nginx-conf#### (4) 针对<Nginx Web 前端>配置:侦听端口、虚拟主机名称## [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 配置文件>,设置正确的<时区>## [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 安装向导>中,需要自定生成<配置文件>## [root@Rocky-9-17 ~]# setfacl -m u:nginx:rwx /etc/zabbix/web/#### (7) 启动:Nginx 服务进程、php-fpm 服务进程## [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 配置文件
##
[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## [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 源配置文件>## [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 客户端代理## [root@Rocky-9-18 ~]# dnf install -y zabbix-server-mysql zabbix-sql-scripts zabbix-selinux-policy zabbix-agent#### (4) 针对 MySQL 数据库,导入:初始架构和数据## [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 选项。## [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 核心服务,配置:数据库连接参数## [root@Rocky-9-18 ~]# vim /etc/zabbix/zabbix_server.conf ...... DBHost=192.168.168.16 DBName=zabbix DBUser=zabbix DBPassword=a123456! DBPort=3306 ...... [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 客户端代理## [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 fi5. 执行: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>## 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 日志
cat /var/log/zabbix/zabbix_server.log★ Zabbix -1-作业
1. 采用松耦合的方式
- 采用松耦合的方式,来部署 Zabbix Server 核心服务、Nginx Web 前端、MySQL 数据库
[root@Rocky-9-16 ~]# dnf install -y mysql-server mysql[root@Rocky-9-16 ~]# systemctl enable mysqldCreated 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 mysqltcp 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;> EOFmysql: [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 - $basearchbaseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearchfailovermethod=priorityenabled=1gpgcheck=0excludepkgs=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: NOKEYVerifying... ################################# [100%]准备中... ################################# [100%]正在升级/安装... 1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@Rocky-9-17 ~]# dnf clean all && dnf makecache33 个文件已删除Rocky Linux 9 - BaseOS 1.1 MB/s | 9.9 MB 00:09Rocky Linux 9 - AppStream 39 kB/s | 14 MB 06:06Rocky Linux 9 - Extras 140 B/s | 17 kB 02:02Extra Packages for Enterprise Linux 9 - x86_64 2.4 MB/s | 20 MB 00:08Zabbix Official Repository - x86_64 72 kB/s | 566 kB 00:07Zabbix Official Repository (non-supported) - x86_64 661 B/s | 1.1 kB 00:01Zabbix 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 = nginxgroup = nginxlisten = /run/php-fpm/zabbix.socklisten.acl_users = apache,nginxlisten.allowed_clients = 127.0.0.1php_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 ~]# getenforceDisabled[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=enforcingSELINUX=disabled# SELINUXTYPE= can take one of these three values:SELINUXTYPE=targeted
[root@Rocky-9-17 ~]#[root@Rocky-9-17 ~]# systemctl enable nginx php-fpm --nowCreated 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 -tunlpNetid State Recv-Q Send-Q Local Address:Port Peer Address:Port Processudp 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 ok2月 05 15:04:15 Rocky-9-17 nginx[39196]: nginx: configuration file /etc/nginx/nginx.conf test is successful2月 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 ~]#
[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.php88://define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name89: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 - $basearchbaseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearchfailovermethod=priorityenabled=1gpgcheck=0excludepkgs=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: NOKEYVerifying... ################################# [100%]准备中... ################################# [100%]正在升级/安装... 1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@Rocky-9-18 ~]# dnf clean all && dnf makecache25 个文件已删除Rocky Linux 9 - BaseOS 98 kB/s | 9.9 MB 01:43Rocky Linux 9 - AppStream 904 kB/s | 14 MB 00:15Rocky Linux 9 - Extras 493 B/s | 17 kB 00:34Extra 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 zabbixmysql: [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;> EOFmysql: [Warning] Using a password on the command line interface can be insecure.Tables_in_zabbixacknowledgesactionsalertsauditlog......widgetwidget_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.logLogFileSize=0PidFile=/run/zabbix/zabbix_server.pidSocketDir=/run/zabbixDBHost=192.168.88.11DBName=zabbixDBUser=zabbixDBPassword=a123456!DBPort=3306SNMPTrapperFile=/var/log/snmptrap/snmptrap.logTimeout=4AlertScriptsPath=/usr/lib/zabbix/alertscriptsExternalScripts=/usr/lib/zabbix/externalscriptsLogSlowQueries=3000StatsAllowedIP=127.0.0.1[root@Rocky-9-18 ~]#[root@Rocky-9-18 ~]# systemctl enable zabbix-server zabbix-agentCreated 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 ~]#

[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. 采用紧耦合的方式
- 采用紧耦合的方式,来部署 Zabbix Server 核心服务、Nginx Web 前端、MySQL 数据库
[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 ~]# getenforceDisabled[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=enforcingSELINUX=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 - $basearchbaseurl=https://mirrors.aliyun.com/epel/$releasever//Everything/$basearchfailovermethod=priorityenabled=1gpgcheck=0excludepkgs=zabbix*
[root@Rocky-9-17 ~]# dnf clean all && dnf makecache33 个文件已删除Rocky Linux 9 - BaseOS 1.1 MB/s | 9.9 MB 00:09Rocky Linux 9 - AppStream 39 kB/s | 14 MB 06:06Rocky Linux 9 - Extras 140 B/s | 17 kB 02:02Extra Packages for Enterprise Linux 9 - x86_64 2.4 MB/s | 20 MB 00:08Zabbix Official Repository - x86_64 72 kB/s | 566 kB 00:07Zabbix Official Repository (non-supported) - x86_64 661 B/s | 1.1 kB 00:01Zabbix 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: NOKEYVerifying... ################################# [100%]准备中... ################################# [100%]正在升级/安装... 1:zabbix-release-6.0-4.el9 ################################# [100%]
[root@zabbix ~]# dnf install -y mysql-server mysqlRocky Linux 9 - BaseOS 94 B/s | 4.3 kB 00:46Rocky Linux 9 - AppStream 106 B/s | 4.8 kB 00:46Rocky 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 --nowCreated symlink /etc/systemd/system/multi-user.target.wants/mysqld.service → /usr/lib/systemd/system/mysqld.service.
[root@zabbix ~]# ss -tunlp | grep mysqltcp 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 = nginx3:group = nginx5:listen = /run/php-fpm/zabbix.sock6:listen.acl_users = apache,nginx7:listen.allowed_clients = 127.0.0.125: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 ~]#
[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.php88://define('ZBX_GRAPH_FONT_NAME', 'graphfont'); // font file name89:define('ZBX_GRAPH_FONT_NAME', 'simfang'); // font file name
[root@zabbix ~]# systemctl enable nginx php-fpm --nowCreated 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!' zabbixmysql: [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.log49:LogFileSize=072:PidFile=/run/zabbix/zabbix_server.pid82:SocketDir=/run/zabbix93:DBHost=localhost105:DBName=zabbix121:DBUser=zabbix129:DBPassword=a123456!146:DBPort=3306391:SNMPTrapperFile=/var/log/snmptrap/snmptrap.log515:Timeout=4556:AlertScriptsPath=/usr/lib/zabbix/alertscripts565:ExternalScripts=/usr/lib/zabbix/externalscripts601:LogSlowQueries=3000716:StatsAllowedIP=127.0.0.1
[root@zabbix ~]# systemctl enable zabbix-server zabbix-agent --nowCreated 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/configif grep -q "SELINUX=disabled" /etc/selinux/config; then echo "✅ SELinux 配置已永久禁用(重启生效)"else echo "❌ SELinux 配置修改失败"fi
# 临时关闭(当前会话)+ 不退出脚本setenforce 0 > /dev/null 2>&1if [ $? -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 - \$basearchbaseurl=https://mirrors.aliyun.com/epel/\$releasever//Everything/\$basearchfailovermethod=priorityenabled=1gpgcheck=0excludepkgs=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.lockrm -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 1fi
# 启动并开机自启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" <<EOFcreate 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 1fi
# ======================================================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 1fi
# ======================================================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 1fi
# ======================================================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 = nginxgroup = nginx
listen = /run/php-fpm/zabbix.socklisten.acl_users = apache,nginxlisten.allowed_clients = 127.0.0.1
pm = dynamicpm.max_children = 50pm.start_servers = 5pm.min_spare_servers = 5pm.max_spare_servers = 35pm.max_requests = 200
php_value[session.save_handler] = filesphp_value[session.save_path] = /var/lib/php/session
php_value[max_execution_time] = 300php_value[memory_limit] = 128Mphp_value[post_max_size] = 16Mphp_value[upload_max_filesize] = 2Mphp_value[max_input_time] = 300php_value[max_input_vars] = 10000php_value[date.timezone] = Asia/ShanghaiEOF
# 检测配置文件是否生成成功if [ -f /etc/php-fpm.d/zabbix.conf ]; then echo "✅ PHP-FPM 配置文件写入成功"else echo "❌ PHP-FPM 配置文件写入失败" exit 1fi
# ======================================================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 1fi
# ======================================================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 1fi
# ======================================================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 1fi
# ======================================================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.logLogFileSize=0PidFile=/run/zabbix/zabbix_server.pidSocketDir=/run/zabbixDBHost=localhostDBName=zabbixDBUser=zabbixDBPassword=a123456!DBPort=3306SNMPTrapperFile=/var/log/snmptrap/snmptrap.logTimeout=4AlertScriptsPath=/usr/lib/zabbix/alertscriptsExternalScripts=/usr/lib/zabbix/externalscriptsLogSlowQueries=3000StatsAllowedIP=127.0.0.1EOF
# ===================== 【配置检测】 =====================# 检查文件是否生成if [ ! -f /etc/zabbix/zabbix_server.conf ]; then echo "❌ 配置文件生成失败!" exit 1fi
# 检查关键配置是否正确ok=truegrep -q "^DBHost=localhost" /etc/zabbix/zabbix_server.conf || ok=falsegrep -q "^DBName=zabbix" /etc/zabbix/zabbix_server.conf || ok=falsegrep -q "^DBUser=zabbix" /etc/zabbix/zabbix_server.conf || ok=falsegrep -q "^DBPassword=a123456!" /etc/zabbix/zabbix_server.conf || ok=falsegrep -q "^DBPort=3306" /etc/zabbix/zabbix_server.conf || ok=false
# 输出结果if $ok; then echo "✅ Zabbix Server 配置文件生成并验证成功"else echo "❌ Zabbix 配置文件内容错误" exit 1fi# ===================== 服务端日志检测:存在跳过,不存在创建赋权 =====================echo -e "\n===== 检查 Zabbix Server 日志文件 ====="SERVER_LOG="/var/log/zabbix/zabbix_server.log"SNMP_LOG="/var/log/snmptrap/snmptrap.log"
# 处理 zabbix_server.logif [ -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.logif [ -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-reloadsystemctl enable nginx php-fpm zabbix-server zabbix-agent --nowsystemctl restart nginx php-fpm zabbix-server zabbix-agent
# 逐个检测服务状态all_ok=truefor service in nginx php-fpm zabbix-server zabbix-agent; do if ! systemctl is-active --quiet $service; then echo "❌ $service 启动失败!" all_ok=false fidone
# 最终结果提示if $all_ok; then echo "✅ 所有服务启动并运行正常"else echo "❌ 部分服务启动异常,请检查!" exit 1fi
# ======================================================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/configif grep -q "SELINUX=disabled" /etc/selinux/config; then echo "✅ SELinux 配置已永久禁用(重启生效)"else echo "❌ SELinux 配置修改失败"fi
setenforce 0 >/dev/null 2>&1if [ $? -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 - \$basearchbaseurl=https://mirrors.aliyun.com/epel/\$releasever/Everything/\$basearchfailovermethod=priorityenabled=1gpgcheck=0excludepkgs=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>&1timeout 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 1fi
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 << EOFPidFile=/run/zabbix/zabbix_agentd.pidLogFile=/var/log/zabbix/zabbix_agentd.logLogFileSize=0 # Zabbix服务地址,谁可以监控我/可以写网段Server=$ZABBIX_ALLOW_NETWORKListenPort=10050 # Zabbix服务地址,是我主动推数据给谁/只能写IPServerActive=$ZABBIX_ACTIVE_IP # 本地主机设备名Hostname=$hostnameTimeout=30Include=/etc/zabbix/zabbix_agentd.d/*.confEOF
# 权限chown zabbix:zabbix /etc/zabbix/zabbix_agentd.confchmod 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-reloadsystemctl enable --now zabbix-agentsystemctl 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/nullsystemctl disable zabbix-server zabbix-agent nginx php-fpm mysqld 2>/dev/null
# 2. 卸载 Zabbix + MySQL + Nginx + PHPecho -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/zabbixrm -rf /usr/share/zabbixrm -rf /var/lib/zabbixrm -rf /var/log/zabbix
rm -rf /etc/nginx/conf.d/zabbix.confrm -rf /etc/php-fpm.d/zabbix.confrm -rf /var/lib/php/session/*
rm -rf /var/lib/mysqlrm -rf /var/log/mysql*
rm -rf /run/zabbixrm -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-核心服务端-部署/