程序员实战:CentOS 8 部署 Zabbix 7.0 LTS(PostgreSQL)及多系统 Agent
本文详细介绍了在CentOS 8系统上部署Zabbix 7.0 LTS监控系统的完整流程,重点包括:系统环境优化、PostgreSQL数据库配置、Zabbix Server安装与初始化、Web前端部署等核心环节。同时提供了CentOS、Ubuntu和Windows系统下Zabbix Agent的安装配置方案,并分享了常见问题排查方法。文章以程序员视角,通过实战验证的代码示例,帮助读者快速搭建企业级
在服务器监控场景中,Zabbix 是企业级首选工具之一,尤其 Zabbix 7.0 LTS 版本带来了更稳定的性能与更丰富的监控能力。本文以程序员视角,基于 CentOS 8 系统,完整实现 Zabbix 7.0 LTS 与 PostgreSQL 数据库的部署,并覆盖 CentOS、Ubuntu、Windows 多系统的 Agent 安装,所有代码均经过实战验证,同时包含配置校验与问题排查方案,助力快速搭建企业级监控体系。
环境前置准备:系统优化与 PostgreSQL 配置
Zabbix Server 依赖稳定的系统环境与数据库支持,PostgreSQL 作为 Zabbix 7.0 LTS 推荐的数据库(性能优于 MySQL),需先完成安装配置与权限适配。此环节重点解决 “系统依赖缺失”“数据库权限不足”“网络端口开放” 三大基础问题。
1. CentOS 8 系统基础优化
首先关闭防火墙与 SELinux(避免监控端口被拦截),并安装基础依赖工具:
# 1. 关闭防火墙(生产环境可按需开放端口,此处为快速部署)
sudo systemctl stop firewalld
sudo systemctl disable firewalld
# 验证:防火墙状态为inactive
sudo systemctl status firewalld | grep "active"
# 2. 临时关闭SELinux(重启后失效,永久关闭需修改/etc/selinux/config)
sudo setenforce 0
# 验证:SELinux模式为Permissive
getenforce # 输出:Permissive
# 3. 安装基础依赖(含编译工具、网络工具)
sudo dnf install -y wget curl net-tools vim policycoreutils-python-utils
2. PostgreSQL 数据库安装与配置
Zabbix 7.0 LTS 需 PostgreSQL 12 及以上版本,CentOS 8 默认源版本满足需求,直接通过dnf安装并配置专用数据库与用户:
# 1. 安装PostgreSQL服务器与客户端
sudo dnf install -y postgresql-server postgresql-contrib
# 2. 初始化PostgreSQL数据库
sudo postgresql-setup --initdb
# 输出示例:Initializing database in '/var/lib/pgsql/data'
# 3. 启动PostgreSQL并设置开机自启
sudo systemctl start postgresql
sudo systemctl enable postgresql
# 验证:PostgreSQL状态为active
sudo systemctl status postgresql | grep "active"
# 4. 切换至postgres系统用户,创建Zabbix专用数据库与用户
sudo -u postgres psql
# 执行以下SQL命令(在psql交互环境中):
# ① 创建zabbix数据库(指定UTF8编码,避免中文乱码)
CREATE DATABASE zabbix WITH ENCODING 'UTF8' LC_COLLATE 'en_US.UTF-8' LC_CTYPE 'en_US.UTF-8';
# ② 创建zabbix用户并设置密码(替换为自定义密码,如Zabbix@123)
CREATE USER zabbix WITH PASSWORD 'Zabbix@123';
# ③ 授予zabbix用户数据库所有权限
GRANT ALL PRIVILEGES ON DATABASE zabbix TO zabbix;
# ④ 退出psql交互环境
\q
# 5. 配置PostgreSQL允许密码登录(修改pg_hba.conf)
sudo vim /var/lib/pgsql/data/pg_hba.conf
# 找到以下行,将"ident"改为"md5"(允许密码认证):
# 原配置:host all all 127.0.0.1/32 ident
# 修改后:host all all 127.0.0.1/32 md5
# 原配置:host all all ::1/128 ident
# 修改后:host all all ::1/128 md5
# 6. 重启PostgreSQL使配置生效
sudo systemctl restart postgresql
# 7. 验证数据库连接(使用zabbix用户登录,测试权限)
psql -U zabbix -d zabbix -h 127.0.0.1
# 输入密码后若能进入psql交互环境,说明配置成功,执行\q退出
Zabbix Server 7.0 LTS 部署:从源配置到 Web 初始化
Zabbix Server 部署需经历 “官方源添加→服务安装→数据库初始化→配置文件修改→Web 前端部署” 五步流程,核心是确保 Zabbix 与 PostgreSQL 的正确连接,以及 Web 服务(Nginx)的适配。
1. 添加 Zabbix 7.0 LTS 官方源
CentOS 8 默认源不含 Zabbix 7.0,需手动添加官方源并导入 GPG 密钥(确保包完整性):
# 1. 下载并安装Zabbix官方源rpm包
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-7.0-2.el8.noarch.rpm
# 2. 清理并更新yum缓存(使新源生效)
sudo dnf clean all
sudo dnf makecache
2. 安装 Zabbix Server 与 Web 组件
Zabbix 7.0 LTS 需安装 Server 核心包、PostgreSQL 适配包、Web 前端包(集成 Nginx):
# 安装Zabbix Server、Web前端、Nginx配置与SQL脚本
sudo dnf install -y zabbix-server-pgsql zabbix-web-pgsql zabbix-nginx-conf zabbix-sql-scripts
3. 初始化 Zabbix 数据库(关键步骤)
通过官方 SQL 脚本创建 Zabbix 所需的表结构与初始数据,需指定 PostgreSQL 的 zabbix 用户执行:
# 导入Zabbix 7.0 LTS数据库脚本(脚本路径固定)
sudo zcat /usr/share/zabbix-sql-scripts/postgresql/server.sql.gz | sudo -u zabbix psql -d zabbix -h 127.0.0.1
# 执行过程约1-2分钟,无报错即成功(若提示"relation already exists",说明已初始化,可忽略)
4. 配置 Zabbix Server(数据库连接与服务参数)
修改 Zabbix Server 配置文件,指定 PostgreSQL 数据库信息,确保服务能正常连接数据库:
# 编辑Zabbix Server主配置文件
sudo vim /etc/zabbix/zabbix_server.conf
# 找到并修改以下参数(按实际数据库配置填写):
DBHost=127.0.0.1 # 数据库地址(本地填127.0.0.1)
DBName=zabbix # 数据库名(前文创建的zabbix)
DBUser=zabbix # 数据库用户(前文创建的zabbix)
DBPassword=Zabbix@123 # 数据库密码(前文设置的密码)
DBPort=5432 # PostgreSQL默认端口(无需修改)
# 保存退出后,验证配置文件语法(无输出即无错误)
sudo zabbix_server -t
5. 配置 Nginx 与启动服务
Zabbix Web 前端依赖 Nginx,官方已提供默认配置,只需启用并启动相关服务:
# 1. 启用Zabbix Nginx配置(默认路径已包含,无需修改)
# 配置文件路径:/etc/nginx/conf.d/zabbix.conf,默认监听80端口
# 2. 启动Zabbix Server、Zabbix Agent(自带Agent用于监控自身)与Nginx
sudo systemctl start zabbix-server zabbix-agent nginx
sudo systemctl enable zabbix-server zabbix-agent nginx
# 3. 验证服务状态(均为active即成功)
sudo systemctl status zabbix-server zabbix-agent nginx | grep "active"
# 4. 访问Web前端初始化(浏览器打开服务器IP,如http://192.168.1.100)
# 按页面提示完成初始化:
# ① 检查环境(全部OK即可下一步)
# ② 数据库配置(填写前文的DBHost、DBName、DBUser、DBPassword)
# ③ 设置Zabbix Server名称(自定义,如"CentOS 8 Zabbix Server")
# ④ 完成初始化,默认登录账号:Admin,密码:zabbix
多系统 Zabbix Agent 安装:CentOS/Ubuntu/Windows 实战
Zabbix 监控需在被监控主机安装 Agent,实现数据采集与上报。以下覆盖企业常用的 CentOS 8、Ubuntu 22.04、Windows Server 2022 系统,提供差异化安装脚本与配置验证方案。
1. CentOS 8 系统 Agent 安装
与 Zabbix Server 同源,直接通过dnf安装,配置后连接 Server:
# 1. 添加Zabbix官方源(同Server步骤,若已添加可跳过)
sudo rpm -Uvh https://repo.zabbix.com/zabbix/7.0/rhel/8/x86_64/zabbix-release-7.0-2.el8.noarch.rpm
sudo dnf clean all && sudo dnf makecache
# 2. 安装Zabbix Agent 2(推荐Agent 2,性能更优,支持更多监控项)
sudo dnf install -y zabbix-agent2
# 3. 配置Agent 2(指定Zabbix Server地址与主机名)
sudo vim /etc/zabbix/zabbix_agent2.conf
# 修改以下关键参数:
Server=192.168.1.100 # Zabbix Server IP(必填,允许接收Server的请求)
ServerActive=192.168.1.100 # Zabbix Server IP(可选,主动上报数据的地址)
Hostname=CentOS-8-Agent # 主机名(需与Zabbix Server中添加的主机名一致)
# 4. 启动Agent 2并设置开机自启
sudo systemctl start zabbix-agent2
sudo systemctl enable zabbix-agent2
# 5. 验证Agent与Server连通性(在Server端执行zabbix_get命令)
# 先在Server端安装zabbix-get工具:
sudo dnf install -y zabbix-get
# 测试获取Agent的系统信息(替换为Agent IP):
zabbix_get -s 192.168.1.101 -k "system.uname"
# 输出示例:Linux CentOS-8-Agent 4.18.0-477.15.1.el8_8.x86_64 #1 SMP Wed Jun 21 15:34:21 UTC 2023 x86_64
# 有输出即说明连通成功
2. Ubuntu 22.04 系统 Agent 安装
Ubuntu 需通过 APT 添加 Zabbix 源,安装步骤与 CentOS 略有差异,但配置逻辑一致:
# 1. 安装依赖工具并添加Zabbix源GPG密钥
sudo apt update && sudo apt install -y wget apt-transport-https
wget https://repo.zabbix.com/zabbix/7.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo dpkg -i zabbix-release_7.0-2+ubuntu22.04_all.deb
sudo apt update
# 2. 安装Zabbix Agent 2
sudo apt install -y zabbix-agent2
# 3. 配置Agent 2(同CentOS,修改Server与Hostname)
sudo vim /etc/zabbix/zabbix_agent2.conf
Server=192.168.1.100 # Zabbix Server IP
ServerActive=192.168.1.100 # 主动上报地址
Hostname=Ubuntu-2204-Agent # 主机名
# 4. 启动Agent 2并设置开机自启
sudo systemctl start zabbix-agent2
sudo systemctl enable zabbix-agent2
# 5. 验证连通性(Server端执行,同CentOS)
zabbix_get -s 192.168.1.102 -k "system.uname"
3. Windows Server 2022 系统 Agent 安装
Windows 系统需下载官方 MSI 安装包,支持图形化与命令行两种安装方式,推荐命令行实现自动化部署:
# 方法1:图形化安装(适合单台主机)
# 1. 下载Zabbix Agent 2 MSI安装包(官网地址):
# https://www.zabbix.com/downloads/7.0/zabbix_agent2-7.0.0-windows-amd64.msi
# 2. 双击安装包,按提示配置:
# - Server address:192.168.1.100
# - Server active address:192.168.1.100
# - Hostname:Windows-Server-2022
# 3. 完成安装后,在"服务"中启动"Zabbix Agent 2"并设置为"自动"启动
# 方法2:命令行安装(适合批量部署,无交互)
# 1. 下载安装包到C盘根目录(或通过脚本推送)
# 2. 打开CMD(管理员模式),执行以下命令:
msiexec /i "C:\zabbix_agent2-7.0.0-windows-amd64.msi" /qn ^
SERVER=192.168.1.100 ^
SERVERACTIVE=192.168.1.100 ^
HOSTNAME=Windows-Server-2022 ^
INSTALLDIR="C:\ZabbixAgent2" ^
SERVICESTARTTYPE=auto
# 3. 验证服务状态(CMD中执行)
sc query "Zabbix Agent 2"
# 输出"STATE : 4 RUNNING"即成功
# 4. Server端验证连通性(同Linux)
zabbix_get -s 192.168.1.103 -k "system.uname"
# 输出示例:Windows Windows-Server-2022 10.0.20348 Microsoft Windows Server 2022 Datacenter Evaluation
常见问题排查(程序员必备)
- Zabbix Server 启动失败:
查看日志定位问题:sudo journalctl -u zabbix-server -f,常见原因:数据库密码错误(检查zabbix_server.conf的DBPassword)、PostgreSQL 服务未启动(sudo systemctl start postgresql)。
- Agent 无法连接 Server:
排查三步:① 被监控主机防火墙是否开放 10050 端口(Windows 需在防火墙高级设置中添加规则);② Agent 配置文件的Server参数是否包含 Zabbix Server IP;③ Server 端执行telnet 192.168.1.101 10050,能连通即端口正常。
- Web 前端数据库连接失败:
检查/etc/zabbix/web/zabbix.conf.php中的数据库配置,确保与zabbix_server.conf一致,同时验证 PostgreSQL 是否允许远程连接(若 Web 与 Server 分离,需修改pg_hba.conf允许 Web 主机 IP 访问)。
通过以上流程,可完成从 Zabbix Server 部署到多系统 Agent 安装的全链路监控搭建。对程序员而言,重点在于理解 “数据库权限配置”“Agent 与 Server 的通信逻辑”“跨系统部署的差异点”,这些不仅是部署技巧,更是后续监控项自定义、告警规则配置的基础。
更多推荐



所有评论(0)