Telegraf Nagios插件多设备监控异常问题
解决多台UPS监控数据无法区分的问题
看起来你遇到的核心问题是所有UPS的监控数据都没携带专属主机标识,导致InfluxDB里的数据混在一起,没法在Data Explorer里筛选单台UPS的指标。下面给你几个可行的解决思路:
1. 拆分配置为独立[[inputs.exec]]块并添加专属标签
这是最直接稳妥的方法:给每台UPS单独配置一个exec模块,通过tags字段添加唯一标识(比如UPS名称、IP),这样每台UPS的数据都会带上专属标签,后续就能轻松筛选区分。
修改后的Telegraf配置示例:
# 第一台UPS监控配置 [[inputs.exec]] timeout = "5s" commands = [ "/usr/local/nagios/libexec/custom-plugins/check_ups_temperature -H 192.168.x.1 -o 1.3.6.1.2.1.33.1.2.7.0 -v1 -C public -w 28 -c 31" ] name_suffix = "_ups_temp" data_format = "nagios" # 添加专属标签,明确标识这台UPS tags = { ups_name = "UPS-机房A-1", ups_ip = "192.168.x.1" } # 第二台UPS监控配置 [[inputs.exec]] timeout = "5s" commands = [ "/usr/local/nagios/libexec/custom-plugins/check_ups_temperature -H 192.168.x.2 -o 1.3.6.1.2.1.33.1.2.7.0 -v1 -C public -w 28 -c 31" ] name_suffix = "_ups_temp" data_format = "nagios" tags = { ups_name = "UPS-机房A-2", ups_ip = "192.168.x.2" } # 其余两台UPS以此类推,复制上述块并修改IP和标签内容 [[outputs.influxdb_v2]] urls = ["http://192.168.x.x:8086"] token = "--token--" organization = "--org--" bucket = "UPS"
2. 修改Nagios脚本,让输出自带主机标识
如果不想拆分多个exec块,也可以修改你的check_ups_temperature脚本,让它在输出的性能数据里追加主机标识的键值对。比如原本脚本输出是:
OK - Temperature is 26|temp=26;28;31;0;
修改为:
OK - Temperature is 26|temp=26;28;31;0; ups_ip=192.168.x.1
Telegraf的nagios数据格式解析器会自动把这些额外的键值对识别为标签/字段,这样同一exec块下的多台UPS数据也能被区分开。
3. 验证配置效果
修改完成后,重启Telegraf让配置生效:
sudo systemctl restart telegraf
等待5-10分钟后,在InfluxDB Data Explorer中就能通过标签筛选单台UPS的数据了,比如用Flux查询:
from(bucket: "UPS") |> range(start: -1h) |> filter(fn: (r) => r._measurement == "exec_ups_temp") |> filter(fn: (r) => r.ups_ip == "192.168.x.1")
内容的提问来源于stack exchange,提问作者Martin Mifsud
相关产品推荐
相关产品推荐

