0

我使用 telegraf 定期将一些数据从数据库发送到 InfluxDB,除了一个问题外,它工作正常:

我需要用数据中的字段替换电报自动生成的时间戳(这是电报读取要传输的数据时的当前时间)。

(回答“为什么?”问题:因此,我在 InfluxDB 中获得的数据实际上与我要记录的事件的时间相匹配)。

我原以为有一些标准配置参数或一个容易找到的处理器插件,让我用字段的内容替换默认时间戳,但我没有找到。

在我看来,这不是一个非常奇特的请求,而且 Telegraf 的“Metric”确实有一个“SetTime”功能,所以我希望有人已经解决了这个问题并且可以回答这个问题。

4

4 回答 4

0

您可以使用 starlark 处理器来完成此操作,至少如果您能够首先将正确的时间戳放入标签中。

这是我如何使用 starlark 处理器将测量的时间戳替换为已在输入插件中使用正确时间戳填充的标签内容的示例:

[[processors.starlark]]
  source = '''
  def apply(metric):

      if "nanoseconds" in metric.tags:
        metric.time = int(metric.tags["nanoseconds"])
        return metric

  '''
于 2022-02-26T11:00:15.407 回答
0

由于这个事实

  • 到目前为止,没有人有任何想法,
  • 该功能并非在 Telegraf 附带的所有插件中都可用,并且
  • 我必须非常紧急地解决这个问题,

我写了一个电报处理器插件,它完全符合我的需要。

(我很可能会在未来向电报提供这个,当我比现在有更多的时间呼吸时。)

于 2020-09-28T16:51:32.417 回答
0

对于 JSON 格式输入和 CSV 输入,有一种方法可以做到这一点。

这是 JSON 格式描述的链接以及如何根据有效负载中的值设置时间戳(您可以指定的格式)。

于 2021-09-09T14:56:49.447 回答
0

使用 [[processors.date]]

tag_key = "name_of_column of your timestamp" date_format = {适用于 Go 语言的时间格式}

于 2021-11-05T06:13:22.017 回答