Zabbix LLD:如何从JSON创建动态监控项?
解决Zabbix动态监控车库车辆数量的配置步骤
1. 新增实时查询单品牌车辆数的UserParameter
在主机的Zabbix Agent配置文件中添加以下参数(若已有相关查询逻辑,可直接复用脚本,否则新建查询脚本):
UserParameter=garage.car.count[*], /home/data/get_car_count.sh $1
对应的get_car_count.sh脚本需要支持接收品牌名称参数,并返回该品牌当前的车辆数量,示例逻辑如下:
#!/bin/bash BRAND=$1 # 从实际数据源(如存储车辆数的文件/数据库)中查询对应品牌的数量 grep "^$BRAND " /home/data/car_list.txt | awk '{print $2}'
(请根据你实际的车辆数存储方式调整脚本逻辑,确保输入品牌名能返回正确数值)
2. 配置监控项原型
进入Zabbix GUI中目标主机的页面,找到已创建的「car brand」自动发现规则,点击监控项原型标签,创建新的监控项原型:
- 名称:
车库车辆数 - {#BRAND}(通过{#BRAND}宏动态替换品牌名称) - 类型:Zabbix agent
- 键值:
garage.car.count[{#BRAND}](借助宏将发现的品牌名传递给UserParameter) - 更新间隔:按需设置(比如
5m,需短于发现规则的1小时周期,保证数据实时性) - 信息类型:数值(整数)
- 其他参数(如历史数据保留时长、趋势存储周期等)按需配置
3. 验证配置
- 重启Zabbix Agent使新增的UserParameter生效:
systemctl restart zabbix-agent - 等待自动发现规则执行(或手动触发发现),Zabbix会自动为每个发现的品牌创建对应监控项
- 进入「最新数据」页面,筛选目标主机和对应监控项,确认是否能正常获取车辆数量数值
关键说明
你之前的发现脚本中返回的{#NB}仅为发现时刻的静态数值,不会随车辆数量变化实时更新,因此必须通过独立的UserParameter来实时查询每个品牌的当前数量,确保监控数据的时效性。
内容的提问来源于stack exchange,提问作者troubadour
相关产品推荐
相关产品推荐

