Zabbix 6.0 基于 LNMP 架构完整部署教程(CentOS7)

Zabbix 6.0 基于 LNMP 架构完整部署教程(CentOS7)

一、部署前言

1.1 什么是 Zabbix

Zabbix 是一款开源的企业级监控解决方案,支持对服务器、网络设备、应用程序等进行实时监控,可通过告警机制及时反馈故障,帮助运维人员快速定位问题。

1.2 部署环境说明

环境类型 版本 / 配置 说明
操作系统 CentOS 7.x 64 位 推荐最小化安装,已配置基础网络
Zabbix 版本 Zabbix 6.0 LTS 长期支持版本,稳定性更高
数据库 MariaDB 10.5 Zabbix 6.0 强制要求 ≥10.5 版本
Web 服务器 Nginx 最新稳定版 提供 Zabbix 前端访问
PHP 版本 PHP 7.2 Zabbix 6.0 兼容 PHP 7.2-7.4
架构模式 LNMP + Zabbix Server + Agent2 客户端通过 Agent2 与 Server 通信

1.3 部署架构图

plaintext 复制代码
客户端(Agent2) ←→ Zabbix Server ←→ MariaDB(数据存储)
                          ↓
                    Nginx(Web服务) ←→ PHP-FPM(动态解析) ←→ 浏览器(前端访问)

二、LNMP 架构部署(基础环境)

2.1 Nginx 安装与配置

Nginx 作为 Web 服务器,负责接收客户端对 Zabbix 前端的访问请求,并将 PHP 动态请求转发给 PHP-FPM。

步骤 1:配置 Nginx YUM 源

CentOS 7 默认 YUM 源的 Nginx 版本较低,需手动添加官方源:

bash 复制代码
# 下载 Nginx 官方 YUM 源 RPM 包
wget http://nginx.org/packages/centos/7/noarch/RPMS/nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 安装 YUM 源(也可手动创建 repo 文件,二选一)
rpm -ivh nginx-release-centos-7-0.el7.ngx.noarch.rpm

# 手动创建 repo 文件(推荐,避免 RPM 包依赖问题)
vim /etc/yum.repos.d/nginx.repo

将以下内容写入 nginx.repo

ini 复制代码
[nginx]
name=nginx repo
baseurl=http://nginx.org/packages/centos/7/$basearch/
gpgcheck=0  # 关闭 GPG 校验(若开启需导入 GPG 密钥,新手推荐关闭)
enabled=1   # 启用该 YUM 源
步骤 2:安装并启动 Nginx
bash 复制代码
# 清理 YUM 缓存并安装 Nginx
yum clean all && yum makecache
yum install nginx -y

# 启动 Nginx 并设置开机自启
systemctl start nginx
systemctl enable nginx

# 验证 Nginx 是否启动成功
systemctl status nginx  # 查看服务状态
curl localhost          # 本地访问,返回 Nginx 默认页面 HTML 则正常
步骤 3:配置防火墙允许 HTTP 访问

CentOS 7 默认启用 firewalld,需开放 80 端口(HTTP):

bash 复制代码
# 永久开放 HTTP 服务(80端口)
firewall-cmd --permanent --add-service=http --zone=public
# 重新加载防火墙规则
firewall-cmd --reload
# 验证开放结果
firewall-cmd --list-services --zone=public  # 输出包含 http 则正常

2.2 MariaDB 10.5 安装与配置

Zabbix 6.0 对数据库版本要求严格,需使用 MariaDB ≥10.5 或 MySQL ≥8.0,此处选择 MariaDB 10.5。

步骤 1:配置 MariaDB YUM 源
bash 复制代码
# 创建 MariaDB 10.5 YUM 源文件
cat > /etc/yum.repos.d/MariaDB.repo << EOF
[mariadb]
name = MariaDB
baseurl = https://archive.mariadb.org/mariadb-10.5.23/yum/centos7-amd64/
gpgkey = https://archive.mariadb.org/mariadb-10.5.23/yum/centos7-amd64/RPM-GPG-KEY-MariaDB
gpgcheck = 0  # 新手关闭 GPG 校验,避免密钥导入问题
EOF
步骤 2:安装并启动 MariaDB
bash 复制代码
# 安装 MariaDB 服务端和客户端
yum install mariadb-server mariadb -y

