Zabbix6-LTS-Rocky9-实战部署博客
一文带你掌握 Zabbix从入门到实战部署Rocky Linux 9.6 Zabbix 6.0 LTS作者zhang-hub-dd环境Rocky Linux 9.6x86_64/ Zabbix 6.0 LTS / MySQL 8.0声明本文为实战部署记录所有命令均经过验证可直接上手。目录一、为什么要做监控二、Zabbix 是什么三、Zabbix 核心特性四、Zabbix 系统架构五、数据是怎么被采集上来的六、版本怎么选七、部署前环境准备八、部署 Zabbix Server九、部署 Zabbix Agent十、Web 前端初始化十一、添加监控主机与监控项十二、配置告警十三、分布式监控十四、grafana可视化十五、常见问题排查一、为什么要做监控运维的本质是让业务稳定运行。但在真实的生产环境中服务器少则几十台、多则上千台靠人肉盯top、df -h、ping显然不现实。等到业务方反馈页面打不开了才发现问题往往损失已经造成。监控要解决的核心问题就三个先知先觉—— 在故障发生之前预警如磁盘快满了、内存持续飙高快速定位—— 故障发生后第一时间缩小故障范围是网络、主机、还是应用数据支撑—— 用历史趋势数据做容量规划什么时候该扩容。而 Zabbix就是业内最流行的开源监控解决方案之一。二、Zabbix 是什么Zabbix是一个基于GPL v2协议的开源分布式监控系统由拉脱维亚的 Alexei Vladishev 于 2001 年创建现由 Zabbix SIA 维护至今已有 20 余年历史。它具备监控、采集、告警、可视化、报表等一整套能力官方宣称可以支持数十万监控项的采集上千台甚至更多的设备纳管覆盖服务器 / 虚拟机 / 网络设备 / 数据库 / 中间件 / 云资源 / 容器等多种对象一句话概括Zabbix 是一个采、存、算、显、告一体化的开源监控平台。三、Zabbix 核心特性特性说明数据采集支持 Agent、SNMP、IPMI、JMX、SSH、Telnet、HTTP、ODBC、自定义脚本等十几种方式实时监控秒级、分钟级采集周期可自由配置强大告警触发器Trigger表达式灵活支持邮件、钉钉、企业微信、飞书、短信、脚本等告警介质可视化内置仪表盘、图形、地图、幻灯片轮播支持自定义数据存储基于关系型数据库MySQL / PostgreSQL / Oracle历史数据可落库与归档分布式通过 Proxy 实现分布式监控支持大规模横向扩展高可用支持 Server 集群 数据库集群实现高可用部署开放 API提供 JSON-RPC 风格的 HTTP API方便二次开发与平台对接多语言官方支持中文等多种语言的 Web 界面权限体系基于用户组/角色的细粒度权限控制支持多租户解析这张表里最值得关注的是数据采集方式多和开放 API两条。采集方式多意味着你几乎不需要写轮子——网络设备走 SNMP、Java 应用走 JMX、老机器走 SSH都能接进来而 API 则是 Zabbix 能融入现有自动化平台CMDB、工单系统、发布系统的关键。四、Zabbix 系统架构核心组件及其职责组件作用Zabbix Server大脑。负责数据采集调度、触发器计算、告警发送、报表生成常驻进程zabbix_serverDatabase数据仓库。存储配置信息、采集到的历史数据、趋势数据。生产环境建议独立部署Web Frontend基于 PHP 的 Web 管理界面负责可视化展示与操作配置Zabbix Agent安装在被监控主机上的采集探针支持 Linux/Windows/macOS 等Zabbix Proxy分布式代理替 Server 分摊采集压力适合跨机房、大并发场景Zabbix Java Gateway专门用于采集基于 JMX 的 Java 应用如 Tomcat、Kafka指标Zabbix Get命令行工具用于从 Agent 手动取数是排障利器端口约定务必记住防火墙配置要用10050/TCP—— Agent 监听供 Server 被动拉取数据或被 Proxy 拉取10051/TCP—— Server 监听接收 Agent 主动上报和 Proxy 转发80 / 8080/TCP—— Web 前端访问端口解析排障时只要抓住两个端口就够了——“谁拉谁的数据谁就监听谁”。Server 要被动拉数据 → 它主动连 Agent 的10050Agent 主动上报 → 它连 Server 的10051。下文排查小节会反复用到这个思路。五、数据是怎么被采集上来的Zabbix 的采集模型可以用一句话概括Host主机→ Item监控项→ Trigger触发器→ Action动作→ 告警/执行。Host(主机) ──定义── Item(监控项) ──超过阈值── Trigger(触发器) │ ▼ Media(告警介质) ──发送── Action(动作) ──条件匹配──┘两种核心采集模式被动模式默认Server 按周期主动向 Agent 发起请求Agent 把结果回传。适合主机数量不多、Server 压力可控的场景。主动模式Agent 周期主动向 Server或 Proxy上报数据。适合大规模场景能把采集压力分摊到 Agent 端。常见的监控项类型Item type类型适用场景Zabbix agent默认探针采集CPU、内存、磁盘、网络等Zabbix agent (active)主动模式采集SNMP agent交换机、路由器、防火墙等网络设备IPMI服务器硬件传感器温度、风扇、电源JMXJava 中间件指标HTTP agent网页状态码、响应时间、接口可用性Simple checkTCP 端口存活、ICMP ping 等SSH / Telnet无法装 Agent 时的远程命令采集DB monitor直接查询数据库性能指标External check / Script自定义脚本zabbix 万能扩展点解析这条链路是 Zabbix 的神经反射弧。Item 决定采什么Trigger 决定什么时候算异常Action 决定异常了通知谁、怎么通知。后续部署你会亲手把这条链路走一遍那时候再回来看这张图会非常清晰。六、版本怎么选Zabbix 的版本节奏分为两类版本类型发布节奏支持期适用场景LTS长期支持约每两年一次6.0、7.0……约 5 年1 年扩展支持生产环境首选标准版约每半年一次6.2、6.4、7.2……发布至下一个版本 约 1 个月尝鲜新特性、测试环境本实验为什么选 Zabbix 6.0 LTS6.0 是首个完整支持MySQL 8.0的 LTS 版本与本文环境Rocky 9.6 MySQL 8.0完全匹配官方标准支持期覆盖到 2026 年另有扩展支持生产环境可放心用中文资料、模板、社区讨论最丰富遇到问题最容易搜到答案。解析判断该不该升 7.0 LTS只看一件事——你的历史数据、模板、二次开发代码是否兼容。Zabbix 升级后zabbix_server.conf和模板基本都是向后兼容的但 API 调用和自定义脚本要回归测试。生产环境跟着 LTS 走、测试环境大胆用新版本是通用策略。七、部署前环境准备7.1 环境要求项目建议操作系统Rocky Linux 9.6 x86_64CPU / 内存测试环境 2C / 4G 足够磁盘50G历史数据很吃磁盘数据库MySQL 8.0Rocky 9.6 官方镜像源版本Zabbix6.0 长期维护版本7.2 网络规划本文规划两台机器主机名IP角色server1192.168.40.141Zabbix Server MySQL Web 前端server2192.168.40.142被监控主机Agent7.3 基础环境初始化两台机器都执行# 1. 关闭 SELinuxsed-is/^SELINUX.*/SELINUXdisabled//etc/selinux/config# 2. 关闭并禁用 firewalldsystemctl disable--nowfirewalld# 3. 设置时区与时间同步监控数据时间错乱是很多灵异问题的根源timedatectl set-timezone Asia/Shanghai dnfinstall-ychronysystemctlenable--nowchronyd timedatectl set-ntptrue# 4. 设置主机名分别设置hostnamectl set-hostname server1# 141 执行hostnamectl set-hostname server2# 142 执行解析① 不关 SELinux 的话Zabbix 官方提供了zabbix-selinux-policy包来放行但实验环境直接关闭最省事②时间同步务必做——Zabbix 触发器判断异常靠的是时间序列Server 和 Agent 时差过大会导致数据看起来断档或误报。7.4 下载入口Zabbix 官方提供安装向导选好6.0 / Rocky Linux / 9 / MySQL / Apache后会直接给你可复制的命令zabbix官网安装地址八、部署 Zabbix Server8.1 添加官方源并安装组件192.168.40.141选择合适的下载版本和服务官方会提供相应的安装方式在下面执行安装 zabbix 组件步骤对应到命令行就是这几步# 安装 zabbix-release 包写入官方 yum 源 导入 GPG 密钥rpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm dnf clean all# 安装 Server连 MySQL Web 前端PHP Apache 配置 数据库初始化脚本dnfinstall-yzabbix-server-mysql zabbix-web-mysql zabbix-apache-conf\zabbix-sql-scripts zabbix-selinux-policy zabbix-agent解析逐个说清楚装了什么——zabbix-server-mysql核心的zabbix_server守护进程zabbix-web-mysqlPHP 编写的 Web 前端程序zabbix-apache-conf自动在 httpd 下生成/etc/httpd/conf.d/zabbix.conf虚拟主机配置zabbix-sql-scripts数据库初始化脚本server.sql.gz里面是表结构和内置模板数据zabbix-selinux-policySELinux 放行策略虽然实验关了 SELinux装上无害zabbix-agent连 Server 自己也要被监控顺手装上。8.2 初始化 MySQL 数据库初始化 mysql 数据库mysql-uroot-p-- 建库字符集必须 utf8mb4支持中文/emoji图形标题中文不乱码CREATEDATABASEzabbixCHARACTERSETutf8mb4COLLATEutf8mb4_bin;-- 建专用账号生产环境别用 root 连 ZabbixCREATEUSERzabbixlocalhostIDENTIFIEDBYZabbix123;GRANTALLPRIVILEGESONzabbix.*TOzabbixlocalhost;-- 允许导入脚本里创建存储函数见下方解析SETGLOBALlog_bin_trust_function_creators1;QUIT;导入官方预生成的表结构与初始数据zcat /usr/share/zabbix-sql-scripts/mysql/server.sql.gz|\mysql --default-character-setutf8mb4-uzabbix-pZabbix123zabbix# 导入完成后立刻关回安全值mysql-uroot-p-eSET GLOBAL log_bin_trust_function_creators 0;解析为什么一定要log_bin_trust_function_creators 1server.sql.gz里有存储函数如nan()。MySQL 为了安全默认不允许在未指定DETERMINISTIC等属性时创建函数此时直接导入会报ERROR 1419 (HY000)。临时打开这个开关再导入成功后务必关回 0避免留下安全敞口。顺带一提server.sql.gz里不止有表结构还预置了大量官方监控模板Linux、MySQL、Nginx……这就是后面模板直接套用的数据来源。8.3 配置 Server 连接数据库并启动服务为 zabbix 配置 mysql然后重启服务。注rocky9 自带 php 和 httpd 服务。# 在 zabbix_server.conf 里写入数据库密码默认是注释掉的sed-is/^# DBPassword/DBPasswordZabbix123//etc/zabbix/zabbix_server.confgrep^DBPassword/etc/zabbix/zabbix_server.conf# 确认已生效# 启动并开机自启systemctlenable--nowzabbix-server zabbix-agent httpd php-fpm systemctl status zabbix-server# active (running) 即成功验证监听端口ss-lntp|grep-E10051|10050|:80\s# zabbix-server 监听 10051zabbix-agent 监听 10050httpd 监听 80解析Rocky 9 的 httpd 与 php-fpm 由系统自带无需再装 LAMP。改完配置后 Zabbix 首次启动会自动连接 MySQL 做一次版本检查如果 8.2 里库没导成功这里zabbix-server会反复重启并报Cannot connect to database——看到这个报错先回 8.2 排查别急着改别处。部署成功九、部署 Zabbix Agent9.1 安装并配置 Agent192.168.40.142# 与 Server 端相同先加官方源rpm-Uvhhttps://repo.zabbix.com/zabbix/6.0/rhel/9/x86_64/zabbix-release-latest-6.0.el9.noarch.rpm dnfinstall-yzabbix-agent修改配置vim/etc/zabbix/zabbix_agentd.confServer192.168.40.141# 被动模式允许哪些 Server 来拉数据白名单ServerActive192.168.40.141# 主动模式Agent 主动上报给哪个 ServerHostnameserver2# Agent 自己的主机名必须与 Web 端创建的主机名一致Hostname是Agent 自己的主机名必须与 Web 端创建的主机名一致sever要依靠这个连接agentweb网页主机名conf配置文件三者必须一致。启动并验证systemctlenable--nowzabbix-agent.service ss-lntp|grep10050# 确认 Agent 已监听解析很多人分不清Server和ServerActive。其实它们对应两种采集模式——Server是被动模式的白名单它告诉 Agent允许谁来主动连接我。如果配错成 Agent 的 IPServer 来拉数据会被拒绝ServerActive是主动模式的目标地址告诉 Agent我主动把数据报给谁。所以Server 里写 Server 的 IP、ServerActive 里也写 Server 的 IP通常就对了。Hostname必须和 Web 端创建主机时填的主机名完全一致这是主动模式对账的依据差一个字符都取不到数据。9.2 在 Web 端添加主机接入 Agent路径监测 → 主机 → 创建主机填写配置项填写内容主机名称server2必须与 Agent 配置文件里的 Hostname 一致可见的名称Agent02-业务机随便起用于显示群组新建或选择Linux servers接口AgentIP192.168.40.142端口10050添加成功绿色 ZBX 图标 Agent 连接正常灰色 暂时无数据红色 采集失败多半是防火墙、端口、Hostname 不一致导致。解析这里最容易踩的坑是接口栏。接口Interface是给被动模式用的——Server 要知道去哪个 IP:端口 拉数据而主机名称Host name是给主动模式对账用的。两种模式都配的情况下两个字段都别省。如果后面发现灰色 ZBXzabbix_get -s 192.168.40.142 -k agent.ping一下一步就能定位是网络不通还是名字对不上。9.3 agent模式主动模式Agent 主动发起连接去找 Zabbix ServerServer 监听 10051 端口Server 接收数据存入数据库Server 不会主动连 Agent主动模式下Web 界面主机监控项类型要改成Zabbix agent(active)不能继续用被动的 Zabbix agent主动模式只需要 agent 出站访问 10051不需要 server 入站访问 agent 机器被动模式Server 发起 TCP 连接访问 Agent 的 10050 端口 Agent 收到请求采集本机数据把结果返回给 ServerAgent 数量巨大时Server 会大量创建连接压力上涨** 主动模式下常常需要搭配被动模式模板使用主动模式下不会去检测agent的10050端口所以单独使用主动模板下agent的状态会显示为未知十、Web 前端初始化10.1 配置 PHP 时区sed-is/^; php_value\[date.timezone\].*/php_value[date.timezone] Asia\/Shanghai/\/etc/php-fpm.d/zabbix.conf systemctl restart php-fpm解析Zabbix Web 前端用 PHP 生成PHP 未设置时区会直接抛date.timezone相关报错并且所有图形的时间轴都会偏移。改完必须重启 php-fpm不是 httpd配置才会被重新加载。10.2 添加 PHP 页面汉化与中文字体添加 php 页面汉化安装中文字体图形标题里的中文才不会显示成方块dnfinstallglibc-langpack-zh-ylocalectl list-locales|grepzh_CN解析Zabbix 的语言包由系统 locale 提供。只装glibc-langpack-zh还不够直观——如果后续图形标题中文乱码多半是Web 界面语言没切到中文右上角头像 → 语言或字体缺失需安装wqy-microhei之类的字体到/usr/share/fonts。实验环境装上中文 locale 即可满足绝大多数展示。10.3 首次登录浏览器访问http://192.168.40.141默认账号Admin密码zabbix解析首次登录系统会强制修改 Admin 密码这是安全基线别跳过。登录后建议先去管理 → 一般 → 用户界面把默认语言切成中文后续操作体验会好很多。十一、添加监控主机与监控项这一章开始把采集→判断→展示真正落地到 Web 上建议对照第五节的数据流模型一起看。11.1 添加监控项CPU 每分钟负载路径配置 → 主机 → 监控项 → 创建监控项创建一个 cpu 每分钟负载的监控项测试消耗 CPU 的命令制造负载用来验证采集md5sum /dev/zero# 多开几个终端并行执行能看到 load 立刻飙高解析监控项Item是 Zabbix 的最小采集单元核心就两个字段——Key 和间隔。Key决定采什么。CPU 负载的 key 是system.cpu.load[percpu,avg1]中括号是参数percpu表示按每核归一化、avg1表示取 1 分钟平均。这样配置的好处是多核机器 load 不会虚高8 核 load 8 才算满。间隔决定多久采一次。CPU 这种秒级变化的数据可以设 10~30s磁盘容量这种变化慢的设 1~5min 就够别把 Server 和数据库拖垮。11.2 添加根分区监控项根分区使用量根分区剩余空间百分比解析磁盘类 key 统一用vfs.fs.size[/,used]这种格式中括号第一个参数是挂载点第二个是取值维度used已用字节free剩余字节pfree剩余百分比total总容量。建议同时监控used看绝对增长和pfree看相对水位触发器一般挂在pfree上低于 5% 报警比已用 45G 报警更有普适性。11.3 为监控项添加触发器路径配置 → 主机 → 触发器 → 创建触发器cpu 负载过高触发器根分区空闲空间低于 95% 触发器即剩余空间不足 5%解析触发器Trigger是异常判定规则核心就是表达式last(/主机名/key) 阈值。几个高频用法last(/server2/system.cpu.load[percpu,avg1]) 3最近一次负载 3min(/server2/... ,5m) 3最近 5 分钟最小值仍 3防止瞬时抖动误报max(...,1h) 阈值反向用比如CPU 持续低也可以告警。实战建议给表达式加5m 或 10m 的窗口如min(...,5m)否则 CPU 一瞬间飙高就会连环告警刷屏。11.4 添加监控图形路径配置 → 主机 → 图形 → 创建图表cpu 负载的图形表示执行 cpu 负载测试命令后查看图形解析图形Graph是把监控项组合展示的层。一个图形里可以画多条线的多个 item比如把 CPU 的 1/5/15 分钟负载画在一张图里对比。它不产生额外数据纯粹是查询历史数据做可视化。数据来源有两条**历史数据History**保留原始值、**趋势数据Trends**是降采样后的汇总——图形默认用的是趋势数据所以看大趋势很正常要精确到秒级请切历史视图。11.5 添加模板创建新模板路径配置 → 模板 → 创建模板为新创建的空模板添加配置新模板成功添加三条监控项配置解析模板Template是 Zabbix 批量纳管的灵魂——一个模板 一组 Item Trigger 图形的集合。给主机挂上模板等于一次性灌入整套监控规则。生产里你不会给每台机器手敲几十个 item而是官方模板直接套装好zabbix-sql-scripts时自带的Linux by Zabbix agent等自己建的业务模板如MySQL 巡检“Nginx 状态”复制给同构机器。注意模板修改会同步到所有挂它的主机这既是优点一处改、处处生效也是风险改坏了全挂改模板前建议先复制一份再改。11.5 添加发现动作和自动注册先启用发现动作再启动自动发现规则zabbix-server 主动扫描规则内的网络找存活设备发现之后根据动作对应的操作进行添加主机连接模板等相应的操作。自动注册agent主动上报给server申请注册主机。所以需要修改agent的配置文件添加元数据配置.这样agent启动后主动向server发送携带元数据(主机名主机元数据的注册请求配置agent元数据十二、配置告警监控只有加上告警才算闭环12.1 配置告警媒介以邮件为例启用触发器动作路径配置 → 动作 → 触发器动作zabbix自带的触发器动作是默认向zabbix组中所有用户发送全部问题如果需要配置用户自己的报警需要单独设置1触发器动作。为用户配置收件邮箱路径管理 → 媒介 → Email解析告警介质Media是用什么通道发。默认内置 Email、脚本、短信等类型。Email 类型里最关键的是 SMTP 配置服务器、端口、认证、发件人邮箱配完先点测试发送验证一遍别等真出故障才发现发不出去。启用用户收件邮箱路径管理 → 用户 → 点击 Admin → 告警媒介 → 添加填入接收邮箱解析介质配好 ≠ 用户会收到。每个用户要手动绑定介质填自己的接收邮箱并且可以设置启用时间段和严重级别过滤。很多人配完动作没反应八成是介质没绑定到用户这一步漏了。12.2 为触发器添加动作为前面配置的 cpu 负载过高触发器添加动作路径配置 → 动作 → 触发器动作 → 创建动作为动作添加相应操作添加成功解析动作Action是条件 操作的规则条件哪些主机、哪些触发器、什么级别命中后执行操作发给哪些用户/群组、走哪种介质、发什么内容。{TRIGGER.NAME}、{HOST.NAME}这些是 Zabbix 内置的宏在操作内容里直接引用就能自动填充实际值告警内容会专业很多。12.3 添加用户组及用户添加用户组路径管理 → 用户群组 → 创建用户组给新创建的用户组添加用户路径管理 → 用户 → 创建用户同时也可以设定用户的报警介质测试新用户登录解析用户组User Group承载权限边界——给组分配只读 / 读写的对象范围组里的用户继承权限。生产环境的做法是监控只看图 → 只读组要改监控项 → 运维组。新建用户默认无任何权限必须挂到组里才有东西可看。12.4 告警链路验证用压测制造一次 CPU 告警验证整条链路md5sum /dev/zero# 在 server2 上压 CPU让负载飙过触发器阈值解析验证时建议去报表 → 动作日志看动作是否触发、发送是否成功。链路是Item 采到高负载 → Trigger 判定异常 → Action 匹配 → 按用户介质发送邮件。哪一环断了对照 12.1~12.3 排查介质没配通、用户没绑介质、动作没启用是三个最高频的原因。十三、分布式监控再开一台代理机器192.168.40.143(server3):根据这个选项可以查看官网的proxy安装方式:根据这个步骤安装完可以查看10051端口是否存在因为proxy的端口也是10051所以一定不能跟server在同一台机器上。修改etc下的zabbix_proxy.conf文件proxy 只保证zabbix_proxy.conf 里面的 Hostname 与 Web【代理】页面填写的代理名称严格一致即可。不一定必须是主机名Server192.168.40.141# zabbix server的ipDBPasswordpassword# 数据库密码javaGateway192.168.40.142# JMX服务主机IPStartJavaPollers# 启动进程数然后重新i启动proxy服务systemctl restart zabbix-proxy在server上配置代理proxy的作用就是减轻Server的压力是Zabbix 代理组件介于 Zabbix Server 和被监控设备之间承担监控数据采集中转agent传来的数据先存入 Proxy 本地 SQLite 数据库不直接发给 Server。所以proxy可以减少 Server 瞬时连接数、减少server端 MySQL 瞬间写入压力多用于跨网段、分布式、异地分支机构场景。但触发器和告警计算仍然由 Server 完成proxy 不处理告警。创建proxy 路径管理 → proxy → 创建proxy设置agent主机使用proxy采集数据更新server配置缓存zabbix_server-Rconfig_cache_reload#刷新server配置缓存systemctl restart zabbix_server# 重启proxy服务zabbix_server -R config_cache_reload 刷新server配置缓存,web配置后只是写入数据库还没有刷新到内存不手动刷新内存需要等待默认时间刷新。并且proxy一定要在刷新server配置缓存后启动否则会报错。正常重启server后会在日志中出现3. 现在zabbix_agent要向proxy上报核心数据所以修改server2上的agent配置。修改etc下的zabbix_agentd.conf文件Server192.168.40.143# 指向proxy主机IPServerActive192.168.40.143重启agent服务。4. 代理成功十四、grafana可视化Grafana 是开源可视化仪表盘工具 是 Go 写的程序内置完整 http web 服务默认监听 3000 端口。本身不采集数据只做读时序数据库 → 画图、做监控大屏、告警。grafana官网入口安装grafana-enterprise_12.4.8_31135008312_linux_amd64.rpm版本安装完后直接启动查看3000端口是否监听成功。直接登录grafana:192,168.40.100:3000,默认账户名和密码都是admingrafana通过插件化来完成不同的可视化需求安装zabbix插件。连接我们的zabbix_server获取监控数据测试是否连接成功使用样例十五、常见问题排查症状排查思路Web 打开 404 / 打不开检查httpd是否启动、防火墙 80 端口、/etc/httpd/conf.d/zabbix.conf是否加载数据库初始化报ERROR 1419没设log_bin_trust_function_creators1重新设置后再导一次主机显示红色 ZBX① Server→Agent 的 10050 端口不通telnet 192.168.100.20 10050② Agent 的Server未配置③ Hostname 不一致④ SELinux/防火墙拦截页面报 PHP 时区错误检查/etc/php-fpm.d/zabbix.conf的date.timezone后重启php-fpm取不到自定义数据用zabbix_get -s agentIP -k key在 Server 端手动验证 key 是否返回告警没发出去① 介质类型测试发送是否成功② 用户是否绑定介质③ 动作条件和操作是否配置正确④ 邮件服务商是否拦截万能排查三件套zabbix_get-s192.168.100.20-kagent.ping# 验证取数tail-f/var/log/zabbix/zabbix_server.log# Server 日志tail-f/var/log/zabbix/zabbix_agentd.log# Agent 日志解析这三个命令按顺序用基本能解决 90% 的问题——zabbix_get告诉你数据链路通不通返回值对不对zabbix_server.log告诉你Server 侧发生了什么数据库连不上、触发器计算错误都会在这里zabbix_agentd.log告诉你Agent 侧发生了什么Server 主动连接被拒、主动上报失败都会在这里。从数据流向Server ↔ Agent两头各看一边日志问题就能被切得很小。