Zabbix监控搭建教程:从零安装到主机监控完整步骤
Zabbix 是一套开源的企业级监控系统,用来监测服务器、网络设备和应用的运行状态。
这篇 Zabbix 监控搭建教程面向零基础用户,按“准备环境→安装服务端→配置 Web→添加被监控主机→验证与排错”的顺序展开,每一步都给出可直接执行的命令。
搭建前的环境确认与软件源准备
推荐使用干净的 CentOS 7/8 或 Ubuntu 20.04/22.04 系统,内存至少 2GB(监控 10 台以内主机足够),并确保服务器能访问外网。
Zabbix 的组件较多,手动编译容易出错,新手建议直接使用官方软件源安装。
先更新系统并安装基础工具:
# CentOS
yum update -y
yum install -y wget vim net-tools
# Ubuntu
apt update && apt upgrade -y
apt install -y wget vim net-tools
随后安装数据库和 Web 服务器。
Zabbix 支持 MySQL/MariaDB 和 PostgreSQL,这里以 MySQL 为例。
CentOS 下执行:
yum install -y mariadb-server mariadb nginx php php-fpm php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap
systemctl enable --now mariadb nginx php-fpm
Ubuntu 下包名略有差异:
apt install -y mysql-server nginx php-fpm php-mysql php-gd php-xml php-bcmath php-mbstring php-ldap
systemctl enable --now mysql nginx php*-fpm
完成后用 systemctl status nginx 和 systemctl status mariadb(或 mysql)确认服务处于 running 状态。
如果服务启动失败,先检查 80 端口是否被占用、数据库数据目录权限是否正确。
安装 Zabbix Server 与数据库初始化
以 Zabbix 6.0 LTS 为例,先添加官方仓库。
CentOS 下:
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum clean all
yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
Ubuntu 下:
wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4+ubuntu22.04_all.deb
dpkg -i zabbix-release_6.0-4+ubuntu22.04_all.deb
apt update
apt install -y zabbix-server-mysql zabbix-frontend-php zabbix-nginx-conf zabbix-sql-scripts zabbix-agent
仓库地址中的版本号和系统代号可能随官方更新变化,如果下载失败,到 Zabbix 官方下载页核对当前可用的 release 包链接。
创建数据库并导入初始数据:
mysql -uroot -p
在 MySQL 提示符下执行:
CREATE DATABASE zabbix CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
CREATE USER 'zabbix'@'localhost' IDENTIFIED BY 'YourStrongPass';
GRANT ALL PRIVILEGES ON zabbix.* TO 'zabbix'@'localhost';
SET GLOBAL log_bin_trust_function_creators = 1;
FLUSH PRIVILEGES;
EXIT;
然后导入表结构和初始数据:
zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix
导入过程可能需要几十秒到几分钟,完成后用 mysql -uzabbix -p -e "use zabbix; show tables;" 确认表已存在。
如果导入时报错,多半是数据库字符集或权限问题,回看上面的建库语句。
编辑 Zabbix Server 配置文件,填入数据库密码:
vim /etc/zabbix/zabbix_server.conf
找到 DBPassword= 一行,改为 DBPassword=YourStrongPass,保存后启动服务:
systemctl restart zabbix-server zabbix-agent nginx php-fpm
systemctl enable zabbix-server zabbix-agent nginx php-fpm
配置 Web 前端并登录后台
Zabbix 的 Web 界面依赖 Nginx 和 PHP-FPM 配合。
以 CentOS 为例,官方仓库会提供 /etc/nginx/conf.d/zabbix.conf,通常只需取消 listen 80; 和 server_name 前的注释,然后重启 Nginx:
systemctl restart nginx
Ubuntu 下配置文件在 /etc/zabbix/nginx.conf,需要把它软链接或复制到 Nginx 的站点目录,并确保 PHP-FPM 的 socket 路径与配置一致。
浏览器访问 http://你的服务器IP,会进入 Zabbix 安装向导。
按提示检查 PHP 环境,全部显示 OK 后填写数据库连接信息:
- Database host:
localhost - Database name:
zabbix - User:
zabbix - Password:刚才设置的数据库密码
下一步设置 Zabbix 服务端名称,默认即可。
完成后用默认账号登录:
- 用户名:
Admin - 密码:
zabbix
登录后第一件事是修改 Admin 密码,路径在 User settings → Change password。
如果访问页面显示 502,检查 PHP-FPM 是否运行、Nginx 配置里的 fastcgi_pass 地址是否正确;
如果显示数据库连接失败,确认 zabbix_server.conf 和 Web 向导里的密码一致。
添加被监控主机并验证数据采集
Zabbix 默认已把本机作为被监控对象。
要监控其他服务器,需要在被监控端安装 Zabbix Agent,并在服务端添加主机。
在被监控服务器上安装 Agent(以 CentOS 为例):
rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/7/x86_64/zabbix-release-6.0-4.el7.noarch.rpm
yum install -y zabbix-agent
编辑 /etc/zabbix/zabbix_agentd.conf,至少修改两项:
Server=服务端IP
ServerActive=服务端IP
Hostname=本机主机名
启动并设置开机自启:
systemctl enable --now zabbix-agent
回到 Zabbix Web 后台,进入 Configuration → Hosts → Create host,填写主机名称、可见名称,在 Interfaces 中添加 Agent 接口并填写被监控服务器 IP 和端口 10050,选择模板如 Linux by Zabbix agent,保存。
稍等片刻,在 Monitoring → Latest data 中筛选该主机,能看到 CPU、内存、磁盘等数据即表示采集成功。
如果显示红色不可用,先在服务端用 zabbix_get -s 被监控IP -p 10050 -k agent.ping 测试连通性,返回 1 说明 Agent 正常,再检查防火墙是否放行 10050 端口。
新手容易踩的几个坑
- 数据库密码、Zabbix Server 配置文件、Web 向导三处密码必须一致,改过任意一处都要同步更新。
- 防火墙未放行 10050 端口是最常见的“主机不可用”原因,
firewall-cmd --add-port=10050/tcp --permanent后记得 reload。 - PHP 时区未设置会导致 Web 界面报错,在 php.ini 中配置
date.timezone = Asia/Shanghai并重启 PHP-FPM。 - 导入数据库时若报
log_bin_trust_function_creators相关错误,按前面步骤在 MySQL 中临时开启该参数再导入。 - 生产环境建议把数据库独立部署,并定期备份 zabbix 库,避免监控数据和服务端一起丢失。
常见疑问
Zabbix Server 和 Agent 必须装在同一台机器吗? 不是。
Server 负责收集和展示,Agent 装在被监控主机上,通过 10050 端口上报数据,两者可以跨服务器部署。
没有公网 IP 的内网机器能监控吗? 可以,只要 Server 能通过网络访问到 Agent 的 10050 端口即可,通常是同一内网或通过 VPN 打通。
搭建后如何确认监控真的生效? 登录后台查看 Monitoring → Latest data,能看到目标主机的实时指标且有更新时间,就说明采集链路正常。
Zabbix 和 Prometheus 该选哪个? Zabbix 自带 Web 界面和告警,适合传统服务器监控快速上手;
Prometheus 更适合容器和云原生环境,选型时按现有技术栈和维护成本决定。
完成以上步骤后,你就拥有了一个可用的 Zabbix 监控环境。
建议先监控少量主机跑通流程,再逐步增加模板和告警规则,避免一次性配置过多导致排查困难。