# 启动 MariaDB 并设置开机自启
systemctl enable mariadb --now

# 验证 MariaDB 状态
systemctl status mariadb  # 显示 active (running) 则正常
步骤 3:初始化 MariaDB(设置 root 密码)
bash 复制代码
# 执行安全初始化脚本
mysql_secure_installation

按以下步骤操作(括号内为操作建议):

  1. Enter current password for root (enter for none):直接回车(默认无密码)
  2. Set root password? [Y/n]:Y (设置 root 密码,建议复杂度高,如 Zabbix@123,避免原文档的简单密码 abc123
  3. Remove anonymous users? [Y/n]:Y(删除匿名用户,提升安全性)
  4. Disallow root login remotely? [Y/n]:Y(禁止 root 远程登录,仅允许本地登录)
  5. Remove test database and access to it? [Y/n]:Y(删除测试数据库)
  6. Reload privilege tables now? [Y/n]:Y(重载权限表,使配置生效)
步骤 4:解决 MariaDB 密码遗忘问题(备用方案)

若忘记 root 密码,按以下步骤重置:

bash 复制代码
# 1. 停止 MariaDB 服务
systemctl stop mariadb

# 2. 跳过权限表启动 MariaDB(后台运行)
mysqld_safe --skip-grant-tables &

# 3. 无密码登录 MariaDB
mysql -u root

# 4. 刷新权限并重置密码(替换 new_password 为新密码,如 Zabbix@123)
FLUSH PRIVILEGES;
ALTER USER 'root'@'localhost' IDENTIFIED BY 'new_password';
EXIT;  # 退出数据库

# 5. 终止 mysqld_safe 进程并重启 MariaDB
pkill mysqld_safe
systemctl start mariadb

# 6. 验证新密码登录
mysql -u root -p  # 输入新密码,能登录则重置成功
步骤 5:创建 Zabbix 专用数据库与用户
bash 复制代码
# 登录 MariaDB(输入 root 密码)
mysql -u root -p

# 1. 创建 Zabbix 数据库(字符集 utf8,排序规则 utf8_bin,避免中文乱码和大小写问题)
CREATE DATABASE zabbix character set utf8 collate utf8_bin;

# 2. 创建 Zabbix 数据库用户(本地登录 + 远程登录,密码建议复杂,如 ZabbixDB@123)
# 本地登录用户(仅允许 Server 本地访问)
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost' IDENTIFIED BY 'ZabbixDB@123';
# 远程登录用户(若后续需远程管理数据库,可创建,否则可省略)
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'%' IDENTIFIED BY 'ZabbixDB@123';

# 3. 刷新权限并退出
FLUSH PRIVILEGES;
EXIT;

说明utf8_bin 排序规则会区分字符大小写,确保 Zabbix 数据存储一致性,避免因大小写问题导致的监控项异常。

2.3 PHP 7.2 安装与配置

Zabbix 6.0 前端依赖 PHP,需安装 PHP 7.2 及相关扩展(原文档的 php72w 系列扩展需通过 Webtatic 源获取)。

步骤 1:配置 PHP YUM 源
bash 复制代码
# 安装 EPEL 源(依赖)
yum install epel-release -y

# 安装 Webtatic 源(提供 PHP 7.2 包)
rpm -Uvh https://mirror.webtatic.com/yum/el7/webtatic-release.rpm
步骤 2:安装 PHP 7.2 及必需扩展
bash 复制代码
yum install -y \
php72w \
php72w-cli \
php72w-common \
php72w-devel \
php72w-embedded \
php72w-gd \          # 处理图片(Zabbix 图表生成依赖)
php72w-mbstring \    # 支持多字节字符串(中文显示依赖)
php72w-pdo \         # 数据库连接(Zabbix 连接 MariaDB 依赖)
php72w-xml \         # XML 解析(Zabbix 配置文件解析依赖)
php72w-fpm \         # PHP  FastCGI 进程管理器(Nginx 联动依赖)
php72w-mysqlnd \     # MySQL 原生驱动(提升数据库性能)
php72w-opcache \     #  opcode 缓存(提升 PHP 性能)
php72w-ldap \        # LDAP 认证(Zabbix 集成 LDAP 依赖)
php72w-bcmath        # 数学计算(Zabbix 监控数据计算依赖)
步骤 3:配置 PHP-FPM(与 Nginx 联动)

PHP-FPM 默认以 apache 用户运行,需改为 nginx 用户,避免权限问题:

编辑 PHP-FPM 配置文件:vim /etc/php-fpm.d/www.conf

修改以下 2 处(约 8 行和 10 行):

ini 复制代码
user = nginx    # 原值为 apache,改为 nginx
group = nginx   # 原值为 apache,改为 nginx
步骤 4:配置 Nginx 支持 PHP 解析

编辑 Nginx 默认站点配置,让 Nginx 能处理 .php 文件:vim /etc/nginx/conf.d/default.conf

修改以下 2 处:

  1. 首页优先级:在index后添加index.php(确保优先解析 PHP 首页):

    ini 复制代码
    index  index.php index.html index.htm;  # 原值无 index.php,需添加
  2. 启用 PHP 解析块:移除默认注释的location ~ .php$块,并修改SCRIPT_FILENAME路径:

    ini 复制代码
    location ~ \.php$ {
        root           /usr/share/nginx/html;  # PHP 项目根目录(与 Nginx 一致)
        fastcgi_pass   127.0.0.1:9000;        # PHP-FPM 监听地址(默认 9000 端口)
        fastcgi_index  index.php;             # 默认 PHP 首页
        # 关键:修改 /scripts 为 $document_root(指向 PHP 根目录)
        fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;        # 引入 FastCGI 通用配置
    }
步骤 5:优化 PHP 配置(适配 Zabbix 需求)

编辑 PHP 主配置文件 php.ini,调整参数以满足 Zabbix 运行要求:vim /etc/php.ini

修改以下参数(可通过 :/参数名 快速搜索):

参数名 原值(参考) 修改后值 说明
expose_php On Off 隐藏 PHP 版本,提升安全性
short_open_tag Off On 支持 PHP 短标签(如 <? ?>,避免代码报错)
max_execution_time 30 300 PHP 脚本最大执行时间(Zabbix 处理数据需更长时间)
max_input_time 60 300 接收请求数据的最大时间
memory_limit 128M 256M PHP 脚本最大内存占用(避免监控数据处理时内存不足)
post_max_size 8M 16M POST 请求最大数据量(Zabbix 导入模板需更大容量)
upload_max_filesize 2M 8M 最大上传文件大小(Zabbix 上传图片 / 模板依赖)
always_populate_raw_post_data -1 -1 启用 $HTTP_RAW_POST_DATA 接收原始 POST 数据(Zabbix 部分功能依赖)
date.timezone 未设置 Asia/Shanghai 设置时区(避免 Zabbix 时间显示异常)
步骤 6:启动 PHP-FPM 并验证
bash 复制代码
# 启动 PHP-FPM 并设置开机自启
systemctl enable php-fpm --now

# 重启 Nginx(使配置生效)
systemctl restart nginx

# 关闭 SELinux(避免权限拦截,CentOS 7 默认开启)
setenforce 0  # 临时关闭(重启后失效)
# 永久关闭 SELinux(需重启系统)
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 验证 PHP 环境(创建测试文件)
vim /usr/share/nginx/html/info.php

写入以下内容:

php 复制代码
<?php
phpinfo();  // 输出 PHP 环境信息
?>

在浏览器访问 http://Zabbix Server IP/info.php,若显示 PHP 信息页面,则 PHP 配置正常。

步骤 7:验证 PHP 连接 MariaDB

创建数据库连接测试文件,确保 PHP 能正常访问 Zabbix 数据库:vim /usr/share/nginx/html/db_test.php

写入以下内容(替换 ZabbixDB@123 为实际的 Zabbix 数据库密码):

php 复制代码
<?php
// 连接 MariaDB(主机:localhost,用户:zabbix,密码:ZabbixDB@123)
$link = mysqli_connect('127.0.0.1', 'zabbix', 'ZabbixDB@123', 'zabbix');

// 检查连接结果
if ($link) {
    echo "Zabbix 数据库连接成功!";
} else {
    echo "Zabbix 数据库连接失败:" . mysqli_connect_error();
}
?>

在浏览器访问 http://Zabbix Server IP/db_test.php,若显示 "连接成功",则 PHP 与数据库联动正常。

注意 :测试完成后建议删除 info.phpdb_test.php,避免泄露服务器信息。

三、Zabbix Server 6.0 部署

3.1 下载 Zabbix Server 源码包

Zabbix 6.0 提供源码包和 RPM 包,此处选择源码编译(灵活性更高):

bash 复制代码
# 下载 Zabbix 6.0.6 源码包(官网地址,若失效可去官网找最新 6.0 LTS 版本)
wget https://cdn.zabbix.com/zabbix/sources/stable/6.0/zabbix-6.0.6.tar.gz

# 解压源码包(解压到 /root 目录,可根据需求调整)
tar zxvf zabbix-6.0.6.tar.gz -C /root/

3.2 安装 Zabbix Server 依赖包

编译 Zabbix Server 需要依赖多种开发库,确保提前安装:

bash 复制代码
yum install -y \
mysql-devel \       # MariaDB 开发库(数据库连接依赖)
pcre-devel \        # PCRE 正则库(正则匹配依赖)
openssl-devel \     # OpenSSL 库(HTTPS 支持依赖)
zlib-devel \        # Zlib 压缩库(数据压缩依赖)
libxml2-devel \     # XML 库(配置解析依赖)
net-snmp-devel \    # SNMP 库(监控网络设备依赖)
net-snmp \          # SNMP 工具(SNMP 监控依赖)
libssh2-devel \     # SSH2 库(SSH 监控依赖)
OpenIPMI-devel \    # IPMI 库(硬件监控依赖)
libevent-devel \    # Libevent 库(事件驱动依赖)
openldap-devel \    # LDAP 库(LDAP 认证依赖)
libcurl-devel \     # cURL 库(HTTP 监控依赖)
fping \             # 网络探测工具(ICMP 监控依赖)
gcc \               # C 编译器(源码编译依赖)
gcc-c++ \           # C++ 编译器(源码编译依赖)
make                # 编译工具(源码编译依赖)

3.3 创建 Zabbix 系统用户

Zabbix Server 需以非 root 用户运行,创建专用用户 zabbix

bash 复制代码
# 原文档的 /sbin/nglogin 为笔误,正确为 /sbin/nologin(禁止用户登录系统)
useradd -s /sbin/nologin -M zabbix
# -s /sbin/nologin:禁止用户登录终端
# -M:不创建用户家目录

3.4 导入 Zabbix 数据库脚本

Zabbix 数据库需要初始化表结构和基础数据,导入顺序必须严格遵循(否则会报错):

bash 复制代码
# 进入 Zabbix 源码的数据库脚本目录
cd /root/zabbix-6.0.6/database/mysql

# 按以下顺序导入脚本(替换 ZabbixDB@123 为实际密码)
mysql -u zabbix -pZabbixDB@123 zabbix < schema.sql      # 1. 基础表结构(必须第一个导入)
mysql -u zabbix -pZabbixDB@123 zabbix < images.sql      # 2. 图标数据
mysql -u zabbix -pZabbixDB@123 zabbix < data.sql        # 3. 初始配置数据(如默认用户、模板)
mysql -u zabbix -pZabbixDB@123 zabbix < double.sql      # 4. 双精度数据支持
mysql -u zabbix -pZabbixDB@123 zabbix < history_pk_prepare.sql  # 5. 历史数据主键优化

# 验证导入结果(登录数据库查看表数量)
mysql -u zabbix -pZabbixDB@123 zabbix -e "show tables;" | wc -l
# 输出 178 则导入正常(Zabbix 6.0 标准表数量)

3.5 编译并安装 Zabbix Server

bash 复制代码
# 进入 Zabbix 源码根目录
cd /root/zabbix-6.0.6/

# 设置编译器为 C99 标准(避免编译报错)
export CFLAGS="-std=gnu99"

# 配置编译参数(指定安装路径、启用所需模块)
./configure \
--sysconfdir=/etc/zabbix/ \          # 配置文件路径(统一管理)
--enable-server \                    # 启用 Zabbix Server 模块
--with-mysql \                       # 启用 MySQL/MariaDB 支持
--with-net-snmp \                     # 启用 SNMP 监控支持
--with-libxml2 \                     # 启用 XML 支持
--with-ssh2 \                        # 启用 SSH 监控支持
--with-openipmi \                    # 启用 IPMI 硬件监控支持
--with-zlib \                        # 启用 Zlib 压缩支持
--with-libpthread \                  # 启用多线程支持
--with-libevent \                    # 启用事件驱动支持
--with-openssl \                     # 启用 SSL 加密支持
--with-ldap \                        # 启用 LDAP 认证支持
--with-libcurl \                     # 启用 cURL 支持(HTTP/HTTPS 监控)
--with-libpcre                       # 启用 PCRE 正则支持

# 编译并安装(-j 4 表示用 4 个线程编译,可根据 CPU 核心数调整)
make -j 4 && make install

# 验证安装结果(查看 Zabbix Server 版本)
zabbix_server --version
# 输出 "zabbix_server (Zabbix) 6.0.6" 则安装正常

3.6 配置 Zabbix Server

编辑 Zabbix Server 主配置文件,主要配置日志路径和数据库连接信息:vim /etc/zabbix/zabbix_server.conf

修改以下关键参数(其他参数默认即可,后续可根据需求调整):

ini 复制代码
# 38 行:日志文件路径(需手动创建)
LogFile=/var/log/zabbix_server.log

# 123 行:Zabbix 数据库密码(替换为实际密码 ZabbixDB@123)
DBPassword=ZabbixDB@123

# 可选配置(根据需求添加)
DBUser=zabbix                # 数据库用户名(默认就是 zabbix,可省略)
DBName=zabbix                # 数据库名(默认就是 zabbix,可省略)
DBPort=3306                  # 数据库端口(默认 3306,可省略)
ListenPort=10051             # Zabbix Server 监听端口(默认 10051,可省略)
步骤 2:创建日志文件并设置权限
bash 复制代码
# 创建日志文件
touch /var/log/zabbix_server.log

# 设置日志文件权限(Zabbix 用户需读写权限)
chown zabbix:zabbix /var/log/zabbix_server.log
chmod 644 /var/log/zabbix_server.log

3.7 配置 Zabbix Server 系统服务

为了方便管理 Zabbix Server(如启停、开机自启),创建 systemd 服务文件:vim /usr/lib/systemd/system/zabbix-server.service

写入以下内容:

ini 复制代码
[Unit]
Description=Zabbix Server with MySQL DB  # 服务描述
After=syslog.target network.target mysqld.service  # 依赖服务(确保先启动日志、网络、数据库)

[Service]
Type=simple  # 服务类型(简单类型,直接启动命令)
ExecStart=/usr/local/sbin/zabbix_server -f  # 启动命令(-f 表示前台运行,适配 systemd)
User=zabbix  # 运行用户(专用用户 zabbix)
Restart=on-failure  # 故障时自动重启(可选,提升可用性)

[Install]
WantedBy=multi-user.target  # 多用户模式下启用
步骤 2:启动 Zabbix Server 并验证
bash 复制代码
# 重新加载 systemd 服务(识别新创建的服务文件)
systemctl daemon-reload

# 启动 Zabbix Server 并设置开机自启
systemctl enable zabbix-server --now

# 验证 Zabbix Server 状态
systemctl status zabbix-server  # 显示 active (running) 则正常

# 验证 Zabbix Server 监听端口(默认 10051)
netstat -ntap | grep 10051  # 输出包含 "LISTEN" 则正常(若未安装 netstat,用 ss -ntap | grep 10051)

# 查看 Zabbix Server 日志(排查错误)
tail -f /var/log/zabbix_server.log  # 无报错则正常

四、Zabbix 前端部署与访问

4.1 部署 Zabbix 前端文件

将 Zabbix 源码中的前端 UI 文件复制到 Nginx 根目录:

bash 复制代码
# 复制前端文件到 Nginx 根目录(/usr/share/nginx/html)
cp -r /root/zabbix-6.0.6/ui/* /usr/share/nginx/html/

# 设置前端文件权限(Nginx 用户需读写权限)
chown -R nginx:nginx /usr/share/nginx/html/
chmod -R 755 /usr/share/nginx/html/

4.2 开放 Zabbix Server 端口(可选)

若客户端需连接 Zabbix Server,需开放 10051 端口(Server 监听端口):

bash 复制代码
# 永久开放 10051 端口
firewall-cmd --permanent --add-port=10051/tcp --zone=public
# 重新加载防火墙
firewall-cmd --reload

4.3 访问 Zabbix 前端安装向导

在浏览器输入 http://Zabbix Server IP,进入 Zabbix 前端安装向导:

步骤 1:欢迎页面

点击 Next step(下一步),进入环境检查页面。

步骤 2:环境检查

确保所有检查项均为 OK (若有报错,根据提示修复,如缺少 PHP 扩展则重新安装),点击 Next step

步骤 3:数据库连接配置

填写 Zabbix 数据库信息(与之前创建的一致):

  • Database type:MySQL(默认)
  • Database host:localhost(本地数据库)
  • Database port:3306(默认,留空则使用默认)
  • Database name:zabbix
  • User:zabbix
  • Password:ZabbixDB@123(实际数据库密码)点击Next step,若连接成功则进入 Server 配置页面。
步骤 4:Zabbix Server 配置
  • Zabbix server hostname:Zabbix Server(自定义,如实际主机名)
  • Zabbix server port:10051(默认)
  • Name of web interface:Zabbix Monitor自定义,前端页面标题)点击Next step,进入安装摘要页面。
步骤 5:安装摘要

确认配置信息无误,点击 Next step,开始安装。

步骤 6:安装完成

安装成功后,点击 Finish,跳转至 Zabbix 登录页面。

4.4 登录 Zabbix 前端

Zabbix 默认管理员账号:

  • Username:Admin(首字母大写,区分大小写)
  • Password:zabbix(默认密码,登录后建议立即修改)
步骤 2:修改默认密码(必做)
  1. 登录后,点击右上角 AdminProfile
  2. Password 标签页,输入旧密码(zabbix)和新密码(建议复杂,如 ZabbixAdmin@123);
  3. 点击 Update 保存。

五、Zabbix Agent2 客户端部署

Zabbix Agent2 用于采集客户端(被监控设备)的监控数据,并发送给 Zabbix Server。

5.1 客户端环境要求

  • 操作系统:CentOS 7(与 Server 一致,其他系统需调整 YUM 源)
  • 网络:能与 Zabbix Server 通信(10050 端口开放,Agent2 默认端口)

5.2 安装 Zabbix Agent2

bash 复制代码
# 1. 更新 CA 证书(避免 HTTPS 下载报错)
yum update ca-certificates -y

# 2. 安装 Zabbix 官方 YUM 源
rpm -ivh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm

# 3. 安装 Zabbix Agent2(Agent2 是 Agent 的升级版,推荐使用)
yum install zabbix-agent2 -y

5.3 配置 Zabbix Agent2

编辑 Agent2 配置文件,指定 Zabbix Server 地址和客户端标识:

bash 复制代码
vim /etc/zabbix/zabbix_agent2.conf

修改以下关键参数(其他参数默认即可):

ini 复制代码
# 13 行:PID 文件路径(默认,可保留)
PidFile=/var/run/zabbix/zabbix_agentd.pid

# 32 行:日志文件路径(默认,可保留)
LogFile=/var/log/zabbix/zabbix_agentd.log

# 43 行:日志文件大小(0 表示不限制,可保留)
LogFileSize=0

# 82 行:Zabbix Server IP(必须修改为实际 Server IP,如 192.168.100.140)
Server=192.168.100.140

# 135 行:主动模式下的 Server IP(与 Server 一致,主动发送数据)
ServerActive=192.168.100.140

# 150 行:客户端主机名(必须唯一,与后续添加到 Server 的主机名一致,如 client-01)
Hostname=client-01

# 268 行:引入自定义配置文件(默认,可保留)
Include=/etc/zabbix/zabbix_agentd.d/*.conf

5.4 配置客户端防火墙

开放 Agent2 监听端口(默认 10050),允许 Server 连接:

bash 复制代码
# 永久开放 10050 端口
firewall-cmd --permanent --add-port=10050/tcp --zone=public
# 重新加载防火墙
firewall-cmd --reload

5.5 启动 Agent2 并验证

bash 复制代码
# 启动 Agent2 并设置开机自启
systemctl enable zabbix-agent2 --now

# 验证 Agent2 状态
systemctl status zabbix-agent2  # 显示 active (running) 则正常

# 验证 Agent2 监听端口
ss -ntap | grep 10050  # 输出包含 "LISTEN" 则正常

# 在 Server 端验证与 Agent2 的通信(需安装 zabbix-get 工具)
yum install zabbix-get -y  # Server 端安装 zabbix-get
# 执行监控项查询(获取客户端系统信息,替换 client-IP 为客户端 IP)
zabbix_get -s 客户端IP -p 10050 -k "system.uname"
# 输出类似 "Linux client-01 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64" 则通信正常

六、Zabbix 基础使用:添加监控主机

部署完成后,需在 Zabbix Server 前端添加客户端主机,实现监控:

6.1 步骤 1:进入主机添加页面

  1. 登录 Zabbix 前端,点击左侧菜单 配置主机
  2. 点击右上角 创建主机

6.2 步骤 2:填写主机基本信息

  • 主机名称 :与 Agent2 配置文件中的 Hostname 一致(如 client-01);
  • 可见名称:自定义显示名称(如 客户端 - 01);
  • 群组 :选择主机群组(如 Linux servers,若无则点击 选择 创建);
  • Interfaces :点击 添加 ,选择 Agent 类型,填写客户端 IP 地址和端口(10050)。

6.3 步骤 3:关联监控模板

  1. 切换到 模板 标签页;
  2. 链接的模板 处,点击 选择 ,搜索并添加 Template OS Linux by Zabbix agent2(Linux 系统默认模板);
  3. 点击 更新 保存模板关联。

6.4 步骤 4:验证监控数据

  1. 等待 1-2 分钟(数据采集需要时间);
  2. 点击左侧菜单 监测主机,找到添加的客户端主机;
  3. 点击主机名称,查看 图形 标签页,可看到 CPU、内存、磁盘等监控图表,说明监控正常。

七、常见问题与解决方案

7.1 问题 1:Zabbix Server 启动失败,日志提示 "DB connection failed"

  • 原因:数据库密码错误、数据库未启动、Zabbix 用户无数据库权限。
  • 解决方案:
    1. 检查数据库是否启动:systemctl status mariadb
    2. 验证 Zabbix 数据库密码:mysql -u zabbix -pZabbixDB@123(能登录则密码正确);
    3. 检查 zabbix_server.conf 中的 DBPassword 是否与实际密码一致。

7.2 问题 2:Zabbix 前端白屏或显示 "502 Bad Gateway"

  • 原因:PHP-FPM 未启动、Nginx 配置错误、PHP 权限不足。
  • 解决方案:
    1. 检查 PHP-FPM 状态:systemctl status php-fpm
    2. 检查 Nginx 配置语法:nginx -t(有错误则修复);
    3. 检查前端文件权限:ls -l /usr/share/nginx/html/(确保 nginx 用户有读权限)。

7.3 问题 3:Agent2 通信失败,Server 端 zabbix-get 无响应

  • 原因:客户端防火墙未开放 10050 端口、Agent2 配置的 Server IP 错误、Agent2 未启动。
  • 解决方案:
    1. 检查客户端防火墙:firewall-cmd --list-ports(确保 10050/tcp 开放);
    2. 检查 Agent2 配置:grep "Server=" /etc/zabbix/zabbix_agent2.conf(确保与 Server IP 一致);
    3. 重启 Agent2:systemctl restart zabbix-agent2

7.4 问题 4:编译 Zabbix Server 时提示 "configure: error: Cannot find libcurl"

  • 原因:缺少 libcurl-devel 依赖包。
  • 解决方案yum install libcurl-devel -y,然后重新执行 ./configure

八、总结

本文详细介绍了 Zabbix 6.0 基于 LNMP 架构的完整部署流程,包括 LNMP 环境搭建、Zabbix Server 编译安装、Agent2 客户端部署及基础监控配置。关键注意事项:

  1. 数据库版本必须满足 Zabbix 6.0 要求(MariaDB ≥10.5);
  2. PHP 配置需严格适配 Zabbix 需求(如时区、执行时间);
  3. Agent2 与 Server 的通信需确保网络通畅(端口开放、IP 配置正确);
  4. 部署后及时修改默认密码,提升系统安全性。

后续可进一步学习 Zabbix 高级功能,如自定义监控项、告警媒介配置(邮件、钉钉)、自动发现与自动注册等,满足更复杂的监控需求。

附录:常用命令汇总

功能 命令
启动 Nginx systemctl start nginx
启动 MariaDB systemctl start mariadb
启动 PHP-FPM systemctl start php-fpm
启动 Zabbix Server systemctl start zabbix-server
启动 Zabbix Agent2 systemctl start zabbix-agent2
查看 Zabbix Server 日志 tail -f /var/log/zabbix_server.log
Server 端测试 Agent 通信 zabbix-get -s 客户端IP -p 10050 -k "system.uname"
检查 Nginx 配置语法 nginx -t
检查 PHP-FPM 配置语法 php-fpm -t
相关推荐
语落心生14 分钟前
Apache Geaflow推理框架Geaflow-infer 解析系列(四)依赖管理
架构
云渠道商yunshuguoji28 分钟前
亚马逊云渠道商:如何用 EC2 Auto Scaling 轻松应对流量洪峰?
架构
泉城老铁1 小时前
Vue2实现语音报警
前端·vue.js·架构
云渠道商yunshuguoji1 小时前
阿里云渠道商:如何选择高性价比阿里云GPU配置?
架构
Mr_万能胶2 小时前
到底原研药,来瞧瞧 Google 官方《Android API 设计指南》
android·架构·android studio
腾讯云开发者3 小时前
架构火花|AI时代,架构师的护城河在哪里?
架构
无心水3 小时前
【分布式利器:限流】3、微服务分布式限流:Sentinel集群限流+Resilience4j使用教程
分布式·微服务·架构·sentinel·分布式限流·resilience4j·分布式利器
梁bk3 小时前
Redis 多级缓存架构学习笔记
redis·缓存·架构
一起学开源4 小时前
分布式基石:CAP定理与ACID的取舍艺术
分布式·微服务·架构·流程图·软件工程
语落心生5 小时前
Apache Geaflow推理框架Geaflow-infer 解析系列(一)Geaflow-Infer 模块简介
架构