一、前言

在现代 IT 基础设施中,监控系统是保障业务稳定运行的核心组件。Zabbix 作为一款开源、功能强大、可扩展性强的分布式监控解决方案,广泛应用于金融、电商、互联网等企业级场景。

本文将基于 Ubuntu 22.04 LTS 操作系统,采用企业级部署架构,完整部署 Zabbix 6.0 LTS 版本(长期支持版),涵盖 Zabbix Server、Web UI、Agent、MySQL 数据库及 Nginx + PHP-FPM 的高性能 LAMP 架构。整个过程注重安全性、性能调优、高可用性设计,适合生产环境参考。

二、部署架构设计

组件 主机 IP 地址 说明
Zabbix Server & Web monitor 192.168.22.10 主监控服务器,运行 Zabbix Server 和 Web UI
MySQL 数据库 db 192.168.22.20 数据库服务器(可选分离部署)
Zabbix Agent 所有被监控主机 动态 安装在被监控服务器上

三、环境准备

1. 系统初始化

sudo apt update                               # 更新软件包列表
sudo hostnamectl set-hostname monitor         # 设置主机名
sudo timedatectl set-timezone Asia/Shanghai   # 配置时区(关键!监控时间必须准确)
sudo apt install chrony -y                    # 同步时间
sudo systemctl enable chronyd
sudo systemctl start chronyd

2. 禁用 Swap(Zabbix Server 建议)

sudo swapoff -a
sudo sed -i '/ swap / s/^\(.*\)$/#\1/g' /etc/fstab

四、部署 LAMP 环境

1. 安装 Nginx 和 PHP-FPM

sudo apt install nginx php-fpm php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap php-curl php-zip -y

2. 配置 PHP-FPM

编辑 /etc/php/8.1/fpm/php.ini

memory_limit = 256M
post_max_size = 32M
upload_max_filesize = 16M
max_execution_time = 600
max_input_time = 600
date.timezone = Asia/Shanghai

重启 PHP-FPM:

sudo systemctl restart php8.1-fpm

3. 配置 Nginx 虚拟主机

创建配置文件 /etc/nginx/sites-available/zabbix.conf

server {
    listen 80;
    server_name monitor.yourcompany.com;
    root /usr/share/zabbix;
    index index.php;

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

    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/var/run/php/php8.1-fpm.sock;
        fastcgi_param PHP_VALUE "max_execution_time=600";
    }

    location ~ /\.ht {
        deny all;
    }
}

启用站点:

sudo ln -s /etc/nginx/sites-available/zabbix.conf /etc/nginx/sites-enabled/
sudo rm -f /etc/nginx/sites-enabled/default
sudo nginx -t && sudo systemctl reload nginx

五、部署 MySQL 数据库

sudo apt install mysql-server -y
sudo mysql_secure_installation    #执行后,你会看到交互式提示,以下是逐步说明
Step 1: 验证密码组件
Securing the MySQL server deployment.

Connecting to MySQL using a blank password.

Would you like to setup VALIDATE PASSWORD component?
Press y|Y for Yes, any other key for No: Y
  • 选择 Y
  • 它会强制用户设置强密码(包含大小写、数字、特殊字符)
Step 2: 设置密码验证强度
There are three levels of password validation policy:
LOW    Length >= 8
MEDIUM Length >= 8, numeric, mixed case, and special characters
STRONG Length >= 8, numeric, mixed case, special characters, dictionary file

Please enter 0 = LOW, 1 = MEDIUM and 2 = STRONG: 1
  • 建议选 1(MEDIUM)
  • 2(STRONG)可能过于严格
  • mysql_secure_installation 跳过了密码设置,无需密码登录
Step 4: 删除匿名用户
Remove anonymous users? (Press y|Y for Yes, any other key for No) : Y
Step 5: 禁止 root 远程登录
Disallow root login remotely? (Press y|Y for Yes, any other key for No) : Y
Step 6: 删除 test 数据库
Remove test database and access to it? (Press y|Y for Yes, any other key for No) : Y
Step 7: 重新加载权限表
Reload privilege tables now? (Press y|Y for Yes, any other key for No) : Y

