ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

CentOS 7在线安装Zabbix 5.0监控平台全流程避坑指南

2026/10/7 4:42:39 拓冰建站 浏览量
CentOS 7在线安装Zabbix 5.0监控平台全流程避坑指南 很多做运维的朋友第一次接触监控系统路线都出奇一致虚拟机里装一台 CentOS 7然后在上面在线安装 Zabbix 5.0。这个组合几乎是入门监控的“标准动作”Zabbix 功能覆盖主机、网络、数据库、Web 站点CentOS 7 稳定且资料多5.0 作为长期支持版本社区踩坑记录也足够丰富。但真到自己动手“在线安装”这四个字背后的细节能让人卡一整晚DNS 不通、自带数据库版本不兼容、PHP 时区没配置、Web 界面中文变方块……前前后后我给不下十台虚机装过同一套环境几乎每次都踩到不同的坑。这篇就把整套流程拆开揉碎写清楚包括每一步背后的原因、关键参数怎么选、出问题怎么排查准备入坑的同学可以直接照着做老手也欢迎来挑错补充。1. 方案选型与实验环境准备1.1 这套组合解决什么场景问题Zabbix 5.0 是 2020 年发布的 LTS 版本和 CentOS 7 的匹配度非常高。选这套方案的人基本是三类需求一是刚转行做运维需要一个能快速上手、功能完整的监控平台练手二是公司已经有监控规划但不敢直接在生产环境动手先在虚拟机里搭一套完整环境做功能验证和配置测试三是在实验室复现某个业务拓扑需要把 MySQL、Nginx、Redis 之类的服务统一监控起来Zabbix 是最快能交付的那一个。虚拟机的好处不用多说——装坏了、改坏了一个快照就能回到安全状态。我在实际搭建时特别建议把快照用勤一点装完系统打一个配置完 yum 源打一个数据库初始化成功再打一个。后面每遇到一个问题都能快速回溯到某个确定没坏的状态排查效率翻倍不用从头再来。1.2 虚拟机配置与镜像版本选择VMware Workstation 15/16/17 都可以虚拟机配置建议 2 核 CPU、4GB 内存、40GB 硬盘网络模式选 NAT。Zabbix Server 本身不算重4GB 内存完全够跑但虚拟机的 CPU 和内存最好还是别抠门因为后面要跑 MySQL 和 PHP-FPM配置太弱的话导入初始数据库表结构那一步会明显变慢。CentOS 7 镜像选择也有讲究。最新的是 7.9 (2009 版)建议直接去阿里云镜像站或网易镜像站下载 Minimal 版。很多人喜欢下 DVD 版其实没必要——Minimal 版没有桌面环境安装快、占用小而且我们用不着图形界面都是纯命令行操作。系统装完后第一时间设置 root 密码、确认磁盘分区正常然后关机做个快照。这个快照就是“干净系统”基准点后面所有安装都从它开始。2. 安装前绕不开的三项基础配置2.1 网络与 DNS 排障让虚拟机先能顺畅访问外网“centos7 无法 ping 通百度”几乎是每个虚拟机用户都会遇到的搜索词原因其实就那几个。VMware 安装完 Linux 后网卡经常没被正确激活最常见的是/etc/sysconfig/network-scripts/ifcfg-ens33里的ONBOOTno开机不会自动拉起网卡导致系统里只有回环地址 lo。可以先执行ip addr检查如果看不到 ens33 的 IP说明网卡没起来。修改网卡配置是第一步vim /etc/sysconfig/network-scripts/ifcfg-ens33 # 确保以下几项正确 ONBOOTyes BOOTPROTOstatic IPADDR192.168.216.132 NETMASK255.255.255.0 GATEWAY192.168.216.2 DNS1114.114.114.114 DNS28.8.8.8注意 GATEWAY 要填 VMware NAT 网的默认网关在 VMware 的“虚拟网络编辑器”里能看到一般是 x.x.x.2。DNS 很有讲究我在测试中发现很多机器能 ping 通 IP 但解析不了域名就是 DNS 没有配置或者写错了。改完配置执行systemctl restart network然后依次测试ping -c 3 网关IP、ping -c 3 114.114.114.114、ping -c 3 www.baidu.com。如果网关通了、公网 IP 通了、域名解析不通问题基本锁定在 DNS 上把/etc/resolv.conf里加上nameserver 114.114.114.114再刷新。这套排查思路顺序不能乱从近到远一步一步缩小范围。2.2 关闭 SELinux 与防火墙端口策略这一步很多人会跳过跳过之后就会出现各种“莫名其妙”的问题Zabbix Server 启动失败、Web 页面打不开、Agent 连不上 Server。原因在于 CentOS 7 默认开启的 SELinux 会拦截 Zabbix、Apache、PHP-FPM 的很多操作而且日志还不容易被注意到。直接用两行命令把它关掉并且永久生效sed -i s/SELINUXenforcing/SELINUXdisabled/ /etc/selinux/config setenforce 0 getenforce执行完getenforce输出Permissive说明当前会话已经生效重启后也会保持在 disabled 状态。防火墙这边Zabbix 需要放行 80Web 界面、10050Agent 主动采集端口、10051Server 接收数据端口firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port10050/tcp firewall-cmd --permanent --add-port10051/tcp firewall-cmd --reload firewall-cmd --list-ports如果是测试环境有人图省事直接systemctl stop firewalld systemctl disable firewalld把防火墙关了也能跑起来。但我还是建议保留防火墙、只放行必要端口因为 Zabbix 本身就是监控软件经常要连带测试网络策略保留防火墙能让后续的排查思路更贴近生产环境。2.3 更换国内 yum 源在线安装提速的关键“在线安装”四个字成败很大程度取决于 yum 源速度。默认的 CentOS 官方源在海外国内网络环境下下载速度很慢几十个依赖包能等上半小时。换到阿里云或者腾讯云镜像源下载速度立竿见影。换源的流程是固定的先备份原始配置再下载新的 repo 文件最后清理缓存重新生成。mkdir /etc/yum.repos.d/backup mv /etc/yum.repos.d/CentOS-*.repo /etc/yum.repos.d/backup/ curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo sed -i s/$releasever/7/g /etc/yum.repos.d/CentOS-Base.repo yum clean all yum makecache替换后顺手把 EPEL 源也配上后面安装一些辅助工具比如中文字体包会用得上yum install -y epel-release配完源先更新一下系统yum -y update把内核和基础软件升到最新。这里有个小建议更新完系统再打一个快照因为 yum update 有时会把内核一起升级后面所有安装都基于新内核运行快照点更干净。3. 数据库准备Zabbix 5.0 的硬性门槛3.1 为什么不能用 CentOS 7 自带的 MariaDB这是整个安装流程里最大的坑绝大多数教程都隐含了一个前提——你可以直接用系统自带的 MariaDB 5.5。但 Zabbix 5.0 官方要求数据库版本最低是 MariaDB 10.0 或者 MySQL 5.7CentOS 7 默认源里的是 MariaDB 5.5.68完全不满足要求。我实测过用 5.5 硬上 Zabbix 5.0——初始化表结构的时候会出现告警系统能勉强跑起来但历史数据写入明显变慢而且监控项数量上来之后数据库的 CPU 占用会一直居高不下。所以不要在这上面节省时间直接把数据库升级到 MariaDB 10.5从源头避免性能隐患。如果你之前已经用自带源装过 mariadb需要先移除干净yum remove -y mariadb* rm -rf /var/lib/mysql注意如果有生产数据不能这样直接删目录。这是新装环境做这一步前务必确认数据目录里没有需要保留的内容。3.2 使用 MariaDB 官方源安装 10.5 版本先导入官方签名再写一个 repo 文件rpm --import https://yum.mariadb.org/RPM-GPG-KEY-MariaDB vim /etc/yum.repos.d/MariaDB.repo文件内容如下[mariadb] name MariaDB baseurl http://yum.mariadb.org/10.5/centos7-amd64 gpgkeyhttps://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck1然后安装并启动yum install -y MariaDB-server MariaDB-client systemctl start mariadb systemctl enable mariadb systemctl status mariadb启动之后建议执行一次安全初始化脚本把 root 密码设置好、移除匿名用户和测试库mysql_secure_installation这个脚本会一步步问问题按提示设置 root 密码后面的匿名用户、测试库、远程 root 登录都选 n 或者 y 按需处理。测试环境建议把匿名用户删掉、root 远程登录禁用保持一个相对合理的安全基线。执行完后用mysql -uroot -p登录验证。如果 root 密码忘了可以通过systemctl stop mariadb然后再用mysqld_safe --skip-grant-tables模式重置这也是运维基本功但我希望你别在这里用上它。3.3 创建 Zabbix 数据库与专用账号登录数据库后执行下面的 SQL 创建库、建用户、授权。这里每条语句都有意义不要省略CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER zabbixlocalhost IDENTIFIED BY zabbix; GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; FLUSH PRIVILEGES;字符集这一行千万别省。utf8_bin排序规则是大小写敏感的二进制比较Zabbix 官方推荐这个配置。如果建库时用默认字符集后面导入中文字符相关数据时会出现字符混乱的问题排查起来非常痛苦。密码zabbix是测试环境专用生产环境务必换强密码同时以后改密码时要记得同步修改/etc/zabbix/zabbix_server.conf里的DBPassword字段。4. Zabbix Server 在线安装与初始化4.1 添加官方仓库并安装全部核心组件Zabbix 5.0 在 CentOS 7 上的安装方式非常简单本质上就是添加官方 Yum 仓库然后一条命令装完所有东西。先添加仓库rpm -Uvh https://repo.zabbix.com/zabbix/5.0/rhel/7/x86_64/zabbix-release-5.0-1.el7.noarch.rpm yum clean all然后安装组件。这里我习惯把zabbix-get也一起装上排查问题时可以用它手动测试 Agent 端采集是否正常非常有用yum install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-get这一步会下载大量依赖包。你会发现它把 CentOS 自带的 PHP 5.4 替换成了 PHP 7.2 的环境SCL 软件集合这是 Zabbix 5.0 的正常行为它的 Web 前端要求 PHP 7.2 以上。安装完成后Apache 的 Zabbix 配置在/etc/httpd/conf.d/zabbix.confPHP-FPM 的 Zabbix 配置在/etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf后面改时区要操作的就是这个文件。4.2 修改 Server 配置并导入初始表结构Zabbix Server 的数据库连接信息需要手动写入配置文件。编辑/etc/zabbix/zabbix_server.conf找到并修改这三项DBNamezabbix DBUserzabbix DBPasswordzabbix配置文件里默认已经有DBName和DBUser密码一般是没有的需要手动加一行DBPasswordzabbix。改完后把官方提供的初始表结构和种子数据导入 Zabbix 库zcat /usr/share/doc/zabbix-server-mysql*/create.sql.gz | mysql -uzabbix -p zabbix执行后会提示输入密码输入 zabbix 回车。这个过程会根据虚拟机磁盘性能花十几秒到几分钟不等不要中断终端。导入完成后验证一下数据量确认没有报错mysql -uzabbix -p zabbix -e show tables; | wc -l正常情况下会看到 100 多张表。如果这里卡住或者报错多半是上一步数据库权限或者版本问题先检查 MariaDB 版本和用户权限不要急着重启服务。4.3 启动全套服务并检查端口与日志导入完表结构后按顺序启动服务systemctl start zabbix-server systemctl start zabbix-agent systemctl start httpd systemctl start rh-php72-php-fpm systemctl enable zabbix-server zabbix-agent httpd rh-php72-php-fpm启动后第一时间检查端口状态这个习惯能帮你节省大量排障时间ss -lntp | grep -E :10051|:10050|:80|:9000Zabbix Server 监听 10051Agent 监听 10050HTTP 服务监听 80PHP-FPM 监听 9000。每个端口都有对应的服务缺哪个就单独排查哪个。再看一眼 Zabbix Server 的日志确认它没有在启动时发生致命错误tail -50 /var/log/zabbix/zabbix_server.log正常会输出enabled SSL support、using configuration file、server #0 started之类的字段。如果日志里出现数据库连接失败的记录优先检查/etc/zabbix/zabbix_server.conf里的 DBPassword 是否和数据库实际密码一致。这个环节最容易犯的错误是密码改了数据库但没改配置文件或者相反两边不一致。5. Web 前端初始化与中文环境配置5.1 修改 PHP 时区前端向导的第一个拦路虎一切服务正常后浏览器访问http://虚拟机IP/zabbix会进入 Zabbix 的初始化向导。很多人在欢迎页点完 Next 之后卡在环境检查那一步页面上显示 “PHP time zone” 是红色的感叹号点击下一步会被拦截。这一步就是让我前面反复提到的 rh-php72 配置文件发挥作用的地方。Zabbix 的 PHP 不是系统默认的 php-fpm而是 SCL 环境里的rh-php72-php-fpm必须改它专属的 Zabbix 配置文件而不是/etc/php.inivim /etc/opt/rh/rh-php72/php-fpm.d/zabbix.conf找到或者添加这一行php_value[date.timezone] Asia/Shanghai保存后重启systemctl restart rh-php72-php-fpm httpd再刷新页面时区那一行就变绿了。这个坑非常经典——如果你查看系统默认的php -v和php -m | grep timezone会觉得 PHP 完全没问题但 Zabbix 走的不是这条链路上的 PHP而是 SCL 独立的一套。后续数据库配置那一步数据库地址填localhost数据库名填zabbix用户和密码都填zabbix端口留默认 3306。接着一路 Next最后会生成一个zabbix.conf.php配置文件并自动下载把这个文件放到 Web 目录下向导就完成了。默认后台账号是Admin密码是zabbix登录后第一件事就是改密码。5.2 切换中文界面与图形乱码的终极处理登录后台后切换到中文界面的路径是Administration-Users-Users点开Admin用户在Language下拉框里选择Chinese (zh_CN)保存并刷新。刷新后大部分界面会变成中文但监控图形里的中文很可能变成一堆方块。这是因为 Zabbix 的图形渲染依赖服务器上的字体文件默认使用的是 DejaVu Sans不支持中文字符。解决方法是安装一个中文字体然后把 Zabbix 的 graphfont 指向它yum install -y wqy-microhei-fonts cd /usr/share/zabbix/assets/fonts/ mv graphfont.ttf graphfont.ttf.bak ln -s /usr/share/fonts/wqy-microhei/wqy-microhei.ttc graphfont.ttf完成后再看监控图形的标题和主机名中文就能正常显示了。这里我给个提醒很多教程会让你去下载某个字体文件再传上去实际上直接在线装 wqy-microhei 字体包更省事也符合“在线安装”的初衷。字体文件改完不需要重启服务刷新页面即可生效。6. 高频问题排查与个人实操心得6.1 常见问题速查表整个搭建过程下来我把高频问题按“现象、原因、解法”三列整理成了速查表排查时对着看就行现象可能原因解决办法虚拟机无法 ping 通外网网卡未启动、DNS 错误检查 ifcfg 文件 ONBOOT、配置 DNSyum 安装速度极慢官方源在国外换阿里云/腾讯云源并 makecachezabbix-server 启动失败数据库密码不一致、schema 未导入核对 DBPassword重新导入 create.sql.gzWeb 向导卡在环境检查PHP 时区未设置修改 rh-php72 的 zabbix.conf 时区HTTP 页面返回 403httpd 下 zabbix.conf 权限或 PHP-FPM 未启动检查 httpd 日志启动 rh-php72-php-fpm图形中文变成方块缺少中文字体安装 wqy-microhei-fonts替换 graphfont前端能开但采集不到数据Agent 未装或 10050 端口不通检查防火墙规则和 zabbix-agent 状态修改配置后不生效没有重启对应服务重启 zabbix-server 或 php-fpm必要时重载 systemd这张表覆盖了从环境准备到 Web 初始化全链路的高频故障排障的时候先对着“现象”定位再看“原因”基本能解决九成问题。6.2 我踩过的三个坑和一点实在建议第一个坑是贪快跳过数据库升级直接用自带 MariaDB。VPS 上跑了一晚上第二天看历史数据表写入延迟已经明显异常最后还得停机重来得不偿失。第二个坑是改了 PHP 的全局时区没改 Zabbix 专属配置卡在向导里半小时才反应过来路径不对。第三个坑是装完就忘了打快照后面做实验把系统搞挂了只能从头装系统起步白白浪费一个晚上。所以我现在装完每一步都会随手打个快照这是虚拟机环境最大的优势不用白不用。如果你想把这套环境继续往深走我建议装完先配一个监控模板试试效果——在 Zabbix Web 界面里给这台 CentOS 7 主机关联 Linux by Zabbix agent 模板然后装好 agent、配置好Server127.0.0.1和ServerActive127.0.0.1重启 agent。几分钟后就能看到 CPU、内存、磁盘、网络流量这些基础图表了。Zabbix 的告警机制和主机自动发现也可以顺手配一遍等这些都能玩转监控这块的基础就算扎实了。后面要扩展无非是加 Agent 客户端、加模板、加自定义监控项思路都是一通百通的。