在服务器监控场景中,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

常见问题排查(程序员必备)

  1. Zabbix Server 启动失败

查看日志定位问题:sudo journalctl -u zabbix-server -f,常见原因:数据库密码错误(检查zabbix_server.conf的DBPassword)、PostgreSQL 服务未启动(sudo systemctl start postgresql)。

  1. Agent 无法连接 Server

排查三步:① 被监控主机防火墙是否开放 10050 端口(Windows 需在防火墙高级设置中添加规则);② Agent 配置文件的Server参数是否包含 Zabbix Server IP;③ Server 端执行telnet 192.168.1.101 10050,能连通即端口正常。

  1. Web 前端数据库连接失败

检查/etc/zabbix/web/zabbix.conf.php中的数据库配置,确保与zabbix_server.conf一致,同时验证 PostgreSQL 是否允许远程连接(若 Web 与 Server 分离,需修改pg_hba.conf允许 Web 主机 IP 访问)。

通过以上流程,可完成从 Zabbix Server 部署到多系统 Agent 安装的全链路监控搭建。对程序员而言,重点在于理解 “数据库权限配置”“Agent 与 Server 的通信逻辑”“跨系统部署的差异点”,这些不仅是部署技巧,更是后续监控项自定义、告警规则配置的基础。

Logo

更多推荐