Zabbix 7.0 LTS 完整部署与运维手册(AlmaLinux 9 + MySQL 8.0 + Nginx)

本手册覆盖从 0 到 1 部署、全采集模式、多系统监控、日常运维到全场景故障排查,所有命令可直接复用,适配你当前的 AlmaLinux 环境,可作为长期学习与生产参考文档。


一、基础环境说明与前置准备

1. 适用环境与版本说明

组件 版本 说明
操作系统 AlmaLinux 9 / RHEL 9 / CentOS Stream 9 本手册所有命令基于 dnf 包管理器
Zabbix Server 7.0 LTS 长期支持版本,官方支持至 2029 年
数据库 MySQL 8.0 官方推荐,兼容 MariaDB 10.5+
Web 环境 Nginx 1.20+ + PHP-FPM 8.0+ Zabbix 7.0 强制要求 PHP≥8.0

2. 系统基础配置

① 安装基础工具(解决 vim 不存在等问题)
复制代码
# 安装常用运维工具
dnf install -y vim-enhanced wget curl net-tools lsof glibc-locale-source
# 不会用vim可替代用nano编辑器,系统默认自带
② SELinux 配置
复制代码
# 临时关闭(部署阶段使用,避免权限拦截)
setenforce 0

# 永久关闭(生产环境建议配置规则,测试环境可直接关)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config
③ 防火墙端口放行(核心端口用途说明)
端口 协议 用途
8080 TCP Zabbix Web 前端访问端口
10050 TCP Agent 被动模式:服务端主动拉取数据的端口
10051 TCP Zabbix Server 端口:主动模式 Agent 上报数据、Proxy 通信

放行命令:

复制代码
firewall-cmd --permanent --add-service=http
firewall-cmd --permanent --add-port={8080,10050,10051}/tcp
firewall-cmd --reload
④ 配置 Zabbix 国内镜像源(加速下载,官方源慢)
复制代码
# 备份默认源
rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
# 替换为阿里源
sed -i 's|repo.zabbix.com|mirrors.aliyun.com/zabbix|g' /etc/yum.repos.d/zabbix.repo
dnf clean all && dnf makecache

二、MySQL 8.0 数据库部署与初始化

1. MySQL 安装与启动

复制代码
dnf install -y mysql-server mysql-devel
# 启动并设置开机自启
systemctl start mysqld
systemctl enable mysqld
# 校验运行状态
systemctl status mysqld

2. 数据库安全初始化(生产环境必做)

复制代码
mysql_secure_installation

执行后按提示操作:

  1. 设置 root 密码(牢记,后续要用)
  2. 移除匿名用户:Y
  3. 禁止 root 远程登录:Y
  4. 删除 test 测试库:Y
  5. 刷新权限:Y

3. 创建 Zabbix 专用库与账号

登录 MySQL:

复制代码
mysql -uroot -p你设置的MySQLroot密码

执行 SQL 语句:

复制代码
-- 创建zabbix库,指定utf8mb4字符集
create database zabbix character set utf8mb4 collate utf8mb4_bin;
-- 创建专用账号,仅本地登录,提升安全
create user zabbix@localhost identified by 'Zbx@Mysql123';
-- 授予库全部权限
grant all privileges on zabbix.* to zabbix@localhost;
-- 临时开启函数创建权限(导入数据必须,导入后关闭)
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
exit;

4. 导入 Zabbix 初始数据库结构

复制代码
# 解压并导入初始化脚本,过程较长,耐心等待
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-set=utf8mb4 -uzabbix -pZbx@Mysql123 zabbix

# 导入完成后关闭函数创建权限,符合数据库安全规范
mysql -uroot -p你的MySQLroot密码 -e "SET GLOBAL log_bin_trust_function_creators = 0;"

三、Zabbix Server 与 Web 前端安装

1. 核心组件全量安装

复制代码
dnf install -y zabbix-server-mysql zabbix-agent zabbix-nginx-conf zabbix-sql-scripts zabbix-web-mysql zabbix-web

2. 核心配置文件详解与修改

① Zabbix Server 主配置 /etc/zabbix/zabbix_server.conf

核心必填参数:

复制代码
# 数据库地址
DBHost=localhost
# 数据库名
DBName=zabbix
# 数据库账号
DBUser=zabbix
# 数据库密码(核心修改项)
DBPassword=Zbx@Mysql123
# 服务端监听端口,默认10051
ListenPort=10051
# 日志路径
LogFile=/var/log/zabbix/zabbix_server.log
# 缓存大小,监控主机≥100台建议调大到256M
CacheSize=128M

