本手册覆盖从 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
执行后按提示操作:
- 设置 root 密码(牢记,后续要用)
- 移除匿名用户:Y
- 禁止 root 远程登录:Y
- 删除 test 测试库:Y
- 刷新权限: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(全小写)
中文界面切换与无法选中修复
-
安装中文系统语言包(解决中文选不了的核心步骤)
dnf install -y glibc-langpack-zh
localedef -i zh_CN -f UTF-8 zh_CN.UTF-8
systemctl restart php-fpm -
前端切换中文:右上角用户头像 → User settings → Language 选择
Chinese (zh_CN)→ 点击 Update 保存,刷新页面即为中文界面。

图表中文乱码修复
- 上传中文字体文件(如微软雅黑 msyh.ttf、思源黑体)到服务器
/usr/share/zabbix/assets/fonts/目录 - 修改 Zabbix 字体配置,替换默认 DejaVuSans 字体
- 刷新页面,监控图表中文即可正常显示
五、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 端添加主机
- 左侧菜单【配置】→【主机】→ 右上角【创建主机】
- 基础配置:
- 主机名称:自定义(如 alma01-local)
- 主机群组:选择
Linux servers - 接口:类型选
Zabbix agent,IP 填127.0.0.1,端口10050
- 切换【模板】标签 → 选择 → 操作系统组 → 勾选
Linux by Zabbix agent - 拉到页面底部点击【添加】,等待 1-3 分钟即可采集数据
2. 远程 Linux 主机监控
方案 A:被动模式(内网互通推荐)
-
远程主机安装 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 -
修改配置
/etc/zabbix/zabbix_agentd.confServer=你的Zabbix服务端IP
-
启动服务 + 放行防火墙
systemctl start zabbix-agent
systemctl enable zabbix-agent
firewall-cmd --permanent --add-port=10050/tcp
firewall-cmd --reload -
Web 端创建主机,填远程主机 IP,绑定被动模板
方案 B:主动模式(跨公网 / 防火墙限制推荐)
-
安装 Agent 同上
-
修改配置
/etc/zabbix/zabbix_agentd.confServerActive=你的Zabbix服务端IP:10051
Hostname=和Web端完全一致的主机名 -
启动服务,无需放行入站 10050 端口
-
Web 端创建主机,绑定主动模式模板,主机名和配置里的 Hostname 完全一致
3. Windows 主机监控
方案 A:被动模式(内网环境推荐)
-
下载与服务端同版本 Zabbix Agent for Windows(7.0.x 64 位)
-
解压到
C:\Program Files\Zabbix Agent目录 -
编辑配置文件
zabbix_agentd.confServer=Zabbix服务端IP
Hostname=Windows主机名
ListenPort=10050 -
管理员身份打开 CMD,安装并启动服务
zabbix_agentd.exe -i -c zabbix_agentd.conf
net start zabbix_agentd -
Windows 防火墙新建入站规则,放行 TCP 10050 端口
-
Web 端创建主机,填 Windows IP,绑定
Windows by Zabbix agent模板
方案 B:主动模式(外网 / 办公网主机推荐)
-
安装步骤同上,修改配置文件
ServerActive=Zabbix服务端IP:10051
Hostname=和Web端完全一致的主机名 -
启动服务,无需放行入站端口
-
Web 端创建主机,绑定
Windows by Zabbix agent active模板,主机名严格匹配
4. SNMP 设备监控(交换机 / 路由器 / 打印机)
- 设备端开启 SNMP 服务,配置共同体名(public)
- Web 端创建主机,接口类型选
SNMP,填设备 IP,端口 161 - 绑定对应设备的 SNMP 模板,或通用
Generic by SNMP模板 - 主机宏里配置
{$SNMP_COMMUNITY}为设备的共同体名
七、版本兼容规则与查询方法
1. 官方版本兼容核心规则
- 同版本最优:Server 和 Agent 大版本完全一致(7.0 Server ↔ 7.0 Agent),无功能缺失,最稳定
- 向下兼容 2 个大版本:7.0 Server 支持 6.0 LTS / 5.0 LTS Agent,跨版本会丢失新监控项、模板功能
- 禁止高版本 Agent 连低版本 Server:7.0 Agent 无法对接 6.0/5.0 Server,直接通信报错
- 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. 生产环境安全加固建议
- 立即修改默认 Admin 密码,创建普通运维账号,分配最小权限
- Agent 配置里的 Server 参数仅填写服务端 IP,禁止填 0.0.0.0
- Web 端通过 Nginx 限制访问 IP,仅允许运维网段访问
- 修改默认 10050/10051 端口,降低端口扫描风险
- 开启 Zabbix HTTPS 访问,配置 SSL 证书
- 数据库 zabbix 账号仅授予本地登录权限,禁止远程访问
九、全场景故障排查手册
1. Web 安装类故障
故障:页面打不开,显示 502 Bad Gateway
排查步骤:
- 检查 php-fpm 服务是否运行:
systemctl status php-fpm - 检查 Nginx 配置里的 sock 路径是否和 php-fpm 配置一致
- 查看 nginx 错误日志:
tail -f /var/log/nginx/error.log
故障:中文选项灰色无法选中
解决方案:安装中文语言包,重启 php-fpm,参考第四章中文配置部分。
2. 登录类故障
故障:提示用户名密码错误或账号临时锁定
排查步骤:
- 确认用户名是
Admin(首字母大写),密码zabbix全小写 - 连续输错 5 次会锁定 5 分钟,等待自动解锁
- 紧急解锁用 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. 监控项显示「不支持」
原因与解决方案:
- Agent 版本过低,不支持新的监控键值:升级 Agent 到和 Server 同版本
- 监控项键值写错:自定义监控项检查语法,官方模板确认版本匹配
- 系统无对应资源:比如磁盘监控的盘符不存在,网卡名称不匹配
5. Zabbix Server 服务启动失败
排查步骤:
- 查看服务日志:
tail -f /var/log/zabbix/zabbix_server.log - 常见原因:
- 数据库连接失败:检查 zabbix_server.conf 里的数据库密码、地址
- 端口被占用:10051 端口被其他程序占用
- 权限不足:日志目录、缓存目录权限异常
- 数据库导入失败:缺少表结构,重新导入初始化 SQL