Zabbix JSONPath 预处理失败,怎样定位缺失字段?
Zabbix 的 JSONPath 预处理失败时,先用故障时的原始 JSON 在前端重放测试,再区分路径错误、字段缺失和返回类型变化。只有字段确实可选时才考虑丢弃异常值,避免把缺失数据当成正常的零值。
适用版本与前提
本文以 Zabbix 7.0 为例,依据官方文档整理,未在目标环境实测。需要能查看监控项及其预处理步骤,并取得脱敏后的原始返回值。如果子监控项依赖主监控项,应先拿到主监控项实际传入子项的数据。Zabbix 7.0 监控项预处理文档。
用正常和异常样本重放测试
进入监控项的预处理页,对 JSONPath 步骤点击测试,粘贴正常样本。下面的路径从根对象进入 stats,再取 pending,预期返回数字 12。
{"stats":{"pending":12}}
$.stats.pending再用异常样本重复测试。下面第一行缺少 pending,第二行把 stats 从对象改成数组。数组格式需要按真实语义确定取哪一项。只有接口约定首项就是目标时,第三行的路径才适用。
{"stats":{}}
{"stats":[{"pending":12}]}
$.stats[0].pending如果生产响应是一段 HTML 错误页,先检查采集端收到的响应状态和内容。如果前面还有转换步骤,应测试全部步骤,确认传给 JSONPath 的值和手工样本一致。Zabbix JSONPath 语法参考。
按字段用途处理失败
- 必填指标缺失时,保留可见的错误并检查上游返回格式。
- 字段按接口约定可以缺省时,可在该步骤启用 Custom on fail 并选 Discard value。该次样本会被丢弃,需要另行核对无数据告警是否符合预期。
- 只有指标定义明确规定缺失等于零时,才考虑用固定值 0。否则图表和阈值可能把采集故障当成正常值。
验证新样本确实入库
先确认正常样本能通过所有步骤,最终值符合监控项的数值类型。再用异常样本核对预期错误或丢弃行为。保存后到最新数据查看新时间戳和值,避免把上一次成功值误认成恢复。如果连原始值都没有,请先排查采集链路。排查 Zabbix Agent 主动与被动采集。
本作品采用 知识共享署名-相同方式共享 4.0 国际许可协议 进行许可。
评论已关闭