如何使用相同的名称重命名来自多个输入处理器的字段

时间:2019-09-05 12:39:51

标签: influxdb telegraf telegraf-inputs-plugin telegraf-plugins

我正在使用Telegraf,并且有多个输入。http插件返回相同的字段名称,并希望区分它们。

我为不同的搜索条件调用ElasticSearch,返回的JSON结构始终相同,因此尽管我可以在input.http级别(name_override或name_suffix)上定义度量,但我想更改字段值始终为“ doc_count”。

样本输出(无论查询参数如何,结构都相同)

{
    "took": 487,
    "timed_out": false,
    "_shards": {
        "total": 707,
        "successful": 707,
        "skipped": 610,
        "failed": 0
    },
    "hits": {
        "total": 14,
        "max_score": 0.0,
        "hits": []
    },
    "aggregations": {
        "3": {
            "doc_count_error_upper_bound": 0,
            "sum_other_doc_count": 0,
            "buckets": [
                {
                    "key": "logging-fluentd-jkq66",
                    "doc_count": 8
                },
                {
                    "key": "logging-fluentd-4vz58",
                    "doc_count": 4
                },
                {
                    "key": "logging-fluentd-4bh8j",
                    "doc_count": 2
                }
            ]
        }
    }
}

我使用过processes.rename,可以使它起作用(包括基于度量名称的过滤),但这仅适用于一种度量。它忽略多个porcesses.rename定义。

以下定义仅适用于第一部分。

[[processors.rename]]
  namepass = "_http_elasticsearch_logs_dropping"
  [[processors.rename.replace]]
    measurement = "_http_elasticsearch_logs_dropping"
    dest = "_http_elastic"

  [[processors.rename.replace]]
    field = "doc_count"
    dest = "buffer_flush_or_queue_size_errors"

[[processors.rename]]
  namepass = "_http_elasticsearch_microservice_logs"
  [[processors.rename.replace]]
    measurement = "_http_elasticsearch_microservice_logs"
    dest = "_http_elastic"

  [[processors.rename.replace]]
    field = "doc_count"
    dest = "log_count"

我敢肯定有一种方法可以实现我想做的事情,但是还没有发现。

1 个答案:

答案 0 :(得分:0)

好,我的错。 processors.rename可以有多个实例,我的问题是namepass参数应该是一个数组。基于上述情况的工作配置:

O(N*logN)