一键修改密码命令(无需编辑器):

复制代码
sed -i 's/# DBPassword=/DBPassword=Zbx@Mysql123/' /etc/zabbix/zabbix_server.conf
② PHP-FPM 配置 /etc/php-fpm.d/zabbix.conf

Zabbix 硬性要求参数,默认已配置,仅需补充时区:

复制代码
[zabbix]
user = apache
group = apache
listen = /run/php-fpm/zabbix.sock
listen.acl_users = apache,nginx

# 进程池参数(单机50台内监控无需修改)
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

# Zabbix强制要求PHP参数
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
③ Nginx 站点配置 /etc/nginx/conf.d/zabbix.conf

取消注释并修改 IP:

复制代码
server {
    # 前端访问端口
    listen 8080;
    # 改为你的服务器内网/公网IP
    server_name 192.168.52.150;

    root /usr/share/zabbix;

    index index.php;

    location = /favicon.ico {
        log_not_found off;
    }

    location / {
        try_files $uri $uri/ =404;
    }

    location ~ /\.ht {
        deny all;
    }

    location ~ /(api\/|conf[^\.]|include|locale) {
        deny all;
        return 404;
    }

    location ~ [^/]\.php(/|$) {
        fastcgi_pass unix:/run/php-fpm/zabbix.sock;
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_index index.php;

        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

校验 Nginx 配置语法:

复制代码
nginx -t
# 输出 test is successful 代表配置正确

3. 服务启动与开机自启

复制代码
# 全组件重启
systemctl restart zabbix-server zabbix-agent nginx php-fpm mysqld
# 设置开机自启
systemctl enable zabbix-server zabbix-agent nginx php-fpm mysqld
# 批量查看所有服务状态
systemctl status zabbix-server zabbix-agent nginx php-fpm mysqld

四、Web 端初始化向导全流程

访问地址:http://你的服务器IP:8080/zabbix

1. 欢迎页

  • 可选择默认语言,安装后也可切换中文
  • 点击 Next step 下一步

2. 环境依赖检测

页面会校验所有 PHP、系统依赖,全部显示 OK 才能继续

常见报错修复
报错 1:Locale for language "en_US" is not found
复制代码
dnf install -y glibc-langpack-en
localedef -i en_US -f UTF-8 en_US.UTF-8
systemctl restart php-fpm
报错 2:PHP 参数不达标

检查 /etc/php-fpm.d/zabbix.conf 中的 memory_limit、max_execution_time 等参数,修改后重启 php-fpm。

3. 数据库连接配置

填写之前创建的数据库信息:

  • Database type:MySQL
  • Database host:localhost
  • Database port:0(0 代表默认 3306 端口)
  • Database name:zabbix
  • User:zabbix
  • Password:Zbx@Mysql123
  • 凭证存储:Plain text(单机默认明文,生产可对接 Vault 加密)

点击 Next step,系统会自动测试数据库连通性。

4. 服务基础设置

  • Zabbix server name:自定义平台名称(如 alma9-zabbix7)
  • Default time zone:必须选择 Asia/Shanghai 上海时区
  • Theme:默认主题,后续可修改

5. 配置预览与安装

核对所有配置无误,点击 Next step,系统自动生成前端配置文件,提示安装成功。

6. 默认登录与中文界面配置

默认账号
  • 用户名:Admin(首字母必须大写,小写无法登录)
  • 密码:zabbix(全小写)
中文界面切换与无法选中修复
  1. 安装中文系统语言包(解决中文选不了的核心步骤)

    dnf install -y glibc-langpack-zh
    localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
    systemctl restart php-fpm

  2. 前端切换中文:右上角用户头像 → User settings → Language 选择 Chinese (zh_CN) → 点击 Update 保存,刷新页面即为中文界面。

图表中文乱码修复
  1. 上传中文字体文件(如微软雅黑 msyh.ttf、思源黑体)到服务器 /usr/share/zabbix/assets/fonts/ 目录
  2. 修改 Zabbix 字体配置,替换默认 DejaVuSans 字体
  3. 刷新页面,监控图表中文即可正常显示

五、Agent 采集模式全解析(被动 / 主动 / Proxy)

1. 三种模式核心对比与适用场景

模式 原理 适用场景 优点 缺点
被动模式(默认) Zabbix Server 主动连接 Agent 10050 端口,拉取监控数据 内网环境、本机监控、中小规模(≤100 台主机) 配置简单、调试方便、模板成熟 服务端压力大,防火墙需放行入站 10050 端口
主动模式 Agent 主动连接 Server 10051 端口,上报采集数据 跨公网监控、防火墙拦截入站端口、大规模主机、DMZ 区主机 服务端压力小,无需开放主机入站端口,安全性高 配置略复杂,主机名必须严格匹配
Proxy 代理模式 Proxy 代理节点采集数据,统一上报给 Server 多机房、跨地域分布式监控、超大规模(≥500 台主机) 降低 Server 压力,网络隔离区域可监控 需要额外部署 Proxy 节点,维护成本高

2. 被动模式(Zabbix Agent)详解

核心配置参数(zabbix_agentd.conf)
复制代码
# 允许哪些服务端IP拉取数据,填Zabbix Server的IP
Server=127.0.0.1,192.168.52.150
# Agent监听端口
ListenPort=10050
# 监听地址,0.0.0.0代表所有网卡
ListenIP=0.0.0.0
Web 端对应模板

Linux by Zabbix agent / Windows by Zabbix agent

3. 主动模式(Zabbix Agent Active)详解

核心配置参数(zabbix_agentd.conf)
复制代码
# 服务端地址+端口,Agent主动上报的目标
ServerActive=192.168.52.150:10051
# 主机名,必须和Web端创建的主机名称完全一致(大小写敏感!核心坑点)
Hostname=Linux-Node01
# 关闭被动模式监听(纯主动模式可关,提升安全)
# ListenPort=0
Web 端对应模板

Linux by Zabbix agent active / Windows by Zabbix agent active

重点注意:主动模式下,Web 端主机名称必须和 Agent 配置里的 Hostname完全一致,大小写、符号都不能错,否则 100% 无数据。

4. Proxy 分布式代理模式简介

Proxy 是 Zabbix 的中间代理层,代替 Server 采集区域内主机数据,统一压缩后上报给主 Server,适合多机房、跨国、网络隔离场景。

  • 部署方式:单独安装 zabbix-proxy-mysql/sqlite 组件,配置 Server 地址
  • 端口:Proxy 与 Server 通信默认 10051 端口
  • Web 端创建主机时,选择对应 Proxy 节点即可

六、全场景主机监控配置

1. Linux 本机监控(被动模式,标准方案)

① 前置校验
复制代码
# 确认Agent服务运行
systemctl status zabbix-agent
# 本地采集测试,输出数字代表正常
zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1]
② Web 端添加主机
  1. 左侧菜单【配置】→【主机】→ 右上角【创建主机】
  2. 基础配置:
    • 主机名称:自定义(如 alma01-local)
    • 主机群组:选择 Linux servers
    • 接口:类型选Zabbix agent,IP 填127.0.0.1,端口10050
  3. 切换【模板】标签 → 选择 → 操作系统组 → 勾选 Linux by Zabbix agent
  4. 拉到页面底部点击【添加】,等待 1-3 分钟即可采集数据

2. 远程 Linux 主机监控

方案 A:被动模式(内网互通推荐)
  1. 远程主机安装 Zabbix Agent 7.0

    配置同版本源,安装agent

    rpm -Uvh https://mirrors.aliyun.com/zabbix/zabbix/7.0/rhel/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpm
    dnf install -y zabbix-agent

  2. 修改配置 /etc/zabbix/zabbix_agentd.conf

    Server=你的Zabbix服务端IP

  3. 启动服务 + 放行防火墙

    systemctl start zabbix-agent
    systemctl enable zabbix-agent
    firewall-cmd --permanent --add-port=10050/tcp
    firewall-cmd --reload

  4. Web 端创建主机,填远程主机 IP,绑定被动模板

方案 B:主动模式(跨公网 / 防火墙限制推荐)
  1. 安装 Agent 同上

  2. 修改配置 /etc/zabbix/zabbix_agentd.conf

    ServerActive=你的Zabbix服务端IP:10051
    Hostname=和Web端完全一致的主机名

  3. 启动服务,无需放行入站 10050 端口

  4. Web 端创建主机,绑定主动模式模板,主机名和配置里的 Hostname 完全一致

3. Windows 主机监控

方案 A:被动模式(内网环境推荐)
  1. 下载与服务端同版本 Zabbix Agent for Windows(7.0.x 64 位)

  2. 解压到 C:\Program Files\Zabbix Agent 目录

  3. 编辑配置文件 zabbix_agentd.conf

    Server=Zabbix服务端IP
    Hostname=Windows主机名
    ListenPort=10050

  4. 管理员身份打开 CMD,安装并启动服务

    zabbix_agentd.exe -i -c zabbix_agentd.conf
    net start zabbix_agentd

  5. Windows 防火墙新建入站规则,放行 TCP 10050 端口

  6. Web 端创建主机,填 Windows IP,绑定 Windows by Zabbix agent 模板

方案 B:主动模式(外网 / 办公网主机推荐)
  1. 安装步骤同上,修改配置文件

    ServerActive=Zabbix服务端IP:10051
    Hostname=和Web端完全一致的主机名

  2. 启动服务,无需放行入站端口

  3. Web 端创建主机,绑定 Windows by Zabbix agent active 模板,主机名严格匹配

4. SNMP 设备监控(交换机 / 路由器 / 打印机)

  1. 设备端开启 SNMP 服务,配置共同体名(public)
  2. Web 端创建主机,接口类型选SNMP,填设备 IP,端口 161
  3. 绑定对应设备的 SNMP 模板,或通用 Generic by SNMP 模板
  4. 主机宏里配置 {$SNMP_COMMUNITY} 为设备的共同体名

七、版本兼容规则与查询方法

1. 官方版本兼容核心规则

  1. 同版本最优:Server 和 Agent 大版本完全一致(7.0 Server ↔ 7.0 Agent),无功能缺失,最稳定
  2. 向下兼容 2 个大版本:7.0 Server 支持 6.0 LTS / 5.0 LTS Agent,跨版本会丢失新监控项、模板功能
  3. 禁止高版本 Agent 连低版本 Server:7.0 Agent 无法对接 6.0/5.0 Server,直接通信报错
  4. LTS 版本优先:长期支持版(7.0、6.0)支持 5 年官方维护,生产环境禁用非 LTS 标准版

2. 各组件版本查询方法

① Linux 服务端 / Agent 版本
复制代码
# 服务端版本
zabbix_server -V
# Agent版本
zabbix_agentd -V
# rpm包查询
rpm -qa | grep zabbix
② Windows Agent 版本
复制代码
# CMD进入Agent目录执行
zabbix_agentd.exe -V
③ Web 前端查看

登录后页面左下角,直接显示完整版本号(如 Zabbix 7.0.28)

3. 版本不匹配的常见影响

  • 部分监控项显示「不支持的监控项」
  • 自动发现规则、自定义键值失效
  • 触发器、告警规则异常
  • 主动模式连接失败

八、日常运维与核心操作

1. 核心服务启停命令

复制代码
# 单个服务启停重启
systemctl start/stop/restart zabbix-server
systemctl start/stop/restart zabbix-agent
# 查看实时运行日志
journalctl -u zabbix-server -f

2. 关键日志路径与用途

日志路径 用途 排查场景
/var/log/zabbix/zabbix_server.log 服务端运行日志 采集失败、数据库报错、代理连接异常
/var/log/zabbix/zabbix_agentd.log Agent 运行日志 本地采集异常、键值不支持、连接拒绝
/var/log/nginx/ Nginx 访问 / 错误日志 Web 页面打不开、502 报错
/var/log/php-fpm/ PHP 运行日志 页面 500、环境检测报错

3. 常用运维工具命令

① zabbix_get(测试被动模式采集)
复制代码
# 格式:zabbix_get -s 目标IP -k 监控项键值
# 测试CPU负载
zabbix_get -s 127.0.0.1 -k system.cpu.load[all,avg1]
# 测试内存使用率
zabbix_get -s 127.0.0.1 -k vm.memory.size[pavailable]
② zabbix_sender(主动模式手动上报数据)

用于自定义脚本上报监控数据,主动模式调试使用。

4. 模板管理基础

  • 模板作用:批量下发监控项、触发器、图表规则,无需逐台主机配置
  • 模板继承:可基于基础模板自定义子模板,修改父模板自动同步到所有关联主机
  • 官方模板分类:
    • 操作系统:Linux/Windows/Unix 模板
    • 数据库:MySQL/Oracle/PostgreSQL 模板
    • 网络设备:华为 / H3C / 思科交换机模板
    • 服务健康:Nginx/Redis/Tomcat 模板

5. 管理员密码重置(忘记密码 / 账号锁定)

复制代码
mysql -uroot -p你的MySQLroot密码

执行 SQL:

复制代码
use zabbix;
-- 重置Admin密码为zabbix
UPDATE users SET passwd=md5('zabbix') WHERE username='Admin';
-- 解锁被锁定的账号
UPDATE users SET attempt_failed=0, lock_until=0 WHERE username='Admin';
FLUSH PRIVILEGES;
exit;

6. 生产环境安全加固建议

  1. 立即修改默认 Admin 密码,创建普通运维账号,分配最小权限
  2. Agent 配置里的 Server 参数仅填写服务端 IP,禁止填 0.0.0.0
  3. Web 端通过 Nginx 限制访问 IP,仅允许运维网段访问
  4. 修改默认 10050/10051 端口,降低端口扫描风险
  5. 开启 Zabbix HTTPS 访问,配置 SSL 证书
  6. 数据库 zabbix 账号仅授予本地登录权限,禁止远程访问

九、全场景故障排查手册

1. Web 安装类故障

故障:页面打不开,显示 502 Bad Gateway

排查步骤:

  1. 检查 php-fpm 服务是否运行:systemctl status php-fpm
  2. 检查 Nginx 配置里的 sock 路径是否和 php-fpm 配置一致
  3. 查看 nginx 错误日志:tail -f /var/log/nginx/error.log
故障:中文选项灰色无法选中

解决方案:安装中文语言包,重启 php-fpm,参考第四章中文配置部分。

2. 登录类故障

故障:提示用户名密码错误或账号临时锁定

排查步骤:

  1. 确认用户名是Admin(首字母大写),密码zabbix全小写
  2. 连续输错 5 次会锁定 5 分钟,等待自动解锁
  3. 紧急解锁用 SQL 重置密码,参考第八章密码重置部分。

3. 主机无监控数据(分步排查,90% 问题可解决)

第 1 步:Web 端配置检查
  • 主机状态为「已启用」,未被禁用
  • 已绑定对应系统的监控模板,模板无报错
  • 接口 IP、端口填写正确,类型和模板匹配(主动 / 被动对应)
  • 主动模式确认主机名和 Agent 配置的 Hostname 完全一致
第 2 步:网络与防火墙检查
  • 被动模式:服务端 telnet 主机 10050 端口,确认连通
  • 主动模式:主机端 telnet 服务端 10051 端口,确认连通
  • 主机系统防火墙、云安全组是否放行了对应端口
第 3 步:Agent 服务检查
  • 确认 Agent 服务运行正常:systemctl status zabbix-agent
  • 查看 Agent 日志有无报错:tail -f /var/log/zabbix/zabbix_agentd.log
  • 本地用 zabbix_get 测试,确认采集正常
第 4 步:服务端日志排查
  • 查看服务端实时日志:tail -f /var/log/zabbix/zabbix_server.log
  • 常见报错:connection refused(端口不通)、host not found(主机名不匹配)、no active checks(主动模式配置错误)

4. 监控项显示「不支持」

原因与解决方案:

  1. Agent 版本过低,不支持新的监控键值:升级 Agent 到和 Server 同版本
  2. 监控项键值写错:自定义监控项检查语法,官方模板确认版本匹配
  3. 系统无对应资源:比如磁盘监控的盘符不存在,网卡名称不匹配

5. Zabbix Server 服务启动失败

排查步骤:

  1. 查看服务日志:tail -f /var/log/zabbix/zabbix_server.log
  2. 常见原因:
    • 数据库连接失败:检查 zabbix_server.conf 里的数据库密码、地址
    • 端口被占用:10051 端口被其他程序占用
    • 权限不足:日志目录、缓存目录权限异常
    • 数据库导入失败:缺少表结构,重新导入初始化 SQL
相关推荐
happymade1 小时前
MSRM3 区域层级嵌套功能深度解析与实操教程
运维·网络拓扑·网络管理·网络运维·msrm3
网络小白不怕黑2 小时前
14.VSFTP服务相关配置
linux·运维·服务器
爱喝水的鱼丶2 小时前
SAP-ABAP:ALV字段布局定制全攻略——快速适配业务端个性化展示需求
运维·性能优化·sap·abap·经验交流·alv报表
qetfw2 小时前
CentOS 7 配置 firewalld 防火墙
linux·运维·centos
留不住的何止是时间2 小时前
关于docker构建镜像build指令的注意事项
运维·docker·容器
Dovis(誓平步青云)3 小时前
《Linux CPU频率为何忽高忽低:cpufreq、idle状态与性能抖动教程》
linux·运维·服务器·spring boot·后端·生成对抗网络
小此方3 小时前
Re:Linux系统篇(四十三)信号篇·一:谁在敲进程的门?一篇带你了解信号概念与产生机制
linux·运维·驱动开发
Championship.23.2410 小时前
Linux 3.0 锁机制与故障排查详解
linux·运维·服务器
风123456789~12 小时前
【Linux专栏】ls 排除某个文件
linux·运维·服务器