CentOS 7上部署Zabbix 6.0避坑指南:从安装到排查“server is not running”

发布时间:2026/10/4 1:12:48
CentOS 7上部署Zabbix 6.0避坑指南:从安装到排查“server is not running” 前几天帮朋友装一台监控服务器环境就是 CentOS 7.0装的是 Zabbix。装完打开前端登录进去首页直接给你一个大红条Zabbix server is not running: the information displayed may not be current.服务状态看了进程是活的日志也没报错你甚至都到了怀疑人生的地步——这个场景我见过太多次了。实际上这个报错背后藏着七八种可能原因网上教程大多只告诉你怎么装不告诉你装完怎么排查所以这篇文章我把从零部署到日常维护的完整经历整理出来尽量把这些年在 CentOS 7 上装 Zabbix 踩过的坑都写在里面。文章主要围绕 Zabbix 6.0 LTS 在 CentOS 7.0 上的部署覆盖版本选型、数据库初始化、前端配置、zabbix server is not running的完整排查思路、Agent 添加被监控主机以及后续如何使用监控项、告警、大屏这些进阶操作。不管是第一次接触 Zabbix 的新手还是被部署问题折磨过一遍的运维应该都能从里面找到可以直接照做的内容。1. CentOS 7.0上先把版本这件事想清楚1.1 为什么我推荐6.0 LTS而不是最新7.0如果你去看 Zabbix 官网当前版本号已经到 7.0 了很多文章也都在写 7.0 的新特性。但放在 CentOS 7.0 这个环境下我仍然建议新部署直接选 6.0 LTS原因很实际CentOS 7 系统自带的 PHP 是 5.4而 Zabbix 7.0 对前端 PHP 的版本要求是 8.0 以上。要在 CentOS 7 上跑 7.0你得先折腾 remi 源、升级 PHP 一大套依赖这套操作带来的变量太多后面一旦遇到问题很难分清是 Zabbix 的问题还是 PHP 环境的问题。6.0 LTS 官方支持周期到 2027 年对 CentOS 7 有现成的 RPM 包官方源拉下来就能用。另外很多人忽略一点Zabbix 的 server、agent、前端三者之间存在版本匹配关系用 7.0 的 server 配老 agent 可能会出现兼容性告警而 6.0 对版本跨度容忍度更高大批存量机器接入时更省心。如果你是纯测试环境想体验新功能那无所谓如果是想稳定跑生产监控6.0 LTS 是更稳妥的选择。1.2 部署前先确认系统源可用CentOS 7.0 的系统源现在基本都进 EOL 了如果你拿到的机器真的是 7.0 初始镜像那么执行yum install很可能会报 404。所以我一般先做一步cat /etc/redhat-release yum update -y把系统升到 7.9 再开始装 Zabbix。升级时间看网络状况一般 10 到 30 分钟。注意一点如果这台机器本身跑着业务升级内核和系统库有风险最好先确认源是否可用然后单独处理 Zabbix 依赖不要贸然yum update如果是新装测试机直接升到 7.9 省心很多。还有个小技巧升级完记得确认一下时间dateZabbix server 对时间同步相当敏感前端页面判断 server 状态时也会受到时间偏差影响。建议顺手把ntpdate或者chrony配上避免后续排查时多一个干扰项。1.3 内存、磁盘这些硬指标Zabbix Server、MariaDB、PHP-FPM、httpd 全部装在一台机器上内存 2G 是最低门槛但实际用起来你会非常难受建议至少 4G。CacheSize 默认 8M监控项一多就要调大调大之后内存占用也跟着涨。磁盘方面系统盘 20G 只能算起步Zabbix 的 history、trends 表会持续增长尤其是保留了较长时间历史数据的话磁盘涨得比你想象得快。网络层面要记清楚两个端口10051 是 Zabbix Server 被动接收 Agent 数据的端口10050 是 Agent 被动等待 Server 来取数据的端口。如果不是同一台机器防火墙和安全组要确保这两个端口双向可达。2. 数据库这一关建库授权与schema导入2.1 用系统自带MariaDB还是升级版本CentOS 7 自带的是 MariaDB 5.5这个版本对 Zabbix 6.0 来说确实偏老官方支持列表里要求 MariaDB 10.5 以上。我最早偷懒试过直接在 5.5 上导入 6.0 的 schema结果 SQL 脚本跑到一半报语法错误排查起来特别费劲。后来就老实通过 MariaDB 官方源装 10.5。cat /etc/yum.repos.d/mariadb.repo EOF [mariadb] name MariaDB baseurl http://yum.mariadb.org/10.5/centos7-amd64 gpgkeyhttps://yum.mariadb.org/RPM-GPG-KEY-MariaDB gpgcheck1 EOF yum install -y MariaDB-server MariaDB-client这套源装完的 MariaDB 数据目录和配置文件路径与系统自带的有差异启动服务用systemctl start mariadb即可。装完先运行一下安全初始化脚本把 root 密码设好、移除匿名账号systemctl start mariadb systemctl enable mariadb mysql_secure_installation如果你是纯测试环境手上又只有系统自带的 MariaDB 5.5那也不是完全跑不起来但导入脚本大概率会出错。我的建议很简单生产别省这一步直接升级数据库版本。2.2 创建Zabbix数据库和专用账号数据库起来之后创建 Zabbix 自己的库和账号。这里比较关键的是字符集Zabbix 要求使用 utf8如果你的库建成了 latin1 或者 gbk前端图表里一旦出现中文就会乱码后面再修复很麻烦。mysql -uroot -p进入 MySQL 命令行执行CREATE DATABASE zabbix CHARACTER SET utf8 COLLATE utf8_bin; CREATE USER zabbixlocalhost IDENTIFIED BY your_password; GRANT ALL PRIVILEGES ON zabbix.* TO zabbixlocalhost; FLUSH PRIVILEGES; EXIT;账号方面我习惯单独建一个专用账号而不是用 root 去连 Zabbix 的库。日志里如果出现连接被拒排查权限也更好定位。密码不要带特殊字符比如分号、引号否则后面在配置文件里转义很麻烦。2.3 导入官方 schema路径和顺序都不能错Zabbix 6.0 的初始 SQL 脚本已经不像 5.0 那样放在zabbix-server-mysql包里了而是单独由zabbix-sql-scripts提供。所以我建议先把 Zabbix 安装源配好、server 包装好再来做导入顺序别搞反。装好之后脚本路径一般是/usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz导入命令zcat /usr/share/doc/zabbix-sql-scripts/mysql/server.sql.gz | mysql -uzabbix -p zabbix如果提示找不到文件先确认有没有装zabbix-sql-scriptsrpm -ql zabbix-sql-scripts | grep server.sql.gz导入过程可能会持续十几秒到一分钟取决于机器性能。导入完成后一定要验证一下表是否存在mysql -uzabbix -p -e USE zabbix; SHOW TABLES; | head网上能搜到一个特别经典的报错zabbix access denied for user replace_userlocalhost (using password: yes)。这个replace_user其实是官方文档里的占位符很多人直接从文档复制配置把DBUserreplace_user这一行原封不动写进了zabbix_server.conf然后就开始怀疑人生。遇到 access denied第一反应应该是去看配置文件里的用户名和密码到底改没改而不是先去折腾数据库授权。3. 安装Zabbix Server并配置前端显示环境3.1 官方源安装Server组件这里我统一用官方 yum 源安装不推荐源码编译Zabbix 的组件依赖关系比想象中复杂源码编译容易漏依赖后期维护也麻烦。官方源配置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-agentCentOS 7 上装 Zabbix 6.0官方源会自动处理 PHP 版本这类运行时依赖问题不需要自己手动编译 PHP。装完之后可以顺手看一下httpd和php-fpm相关服务是否已经存在后面启动前端时会用到。3.2 修改zabbix_server.conf核心参数安装完成后核心配置文件在/etc/zabbix/zabbix_server.conf。需要改的参数不多主要就是数据库连接vim /etc/zabbix/zabbix_server.conf重点确认这几行DBHostlocalhost DBNamezabbix DBUserzabbix DBPasswordyour_passwordDBHost这一行有陷阱默认值就是 localhost如果你不写或者写成 localhost驱动走的是 socket 连接如果你写127.0.0.1走的是 TCP 连接。两种连接方式在 MySQL 里对应的权限 host 不一样所以一旦授权时写的是zabbixlocalhost却用127.0.0.1去连就会看到 access denied。建议直接留空或者明确写成 localhost保持一致。然后启动服务systemctl start zabbix-server systemctl enable zabbix-server第一次启动会比较慢因为要加载 schema别急着看状态先看日志更稳妥tail -f /var/log/zabbix/zabbix_server.log3.3 前端PHP时区与中文字体这个老大难前端由 httpd 托管装完zabbix-web-mysql之后会生成一个 Zabbix 的 httpd 配置。启动 httpd 后就能访问systemctl start httpd systemctl enable httpd浏览器访问http://服务器IP/zabbix就能看到安装欢迎界面。默认账号Admin密码zabbix登录后第一时间改成你自己的密码。前端最容易漏的是时区配置。如果你打开页面一直提示Timezone is not set或者登录之后页面报 PHP 警告需要去修改 httpd 配置里的php_value date.timezonegrep -R date.timezone /etc/httpd/conf.d/zabbix.conf把它改成Asia/Shanghai然后重启 httpd 和 PHP-FPM 相关服务。中文字体问题是另一个高频坑。默认字体是 DejaVuSans这个字体压根不含中文字符所以当你把 Zabbix 界面语言切到中文或者监控项名称里有中文时图形里的中文全部显示成方块。解决办法是安装一个中文字体并替换默认字体yum install -y wqy-microhei-fonts cd /usr/share/zabbix/assets/fonts cp /usr/share/fonts/wqy-microhei/wqy-microhei.ttc . mv DejaVuSans.ttf DejaVuSans.ttf.bak ln -s wqy-microhei.ttc DejaVuSans.ttf改完刷新浏览器图形里的中文就正常了。这个小操作官方文档里不会写但生产环境几乎必然遇到。4. 装完就报错Zabbix server is not running排查全记录4.1 先搞清是服务真挂了还是前端误报回到开头那个场景前端页面显示红条Zabbix server is not running: the information displayed may not be current.。我的经验是前端这个红条有两种可能一是 server 服务真没起来二是服务其实活着只是前端判断出了问题。后者在第一次启动时特别常见因为 server 要加载大量配置和历史数据启动过程可能持续几十秒甚至几分钟前端在这段时间内探测不到 server 的心跳状态就会先红着。这时候你可以等一两分钟再刷新页面很多情况下它自己就恢复绿色了。如果等了一会儿还是红的那就进入正经排查流程systemctl status zabbix-server tail -n 100 /var/log/zabbix/zabbix_server.log ss -tlnp | grep 100514.2 看日志而不是看界面Zabbix 的日志写得非常直白几乎不会误导你。常见错误我列在下面日志里的错误原因处理方式database is down数据库没启动或者连接信息不对确认 MariaDB 服务状态用 mysql 客户端手动连一下No connection to localhostDBHost 配置与实际不符检查 zabbix_server.conf 的 DBHost 是否与授权 host 一致Access denied for user replace_userlocalhost配置文件用户名还是占位符修改 DBUser 和 DBPasswordOut of memory服务器内存不足或 CacheSize 太大调小缓存参数或物理扩容cannot send configuration data to agent不是 server 本身问题属于 Agent 通信异常按第五章节排查日志文件路径是/var/log/zabbix/zabbix_server.log修改配置后重启服务日志会打印新的启动信息。排查时不要systemctl restart一下然后又去看前端页面应该restart之后立刻tail -f日志看启动过程卡在哪一步。4.3 SELinux和防火墙这两个外部因素CentOS 7 默认 SELinux 是 enforcing 状态这个坑坑过很多人。Zabbix Server 要写日志、连数据库、监听端口SELinux 策略没有放行的话服务可能起得来但某些操作会被静默拦截。快速验证方法getenforce如果是 Enforcing可以临时设为 Permissive 或关闭setenforce 0再刷新前端页面看红条是否消失。如果确实是 SELinux 问题不建议生产环境直接关掉 SELinux可以用 audit2why 去查看具体拦截规则或者放行对应端口systemctl stop firewalld systemctl disable firewalld防火墙也是常用排查项。如果ss -tlnp | grep 10051显示端口在监听但前端还是红的用另一台机器telnet IP 10051测一下端口通不通。很多情况不是服务问题是防火墙把端口挡了。4.4 前端假死换浏览器、清缓存、查会话还有一类情况服务、端口、日志全部正常但前端页面依然显示红条。这个往往和浏览器缓存或者 PHP 会话有关。尤其是你改完时区、改完 php.ini 后没有重启 php-fpm前端拿到的还是旧配置。做法是systemctl restart httpd systemctl restart zabbix-server然后在浏览器里强制刷新CtrlF5或者换无痕窗口重新登录。Zabbix 前端对浏览器兼容性一般一些老旧浏览器里会出现状态判断异常别在这种地方较劲太久。我遇到过一次前端红了一天后来发现是反代缓存了前端页面清了缓存立刻恢复。5. 添加第一台被监控主机Agent配置与模板关联5.1 被监控主机安装AgentServer 端跑起来之后最核心的一步是把其他主机加进来监控。Agent 端安装并不复杂先在被监控主机上配置官方源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-agentAgent 的配置文件在/etc/zabbix/zabbix_agentd.conf核心就三个参数Server10.0.0.1 ServerActive10.0.0.1 Hostnameweb-server-01这里的Server表示允许哪台 Zabbix Server 来被动取数建议写成 Server 端 IPServerActive表示 Agent 主动向哪台服务器上报数据同样写 Server 端 IPHostname必须和你在前端界面添加主机时填的主机名一致不然主动模式下数据上报对不上号。配置完重启systemctl start zabbix-agent systemctl enable zabbix-agent如果被监控机是 CentOS 7别忘了同样处理 SELinux 和防火墙放行 10050 端口给 Server 端。5.2 被动模式还是主动模式Zabbix 有两种数据采集模式被动模式是 Server 向 Agent 的 10050 端口发起连接拿数据主动模式是 Agent 主动向 Server 的 10051 端口发起连接把采集到的数据推上去。我的建议是如果被监控主机数量比较多倾向于用主动模式因为 Server 端轮询大量被动 Agent 会占用不少连接资源反过来如果只有三五台机器被动模式简单直观调试也方便zabbix_get直接就能测通。模板里默认的监控项大多同时带被动和主动两种类型你在关联模板时可以决定使用哪种。个别场景比如 Agent 在防火墙后面、Server 无法直接连到 Agent 的 10050 端口那就只能用主动模式。5.3 Web界面添加主机并关联模板在 Zabbix 前端页面操作进入数据采集→主机点击创建主机主机名称填 Agent 配置文件里的 Hostname可见名称随意方便识别群组至少选一个比如 Linux servers接口点击添加类型选AgentIP 地址填被监控主机 IP端口保持 10050模板搜索Linux by Zabbix agent点击添加完成关联点击添加添加完成后等几十秒主机列表里这一台的 ZBX 图标会从灰色变成绿色。如果一直是灰色把鼠标放上去会显示错误原因常见的就是 Agent 连接不上、Hostname 不匹配。在 Server 端也可以用命令行验证 Agent 是否正常响应yum install -y zabbix-get zabbix_get -s 10.0.0.2 -k agent.ping返回 1 就说明链路通了。再试试system.uname这类 key看能不能正常返回主机信息。如果是 Windows 主机去官网下载对应的 Windows agent安装时填写 Server 地址和 Hostname 即可配置思路和 Linux 一样。如果是要监控交换机、路由器这类网络设备不用装 agent前端创建主机时接口类型选SNMP填上 IP 和 community然后关联Network Device by SNMP模板就行默认就能出端口流量、CPU 这些网络设备指标。6. 装完还能做什么监控项、告警与展示6.1 Zabbix到底能监控哪些东西很多人装完 Zabbix 之后会问这东西到底能监控什么实际上你把它理解成一个中心化的指标采集和告警平台就行。原生支持的监控方式包括 Agent、SNMP、IPMI、JMX、Web 检测所以能覆盖的范围大致是主机基础资源CPU、内存、磁盘、网络流量、系统负载应用服务进程是否存在、端口是否监听、Nginx/MySQL/Redis 等组件的指标网络设备交换机、路由器、防火墙通过 SNMP 采集流量、CPU、温度业务探测HTTP URL 返回码、响应时间、TCP 端口连通性日志与自定义自定义脚本采集业务数据日志文件里的关键字告警Zabbix 本身不适合做代码级 APM 或者日志全文检索这类需求应该交给 APM 和 ELK 去处理但作为基础设施监控和告警中枢它非常成熟。6.2 自定义监控项没有模板怎么办官方模板覆盖了常见场景但业务里总有模板覆盖不到的指标。比如你想监控某个 TCP 端口是否在监听可以自己定义一个 UserParameter。在被监控主机上vim /etc/zabbix/zabbix_agentd.d/port.conf写入UserParametercheck.port.8080,/bin/bash -c ss -tln | grep -q :8080 echo 1 || echo 0重启 agentsystemctl restart zabbix-agent在 Server 端测试zabbix_get -s 10.0.0.2 -k check.port.8080返回 1 表示端口在监听返回 0 表示没监听。然后在前端页面的监控项里创建一个Zabbix agent类型的监控项键值填check.port.8080单位、更新间隔按需设置触发器里设置last(//check.port.8080)0就代表端口挂掉时告警。这套流程适用于所有自定义采集需求是 Zabbix 最核心的扩展方式。6.3 告警通知怎么接入钉钉和邮件告警要生效最关键的是配置媒介类型和动作。邮件媒介最简单前端管理→报警媒介类型里选 Email配置 SMTP 地址、账号密码、收件人即可。需要注意很多企业邮箱要求单独的客户端授权码不是登录密码。钉钉通知可以通过钉钉机器人 Webhook 实现。在钉钉群里添加一个自定义机器人把 Webhook 地址记下来然后在 Zabbix 的 alertscripts 目录下写一个发送脚本用 curl 把告警信息 POST 到 Webhook。如果用的是 Zabbix 7.0官方前端已经内置了钉钉 Webhook 媒介配置更简单不用自己写脚本。无论是哪种方式配置完之后都建议在测试里发一条测试消息确认链路通了再配置动作。然后去数据采集→动作里配触发条件选择哪些触发器级别、哪些主机组触发告警操作里选通知媒介和收件人。动作没配好媒介配得再完美也不会主动通知你。6.4 大屏和日常巡检Zabbix 的 Dashboard 可以直接做成大屏展示前端监测→仪表板添加上你关心的图表和主机状态右上角的全屏模式放到电视或显示器上就是一套基础的监控大屏。如果需要把多台关键主机的核心指标汇总到一块面板上可以给每个分区单独建 Dashboard或者通过配置文件编辑 Screen 来做更精细的布局。每次巡检没必要天天盯实时图表日常我建议关注几个地方报告→队列看有没有监控项一直处于不可达状态如果队列里积压太多说明采集性能出了问题监测→最新数据快速确认各主机的数据是否还在更新磁盘空间zabbix 库的 history 和 trends 表是增长大户定期检查磁盘水位数据库备份mysqldump 备份 zabbix 库尤其是触发器、主机、模板这些配置数据备份起来很快恢复却能省下几个小时的重新配置时间另外再补充一个实际经验监控项数量超过几千条之后Zabbix Server 的CacheSize大小会直接影响运行稳定性。你会在日志里看到history cache is full这类字样这时候就需要调大/etc/zabbix/zabbix_server.conf里的 HistoryCacheSize 和 TrendCacheSize改完重启 server 生效。不过在高负载下重启 Zabbix Server 会有短暂的采集中断尽量选在业务低峰期操作。