You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JSON-over-HTTP LLD配置失败:主机名含无效字符'{'求助

Zabbix JSON over HTTP 主机自动发现(LLD)故障排查与解决

问题描述

我正在配置一个基于JSON over HTTP数据源的Zabbix主机自动发现(Host LLD),配置里包含带JSONPath的预处理步骤,以及3个JSONPath类型的LLD宏。我已经用Zabbix内置测试工具和JSONPath验证工具确认过配置的正确性,但LLD执行时一直报错:

Cannot create host "{#LOCATION_ID}": name contains invalid character '{'.

我怀疑是LLD宏的值为空导致的,但不知道具体该怎么排查和解决。


排查步骤

  • 检查数据源返回的JSON结构
    直接调用HTTP数据源接口,确认返回的JSON里有没有预期的LOCATION_ID字段,且字段值非空。可以用curl命令测试:

    curl -X GET "你的HTTP数据源URL"
    

    同时要确保返回的是数组类型的JSON数据(Zabbix LLD要求数据源返回数组,每个元素对应一个待创建的主机)。

  • 验证LLD宏的JSONPath表达式
    把数据源返回的JSON内容复制到JSONPath验证工具中,重新测试宏对应的表达式,确认能精准提取到非空值。注意Zabbix的JSONPath实现可能和第三方工具略有差异,比如@符号的使用规则,要以Zabbix官方文档为准。

  • 检查预处理步骤的逻辑与顺序
    确认预处理步骤的顺序是否合理:比如要先做JSON解析,再执行JSONPath提取操作。同时排查是否有预处理步骤过滤或修改了数据,导致目标字段被删除或者JSON结构被破坏。

  • 查看Zabbix日志详情
    打开Zabbix Server的日志文件(通常路径是/var/log/zabbix/zabbix_server.log),搜索LLD相关日志条目,看是否有更具体的错误提示,比如数据源请求失败、JSON解析错误等。


常见解决方法

  • 修正LLD宏的JSONPath表达式
    如果表达式无法正确提取值,要根据实际JSON结构调整。比如返回的JSON是[{"location_id": "LOC001"}, ...],那么{#LOCATION_ID}对应的JSONPath应该是$.[*].location_id(注意Zabbix的JSONPath对字段名大小写敏感)。

  • 确保数据源返回标准JSON数组
    要求数据源返回标准的JSON数组,每个元素包含所有LLD宏需要的字段,且字段值不为空字符串或null。如果数据源返回的是单个JSON对象,要么在预处理步骤中用JSONPath提取出数组部分,要么修改数据源接口返回数组格式。

  • 检查主机名称模板配置
    确认主机自动发现配置里的主机名称模板是否正确使用了LLD宏(比如正确写成{#LOCATION_ID}),同时确保宏替换后的主机名称符合Zabbix规则(不能包含{、}这类特殊字符,报错信息也侧面说明宏没被正确替换)。

  • 测试LLD执行结果
    在Zabbix的LLD配置页面点击「测试」按钮,查看返回的LLD宏值列表,确认每个宏都有对应的非空值。如果测试结果里宏值为空,说明数据源或JSONPath表达式存在问题,需要重新排查。


内容的提问来源于stack exchange,提问作者viktorkho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 02:15:34