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

Zabbix中如何将自动发现规则的LLD宏值以非数组形式传入Item原型Key?

解决Zabbix自动发现宏传递单值的问题

问题分析

你遇到的核心问题有两个:

  • 自动发现规则的JSONPath配置错误,导致提取到的是disk字段值的数组而非单个值
  • 混淆了LLD宏和普通用户宏的格式(LLD宏应为{#DISK}而非{$DISK})

修正步骤

  1. 调整自动发现规则的JSONPath设置

    • 打开依赖型自动发现规则的配置界面
    • 将主JSONPath设为 $(此路径指向整个JSON数组)
    • 针对LLD宏{#DISK},将其对应的JSONPath设为 disk(此路径指向数组内每个对象的disk属性)
  2. 修复Item原型的宏格式
    将Item原型的Key修改为:

    system.run["smartctl -A /dev/{#DISK}"]
    

    注意:LLD宏的格式是{#宏名},而普通用户宏是{$宏名},两者不能混用。

  3. 优化预处理代码(可选)
    你现有的预处理逻辑可以简化,避免冗余的循环操作:

    // 匹配所有/dev/sd开头的磁盘路径
    const diskPaths = value.match(/\/dev\/sd[a-z]/g);
    // 转换为LLD需要的JSON格式,去掉/dev/前缀
    const lldData = diskPaths.map(path => ({ disk: path.replace('/dev/', '') }));
    return JSON.stringify(lldData);
    

    这段代码直接生成符合Zabbix LLD要求的JSON数组,逻辑更清晰高效。

完成上述调整后,LLD宏{#DISK}会被正确赋值为单个字符串(如sda),Item原型将生成正确的Key:system.run["smartctl -A /dev/sda"]。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:53:32