登录数据库

sudo mysql -u root -h localhost

为 root 用户设置密码并改为密码认证

-- 修改 root@localhost 使用密码认证
ALTER USER 'root'@'localhost' IDENTIFIED WITH caching_sha2_password BY 'Passw0rd!@#';

-- 刷新权限
FLUSH PRIVILEGES;

密码要求:

  • 长度 ≥ 8
  • 包含大写、小写、数字、特殊字符
  • 示例:Passw0rd!@#

创建 Zabbix 数据库

CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'ZabbixDB@6.0!';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
FLUSH PRIVILEGES;
EXIT;

注意localhost 是 Zabbix Server 的 IP,确保网络可达。

六、安装 Zabbix Server 6.0 LTS

1. 添加 Zabbix 官方仓库

# 安装 wget 和源工具
sudo apt install wget gnupg -y

# 下载并添加 Zabbix GPG 密钥
wget https://repo.zabbix.com/zabbix-official-repo.key
sudo gpg --dearmor -o /usr/share/keyrings/zabbix-archive-keyring.gpg zabbix-official-repo.key

# 添加 Zabbix 6.0 LTS 仓库
echo "deb [signed-by=/usr/share/keyrings/zabbix-archive-keyring.gpg] https://repo.zabbix.com/zabbix/6.0/ubuntu jammy main" | sudo tee /etc/apt/sources.list.d/zabbix.list

# 更新源
sudo apt update

2. 安装 Zabbix Server、Frontend、Agent

sudo apt install zabbix-server-mysql zabbix-frontend-php zabbix-sql-scripts zabbix-agent -y

七、导入数据库并配置 Zabbix Server

1. 导入初始数据库 schema

-- 登录数据库启用函数创建信任(仅当前运行时有效)
sudo mysql -u root -p
SET GLOBAL log_bin_trust_function_creators = 1;
EXIT;
zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql -h localhost -u zabbix -p zabbix

2. 配置 Zabbix Server(/etc/zabbix/zabbix_server.conf)

LogFile=/var/log/zabbix/zabbix_server.log
LogFileSize=10
PidFile=/run/zabbix/zabbix_server.pid
SocketDir=/run/zabbix
DBHost=127.0.0.1
DBName=zabbix
DBUser=zabbix
DBPassword=StrongPassw0rd!@#
SNMPTrapperFile=/var/log/snmptrap/snmptrap.log
Timeout=4
AlertScriptsPath=/usr/lib/zabbix/alertscripts
ExternalScripts=/usr/lib/zabbix/externalscripts
LogSlowQueries=3000
StartPollers=10
StartPollersUnreachable=5
StartTrappers=10
StartPingers=5
StartDiscoverers=3
StartHTTPPollers=5

3. 授权日志目录

sudo chown zabbix:zabbix /var/log/zabbix
sudo chmod 755 /var/log/zabbix

八、启动服务并设置开机自启

sudo systemctl enable zabbix-server zabbix-agent nginx php8.1-fpm
sudo systemctl start zabbix-server zabbix-agent php8.1-fpm nginx

# 检查状态
sudo systemctl status zabbix-server --no-pager -l

九、Web 安装向导

Zabbix 默认登录账号密码

账号:Admin

密码:zabbix

访问 http://你的IP 进入 Zabbix Web 安装界面。

浏览器访问这里会有一个错误

安装 sudo apt install -y locales 包,编辑 /etc/locale.gen 文件
写入:

zh_CN.UTF-8 UTF-8
zh_TW.UTF-8 UTF-8

生成新的 locale

sudo locale-gen

重新启动一下 PHP 和Nginx 就可以了,想用什么语言就在 /etc/locale.gen 文件里加入什么语言

这里显示全部 OK 点下一步。

这里填写连接数据库用的用户和库

这里设置主机名称和时区,主题

登录进来后点击用户设置,这里可以修改密码

Zabbix 的部署只是构建监控体系的第一步,真正的价值在于持续优化、主动预警与生态融合。一个完善的监控平台不仅是故障的报警器,更是保障业务稳定、驱动运维智能化的核心基础设施。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