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

Zabbix 6.2.4中如何基于AWS ASG实例ID自动发现监控项

解决Zabbix 6.2.4中ASG实例健康状态监控项原型生成问题

一、调整发现规则的JSONPath(核心步骤)

你当前的JSONPath仅提取了InstanceId列表,但Zabbix自动发现需要输出键值对格式的JSON数组(每个元素是包含自定义宏的对象),这样监控项原型才能关联对应实例的属性。修改预处理的JSONPath为:
$.AutoScalingGroups[*].Instances[*].{"{#INSTANCE_ID}": @.InstanceId, "{#HEALTH_STATUS}": @.HealthStatus}

修改后发现规则会输出类似如下的结构:

[
  {"{#INSTANCE_ID}": "i-xxx111", "{#HEALTH_STATUS}": "Healthy"},
  {"{#INSTANCE_ID}": "i-xxx222", "{#HEALTH_STATUS}": "Unhealthy"}
]

此时每个实例的ID和健康状态会被封装为可被监控项原型引用的宏变量。

二、创建监控项原型

  1. 进入目标发现规则的配置页面,切换到监控项原型标签页,点击「创建监控项原型」。
  2. 配置核心参数:
    • 名称:填写ASG实例 {#INSTANCE_ID} 健康状态(每个实例的监控项名称会自动替换为对应的实例ID)
    • 键:自定义键名,比如aws.asg.instance.health[{#INSTANCE_ID}](通过宏关联实例ID,确保每个监控项对应唯一实例)
    • 类型:选择与主项一致的类型(比如HTTP agent,取决于你获取ASG数据的方式)
    • 更新间隔:根据业务需求设置(例如300秒)
    • 值类型:若健康状态仅为Healthy/Unhealthy,可选择布尔型并设置映射(Healthy=1,Unhealthy=0);也可选择字符型直接展示状态文本。
  3. 提取对应实例的健康状态:
    如果主项已能获取完整ASG JSON数据,在监控项原型中添加两步预处理:
    • 第一步选择JSONPath,参数填写$.AutoScalingGroups[*].Instances[?(@.InstanceId == "{#INSTANCE_ID}")].HealthStatus(通过实例ID过滤匹配对应的健康状态)
    • 第二步选择提取,去除数组格式(JSONPath会返回数组如["Healthy"],提取后得到纯文本值)

三、验证配置

  1. 保存监控项原型后,回到发现规则页面,点击「执行检查」,确认发现的实例列表正确带出{#INSTANCE_ID}和{#HEALTH_STATUS}宏。
  2. 等待Zabbix自动发现执行(或手动触发),在「最新数据」中查看是否生成了对应每个实例的监控项,且健康状态值正确。

注意事项

  • 确保获取ASG数据的主项拥有足够AWS权限:IAM权限需包含autoscaling:DescribeAutoScalingGroups
  • Zabbix 6.2的JSONPath支持过滤表达式[?()],可直接通过实例ID精准匹配目标数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 05:15:31