Zabbix部署保姆级教程:从零搭建企业级监控系统 📅 发布时间:2026/9/13 2:35:37 👁 浏览次数: 看到这个标题我愣了一下“zabbix部署到监控保姆间教程”什么保姆间看完整句话才反应过来这八成是“保姆级教程”的意思大白话就是哪怕你之前完全没碰过Zabbix照着这篇文章也能把一套可用的监控系统装起来。Zabbix是开源监控领域的老牌玩家部署、监控这两个词可以说是它的基本盘它能采集服务器、虚拟机、网络设备的状态数据提供告警、聚合、可视化部署起来门槛不算高但细节特别多。这篇文章我按自己实际搭过多次的流程来写适合刚接触监控的运维新手也适合那些想快速部署一套Zabbix做验证的研发同学。整个过程我会尽量说人话把每一条命令和配置都解释清楚你照着敲基本不会跑偏。1. 部署前的准备想清楚再动手能省半天时间1.1 Zabbix监控系统到底是什么解决什么问题先聊点概念。Zabbix本质上是一套“数据采集存储告警可视化”的监控底座核心角色就四个Zabbix Server负责汇总和处理数据数据库负责存历史数据Web前端让你在浏览器里点点点Agent则是装在被监控主机上的“探针”按预设的监控项把CPU、内存、磁盘、端口这些指标捞出来发给Server。很多人第一次接触Zabbix容易把它和Prometheus搞混。两者定位确实重叠但Zabbix的强项在于开箱即用的模板体系和完善的告警规则尤其适合传统IT基础设施监控Prometheus更偏向云原生和基于标签的指标模型。如果你手头就是一堆物理机、虚拟机加交换机、防火墙Zabbix会更好上手这也是我为什么在很多项目里仍然首选Zabbix。这套系统能解决什么问题最直观的是你不需要每天登到每台机器上去看磁盘满了没有、服务挂没挂。Zabbix把这些状态全部集中到一个界面超过阈值就自动告警。规模上一台配置还行的Zabbix Server4核8G管几百台主机、上万监控项是没问题的所以它并不只是一个教学玩具生产环境里扛大梁也完全靠谱。1.2 版本、系统、数据库怎么选我的推荐组合版本选择上我建议优先用Zabbix 6.0 LTS官方长期支持到2027年资料多、坑少网上随便一搜都是现成答案。如果你想体验新功能可以考虑7.0 LTS不过保姆级教程我就以6.0为主7.0的安装流程和前端操作差别不大照做也能套用。操作系统这块Ubuntu 22.04、Rocky Linux 9、AlmaLinux 9都行。如果你手头还是CentOS 7老环境我不是很建议再折腾了系统本身已停止维护很多软件源都失效Zabbix装了后续问题也多。能用新系统就用新系统。数据库我推荐直接装系统自带的MariaDB它和MySQL兼容Zabbix官方完全支持而且比单独装MySQL 8.0少一层安装步骤。如果你公司规范要求必须MySQL流程也只是换个安装源而已后面创建库和授权语句一样通吃。组件我的推荐备选方案操作系统Rocky Linux 9 / Ubuntu 22.04AlmaLinux 9、Debian 12数据库MariaDB 10.5MySQL 8.0、PostgreSQLZabbix版本6.0 LTS7.0 LTS部署方式官方rpm/apt仓库Docker Compose、源码编译1.3 硬件与端口的提前规划硬件别太寒碜Zabbix Server建议至少2核4G内存100G磁盘起步。监控数据是写库的磁盘越大越好尤其你要监控几十台机器历史数据涨得很快。如果预算宽裕把数据库的数据目录放到独立磁盘上后续扩容方便。端口规划要提前知道否则后面防火墙会卡你半天。Web界面走80或443Zabbix Server对外监听10051端口接收Agent上报数据Agent监听10050端口响应Server的被动监控请求。网络设备走SNMP的话则是UDP 161。被监控主机上的防火墙如果是开启的记得把这些端口放行。这里我多说一句很多新手装完Zabbix发现Agent数据出不来十有八九是防火墙或SELinux在拦不是配置写错了。所以环境准备阶段就把这两样处理好后面能省很多排查时间。2. 保姆级服务端安装从仓库到Web登录2.1 用官方仓库安装Zabbix Server全家桶环境规划好了开始正式安装。我以Rocky Linux 9 Zabbix 6.0 LTS MariaDB为例全程用root操作。先加Zabbix官方仓库这一步不能偷懒别用网上第三方源官方源的包版本和依赖关系最可控rpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm dnf clean all装仓库之后一次性把Server、Web前端、Agent和排查用的zabbix-get都装上dnf install -y zabbix-server-mysql zabbix-web-mysql zabbix-agent zabbix-getzabbix-get是个容易被忽略的小工具它可以在命令行直接向Agent发起监控项键值请求后面排查“怎么这台机器没数据”时非常有用强烈建议装上。安装过程会顺带把httpd、php-fpm这些Web前端依赖拉起来不用额外操心。等命令跑完检查一下安装是否完整rpm -qa | grep zabbix正常你会看到zabbix-server-mysql、zabbix-web-mysql、zabbix-agent、zabbix-release这几个包。少了哪一个都不用继续先把包补齐再说。2.2 数据库初始化与导入表结构数据库这步是所有新手挂得最多的地方。MariaDB装起来不难难在后面建库授权和导入schema一个字符写错就卡住。先装并启动MariaDBdnf install -y mariadb-server mariadb systemctl start mariadb systemctl enable mariadb然后执行安全初始化脚本设置root密码并清理默认测试库mysql_secure_installation这里会让你选密码强度验证插件选最低档VALIDATE PASSWORD COMPONENT选否就行别自己给自己挖坑。随后进入数据库创建Zabbix专属库和用户。注意密码里不要用特殊字符如果包含、#在命令行里容易出幺蛾子mysql -uroot -p create database zabbix character set utf8mb4 collate utf8mb4_bin; create user zabbixlocalhost identified by Zabbix123; grant all privileges on zabbix.* to zabbixlocalhost; set global log_bin_trust_function_creators 1; quit;log_bin_trust_function_creators是个比较关键的临时开关不设置的话后面导入Zabbix的schema时因为SQL脚本里包含带二进制日志的函数定义数据库会直接报错。这一步临时打开导入完成后我再让你关掉。接下来导入官方提供的数据表结构。这个SQL文件比较大几百MB导入过程需要几分钟屏幕上没有报错就是好事zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz | mysql --default-character-setutf8mb4 -uzabbix -p Zabbix123 zabbix导入完成后重新进入数据库把刚才那个临时开关恢复原样mysql -uroot -p set global log_bin_trust_function_creators 0; quit;验证导入是否成功可以随便抽一张表看看mysql -uzabbix -p Zabbix123 -e show tables from zabbix like history;能正常列出表名就说明数据库准备完成。2.3 修改配置并启动核心服务数据库准备好接着改Zabbix Server的主配置文件把刚才设置的数据库密码填进去vim /etc/zabbix/zabbix_server.conf找到DBPassword这一行默认是注释掉的取消注释并填上密码DBPasswordZabbix123改完之后可以顺手用命令确认配置是否被正确识别zabbix_server -t -c /etc/zabbix/zabbix_server.conf输出类似“Valid config files”就说明配置没问题。别小看这一步很多人改完配置直接重启服务结果密码写错或格式不对服务起不来排查半天。接下来处理Web前端时区。Zabbix的php-fpm配置里默认时区是欧洲的不改成Asia/Shanghai的话图表时间会差好几个小时vim /etc/php-fpm.d/zabbix.conf把这一行改为php_value[date.timezone] Asia/Shanghai然后启动所有服务并设置开机自启systemctl restart zabbix-server zabbix-agent httpd php-fpm systemctl enable zabbix-server zabbix-agent httpd php-fpm检查一下服务状态确保都是activerunningsystemctl status zabbix-server ss -lntp | grep -E 10051|10050|80如果你开启着防火墙记得放行firewall-cmd --permanent --add-port80/tcp firewall-cmd --permanent --add-port10051/tcp firewall-cmd --permanent --add-port10050/tcp firewall-cmd --reloadSELinux如果处于 enforcing 状态最好安装官方提供的策略包而不是直接关SELinux生产环境不建议为了省事把SELinux关掉dnf install -y zabbix-selinux-policy2.4 Web安装向导与中文配置服务端启动后浏览器访问http://你的服务器IP/会进入Zabbix的Web安装向导。第一步检查PHP前置条件全部显示OK就直接下一步第二步填数据库连接信息数据库主机填localhost端口3306数据库名zabbix用户zabbix密码填你刚才设置的那个第三步Zabbix server详情保持默认后面一路Next最后会生成配置文件。这里要提醒一下Zabbix 6.0登录后强制要求修改默认管理员密码。默认账号是Admin初始密码是zabbix登录后马上会跳转让你设置新密码。很多人以为是自己密码记错了其实这是正常流程。登录成功后最好先把界面切成中文。路径是右上角人像图标 - User settings - Language选Chinese (zh_CN) - Update。此时如果界面还是英文别急着找原因很可能是中文字体缺失导致的乱码问题需要在服务器上装中文字体。常见是一堆方块字实测装完字体就能正常显示dnf install -y google-noto-sans-cjk-fonts wqy-microhei-fonts然后替换Zabbix前端的默认图形字体文件Zabbix 6.0用的是graphfont.ttfcp /usr/share/zabbix/assets/fonts/graphfont.ttf /usr/share/zabbix/assets/fonts/graphfont.ttf.bak cp /usr/share/fonts/google-noto-sans-cjk/NotoSansCJK-Regular.ttc /usr/share/zabbix/assets/fonts/graphfont.ttf改完刷新页面中文字体就正常了。这个点虽然不大但几乎所有中文用户都会遇到提前处理掉。3. 把其他主机加进监控Agent接入与模板3.1 被监控主机安装Agent与连通性自检服务端装好之后接下来要做的就是把其他机器加入监控这也是热词里很多人搜“其他主机怎么添加zabbix监控”的核心诉求。被监控的主机分两类一类是Linux/Windows服务器安装Agent接入另一类是交换机、防火墙等网络设备走SNMP接入。先讲服务器场景。在被监控主机上同样先加Zabbix官方仓库再安装Agentrpm -Uvh https://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-6.0-4.el9.noarch.rpm dnf install -y zabbix-agentDebian/Ubuntu系统就换成wget https://repo.zabbix.com/zabbix/6.0/ubuntu/pool/main/z/zabbix-release/zabbix-release_6.0-4ubuntu22.04_all.deb dpkg -i zabbix-release_6.0-4ubuntu22.04_all.deb apt update apt install -y zabbix-agent装完之后编辑Agent配置关键就三个参数vim /etc/zabbix/zabbix_agentd.confServer10.0.0.10 ServerActive10.0.0.10 Hostnameweb01Server是Zabbix Server的IP作用是让Server可以主动来这台机器取数据也就是“被动监控”ServerActive是让Agent主动去连Server也就是“主动监控”两边都填上能兼容两种模式。Hostname这个参数非常关键它必须和后面在Web端添加主机时填的主机名称完全一致大小写也算不一致的话Agent数据就算通了前端也接收不到。这里我要解释一下为什么这么设置。Zabbix的数据采集分成两种模式被动模式是Server端口10050连Agent问一个键值Agent就答一个主动模式是Agent根据ServerActive参数主动连Server的10051端口把缓存好的数据批量送上来。实际生产中以被动模式居多但模板里很多监控项的key在主动模式下更高效所以把ServerActive也配上两边都通数据采集最稳。重启Agent并确认端口监听systemctl restart zabbix-agent systemctl enable zabbix-agent ss -lntp | grep 10050再到Zabbix Server上用一个监控项键值测试连通性zabbix_get -s 10.0.0.20 -p 10050 -k system.uptime能返回一个时间戳数字就说明Server和被监控主机的Agent之间链路已通。如果不能返回先查被监控主机的防火墙和SELinux这是最常见的两个拦路虎。3.2 Web端添加主机并关联模板命令行测试通了接下来到Web端把主机加进来。路径是配置 - 主机 - 创建主机。主机名称填web01必须和agent里的Hostname一致这步错了数据必挂可视名称可以不填填了主要方便自己辨认然后选择群组建议按业务分好例如“Linux Servers”接口那一栏点“添加”接口类型AgentIP地址填被监控主机的IP端口10050。最核心的一步是关联模板。在“模板”区域选择模板——Zabbix 6.0里Linux服务器选“Linux by Zabbix agent”。这个模板包含几十甚至上百个监控项CPU、内存、磁盘、网络都有会自动创建对应的图形和触发器非常适合新手。关联后点添加保存。回到主机列表你会看到web01这一行。最前面的“监控状态”是绿色的稍等两三分钟点击主机名称进入详情可以看到最新数据开始一片绿。如果某个监控项显示红色“Not supported”说明采集有问题按后面第5部分的排查思路处理。3.3 顺带搞定交换机等SNMP设备监控服务器加完了再讲讲网络设备。交换机、防火墙、无线AP这些设备没法装Agent统一走SNMP协议采集。以某品牌交换机为例先在设备上开启SNMP读写注意不同设备命令差异很大这里给一个常见姿势snmp-server community public ro然后在Zabbix Web端添加主机接口类型选“SNMP”端口161模板选“SNMP Generic”在宏配置里把{$SNMP_COMMUNITY}改成上面配置的团体名public。其他流程和加服务器一样。这里特别提醒SNMP有v1、v2c、v3三个版本老设备一般用v2c指定好团体名就行如果需要更安全的v3配置要复杂不少需要设认证和加密参数目前新手阶段先把v2c跑通。另外很多设备的“SNMP Agent状态”默认是关闭的需要在设备上升级系统或手动开启不然Zabbix这边永远访问不到。如果你要监控的是Windows主机思路完全一样下载Windows版Agent安装包安装过程中配置Server地址和Hostname然后在Web端添加主机模板换成“Windows by Zabbix agent”。4. 告警与可视化监控不是为了看看数据4.1 触发器表达式入门主机加进来数据有了但监控系统的价值得靠告警体现出来。Zabbix里的告警逻辑是监控项采集到数据触发器判断这个数据是否异常一旦触发就通过告警媒介把消息发出去。先建一个最简单的触发器比如监控CPU负载。去配置 - 主机 - 找到web01 - 触发器 - 创建触发器名称填“web01 CPU负载过高”严重性选严重表达式点右侧的“添加”在弹出的表达式构造器里选择监控项比如system.cpu.util[,,avg1]函数选avg值填80时间填5m。意思就是最近5分钟平均CPU使用率超过80%就触发告警。表达式实际生成的格式是avg(/web01/system.cpu.util[,,avg1],5m)80/web01/是主机名路径前缀后面是监控项键值5m是评估周期。理解这个格式以后你会发现触发器就是“某个指标的某个计算方式在某个时间段内满足某个阈值”的组合。Zabbix模板里自带的触发器已经覆盖了大多数常见场景自己建触发器时尽量不要和模板里的重复否则告警会很吵。4.2 告警媒介与动作配置触发器建好还不会自动通知人必须配上媒介和动作。媒介相当于“用哪种方式发通知”动作相当于“满足什么条件时发”。先配置邮件媒介管理 - 媒介类型 - Email填入SMTP服务器、端口、SSL/TLS方式和账号信息。国内常用邮箱一般用SMTP端口465加SSL用户名填完整邮箱密码填授权码而不是邮箱登录密码。填完后可以点“测试”发一封测试邮件确认OK。然后在用户设置里给用户绑定媒介用户 - Admin - 媒介 - 添加类型选Email收件人填自己的邮箱并设置通知时间段和严重级别。最后创建动作配置 - 动作 - 创建动作这里分触发条件和操作两步。触发条件可以设“触发器严重性 严重”这样的过滤条件操作部分选择“发送消息给用户Admin 通过Email”这样一旦条件满足就会自动发邮件。建议在“恢复操作”里也加上发消息给Admin这样故障恢复时你也会收到通知不用一直盯界面。这里我要分享一个经验告警一定要控制住量“告警风暴”比没告警还可怕。不要把所有触发器都设置为通知先把严重级别高的邮件发出来信息级别低的看仪表板就行否则一天几百封邮件大家很快就麻木了真正出问题反而没人看。4.3 快速搭一个监控大屏数据有了告警通了最后做一块大屏方便日常看。Zabbix 6.0自带的仪表板功能已经够用不用额外花钱买商业组件。打开“监测 - 仪表板”默认会有一个叫“Default dashboard”的页面里面的组件就是Programme问题、图表、地图之类的。你可以点右上角编辑把觉得没用的组件删掉也可以新建一个自己的仪表板。添加组件时选“Problems”可以看到当前所有告警选“CPU utilization”之类的图表能看到各主机的CPU曲线选“Hosts availability”能直观看到主机在线率。大屏的布局思路我个人喜欢三列左边主机状态中间CPU和内存折线图右边最新告警列表。这样日常值班瞟一眼就能知道系统健康状况。如果公司有领导要看大屏也可以把网页投到电视上刷新间隔设为30秒或者更短视觉效果很好。如果有更复杂的定制需求比如把监控数据接入公司的可视化大屏平台Zabbix也提供了API可以用脚本获取历史数据再推送到大屏系统。但那是后话本文先把自带的仪表板用熟练。5. 高频故障排查与实操经验5.1 “Zabbix server is not running”这类问题怎么查我先挑一个很多人在搜索框里敲过的问题“Zabbix server is not running: the information displayed may not be current.” 看到这个提示第一反应不要慌它说明Web前端能访问但前检查Zabbix Server状态时没得到有效反馈。排查路径第一站看服务进程和日志systemctl status zabbix-server cat /var/log/zabbix/zabbix_server.log最常见的原因就三种。第一数据库密码配置错误导致Server启动后反复重连数据库失败日志里会有明确报错去zabbix_server.conf里核对DBPassword第二防火墙没放行10051端口Web前端通过10051端口访问Server失败尤其你在没放行端口的情况下重启过防火墙第三时间不同步Server所在机器和数据库、被监控主机之间的时间漂移过大Zabbix很多内部逻辑依赖时间戳日志会显示各种超时。时间同步容易被忽略但真的非常重要。建议所有相关机器都装好chrony并指向同一时间源这一点在部署开始之前做掉最好否则后面排查问题会很折磨人。5.2 主机没数据、模板报Not supported的排查路径“主机添加了但最新数据一片红色Not supported”是新手第二大高频问题。这种场景最有效的排查工具就是zabbix_get直接在Server上手动拉取监控项键值zabbix_get -s 10.0.0.20 -p 10050 -k system.cpu.util[,,avg1]如果返回数学值说明Server到Agent的数据链路是通的问题大概率出在前端主机名或模板配置上如果提示Check access restrictions in Zabbix agent configuration就去Agent的配置文件核对Server参数是否包含Zabbix Server的IP注意如果有多个Server IP要用逗号隔开不要写多个Server参数。还有一个常见坑是主机名不一致。前面提过Agent端的Hostname必须和Web端添加主机时填的“主机名称”完全一致包括大小写。Zabbix 6.0默认开启主动监控和被动监控两种模式模板中部分监控项是主动的它们通过主机名去关联主机名字对不上直接Not supported而被动监控项又能正常工作结果就是你看到一部分数据是绿色一部分是红色非常迷惑。遇到这种半红半绿的情况优先检查主机名。如果zabbix_get连接不上再回到Agent所在机器看防火墙、SELinux以及Agent服务是否正常监听10050ss -lntp | grep 100505.3 保姆级避坑清单我的几条实操心得装得多了才发现Zabbix这类系统最容易出问题的往往不是部署本身而是一开始没立好规矩。我梳理了几条实操心得算是付费才买得到的经验。第一主机名规范要提前定。建议全部小写字母加数字不要用中文和特殊字符。很多自动化脚本依赖主机名做匹配如果不统一后续做批量操作时各种报错。第二密码和字符集要一步到位。数据库创建的库字符集必须用utf8mb4不要用默认的latin1否则后面中文乱码会让你怀疑人生。密码方面包含、$这类特殊字符时在shell脚本里记得用单引号括起来不然被解释成变量直接白干。第三模板不是越多越好。新手最容易犯的毛病是一台主机关联七八个模板结果同一指标重复采集、告警重复触发。我的原则是能用官方模板解决的不自己建一个主机最多一两个模板自定义模板先在一个主机上验证完再批量应用。第四Zabbix Server所在机器最好只跑Zabbix相关服务不要又装数据库又装Web又跑业务否则监控系统本身出问题时排查难度直接翻倍。第五升级要谨慎。Zabbix的大版本升级和小版本升级注意事项不同生产环境务必先在测试环境走一遍备份恢复流程。数据库备份是重中之重升级前必须做物理备份或逻辑备份否则一旦升级失败历史监控数据可能全废。6. 几个常见的扩展思路装好一套Zabbix只是开始实际使用中你可能会遇到性能优化、数据清理、和现有系统联动等问题。这里简单给几个方向。历史数据清理是个迟早要面对的问题。默认的housekeeper进程每天会定时删除过期数据保留周期由history和trends的存储天数控制。如果监控机器特别多MySQL里history表会非常大可以开启分区表按天或按月分区分好删除历史数据时直接drop分区比delete快得多。如果有海量网络设备要监控建议把SNMP轮询频率降低比如默认1分钟改成5分钟能明显降低设备负载和Zabbix Server压力。SNMP监控项里的索引型键值比如接口流量要会使用snmpwalk去发现真实OID索引而不是直接套模板否则接口数据经常对不上。如果你有API开发的底子Zabbix的HTTP API也值得好好研究。它能让你通过脚本批量添加主机、获取监控数据甚至对接内部的CMDB系统。这样的一套操作下来监控就不再只是“看个页面报警”而是能融入整体的运维自动化流程里。我在实际部署中最大的感受是Zabbix的入门门槛其实不高但要做好“长期稳定、告警不吵、数据可靠”这三个目标处处都是细节。建议你第一次部署时别贪多搭好一台Server、接上一两台Linux主机把数据采集、告警、大屏全流程跑通再慢慢加东西。把这篇文章里的每一步亲手执行一遍我相信你很快就能对着别人问一句你的Zabbix部署到哪里了