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

Telegraf多输入对应InfluxDB多库失败,求namepass用法指导

问题分析与解决

你的配置无法工作主要有两个核心问题:

  1. 不存在[[inputs.db1]]/[[inputs.db2]]这类Telegraf官方输入插件,你需要用通用的[[inputs.http]]插件来抓取远程JSON数据。
  2. namepass是用来匹配measurement名称的过滤规则,而非输入插件的标识,之前的配置逻辑不匹配Telegraf的工作机制。

以下是两种可行的修正方案:

方案一:通过name_override+namepass实现分流

这种方式直接给每个HTTP输入设置唯一的measurement名称,输出插件通过namepass匹配该名称,将数据发送到对应数据库:

# 输出到shellyem数据库,仅处理measurement为db1的数据
[[outputs.influxdb]]
urls = ["http://172.18.0.2:8086"]
database = "shellyem"
namepass = ["db1"]

# 输出到shell数据库,仅处理measurement为db2的数据
[[outputs.influxdb]]
urls = ["http://172.18.0.2:8086"]
database = "shell"
namepass = ["db2"]

# 第一个HTTP输入:抓取192.168.1.191的电表数据,指定measurement名为db1
[[inputs.http]]
urls = ["http://192.168.1.191/emeter/0"]
timeout = "1s"
data_format = "json"
name_override = "db1"

# 第二个HTTP输入:抓取192.168.1.192的电表数据,指定measurement名为db2
[[inputs.http]]
urls = ["http://192.168.1.192/emeter/0"]
timeout = "1s"
data_format = "json"
name_override = "db2"

方案二:通过自定义Tag+tagpass实现分流(适合多维度区分场景)

给每个输入的数据打自定义标签,输出插件通过tagpass过滤标签实现分流:

# 输出到shellyem数据库,仅处理带有source=db1标签的数据
[[outputs.influxdb]]
urls = ["http://172.18.0.2:8086"]
database = "shellyem"
tagpass = { source = ["db1"] }

# 输出到shell数据库,仅处理带有source=db2标签的数据
[[outputs.influxdb]]
urls = ["http://172.18.0.2:8086"]
database = "shell"
tagpass = { source = ["db2"] }

# 第一个HTTP输入:给数据打source=db1标签
[[inputs.http]]
urls = ["http://192.168.1.191/emeter/0"]
timeout = "1s"
data_format = "json"
tags = { source = "db1" }

# 第二个HTTP输入:给数据打source=db2标签
[[inputs.http]]
urls = ["http://192.168.1.192/emeter/0"]
timeout = "1s"
data_format = "json"
tags = { source = "db2" }

测试验证

修改配置后,可通过以下命令测试配置是否正常工作:

telegraf --config telegraf.conf --test

该命令会输出Telegraf采集到的数据,你可以检查measurement名称或标签是否正确,以及数据是否按预期分流。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 17:46:08