【问题标题】:Multiple Telegraf Daemons trying to write to same DB in InfluxDB多个 Telegraf 守护进程试图写入 InfluxDB 中的同一个数据库
【发布时间】:2019-06-17 18:15:55
【问题描述】:

我有两个 Telegraf 守护进程正在运行。

守护进程 1:输入 = kafka 主题:sample_topic,输出 = InfluxDb:DB = telegraf,MEASUREMENT = KI1
守护进程 2:输入 = kafka 主题:sample_topic2,输出 = InfluxDb:DB = telegraf,MEASUREMENT = KI2

这两个守护进程读取不同的 kafka 主题并写入 InfluxDB 数据库“telegraf”中的两个不同的测量值

我观察到测量 KI1 和 KI2 不是同时创建的。仅创建一个测量值。当我杀死已经创建测量的守护程序时,另一个测量由另一个守护程序在数据库中创建。

InfluxDb 中是否允许同时写入不同的测量值?

我什至通过写入两个不同的 InfluxDb 数据库 telegraf 和 telegraf2 来尝试相同的操作。我观察到了同样的行为。

另外,是否可以只使用一个守护进程来完成所有这些工作?在哪里我有多个输入插件来读取不同的 kafka 主题和不同的输出插件来编写需要的地方。

守护进程 1:

[tags]
    topic = "sample_topic"


# OUTPUTS
[outputs]
[outputs.influxdb]
    # The full HTTP endpoint URL for your InfluxDB instance
    url = "http://localhost:8086" # EDIT THIS LINE
    # The target database for metrics. This database must already exist
    database = "telegraf" # required.
    skip_database_creation = true
    database_tag = "KI1"

#INPUTS
# Read metrics from Kafka topic(s)
[[inputs.kafka_consumer_legacy]]

    name_override = "KI1"
    ## topic(s) to consume
    topics = ["sample_topic"]
    ## an array of Zookeeper connection strings
    zookeeper_peers = ["localhost:2181"]
    ## Zookeeper Chroot
    zookeeper_chroot = ""
    ## the name of the consumer group
    consumer_group = "sample"
    ## Offset (must be either "oldest" or "newest")
    offset = "oldest"
    ## Data format to consume.
    ## Each data format has its own unique set of configuration options, read
    ## more about them here:
    ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
    data_format = "value"
    data_type = "string"
    ## Maximum length of a message to consume, in bytes (default 0/unlimited);
    ## larger messages are dropped
    max_message_len = 65536

守护进程 2:

[tags]
    topic = "sample_topic2"

# OUTPUTS
[outputs]
[outputs.influxdb]
    # The full HTTP endpoint URL for your InfluxDB instance
    url = "http://localhost:8086" # EDIT THIS LINE
    # The target database for metrics. This database must already exist
    database = "telegraf" # required.
    skip_database_creation = true
    database_tag = "KI2"


#INPUTS
# Read metrics from Kafka topic(s)
[[inputs.kafka_consumer_legacy]]

    name_override = "KI2"
    ## topic(s) to consume
    topics = ["sample_topic2"]
    ## an array of Zookeeper connection strings
    zookeeper_peers = ["localhost:2181"]
    ## Zookeeper Chroot
    zookeeper_chroot = ""
    ## the name of the consumer group
    consumer_group = "sample"
    ## Offset (must be either "oldest" or "newest")
    offset = "oldest"
    ## Data format to consume.
    ## Each data format has its own unique set of configuration options, read
    ## more about them here:
    ## https://github.com/influxdata/telegraf/blob/master/docs/DATA_FORMATS_INPUT.md
    data_format = "value"
    data_type = "string"
    ## Maximum length of a message to consume, in bytes (default 0/unlimited);
    ## larger messages are dropped
    max_message_len = 65536

【问题讨论】:

    标签: apache-kafka influxdb telegraf telegraf-inputs-plugin telegraf-output-plugins


    【解决方案1】:

    我观察到的是测量 KI1 和 KI2 都不是 同时创建的。仅创建一个测量值。当我杀 已经创建测量的守护进程,然后是另一个 测量是由另一个守护进程在数据库中创建的。

    我不知道您是如何验证的。但是这种异常情况很少见。

    InfluxDb 中是否允许同时写入不同的测量值?

    是的。

    【讨论】:

    • 我运行了两个守护进程,并且我正在向两个主题发布数据。我希望写入同时发生。但是只创建了一个测量值,而另一个没有。当我杀死一个守护进程(已经将数据写入 Influxdb 的那个)时,另一个测量值被创建了。我弄清楚为什么会这样。这是遗留插件的原因。使用 legacy 插件,两个守护进程都试图同时连接到 zookeeper。连接到 [::1]:2181 是两个守护进程所拥有的。因此,在一个守护进程被杀死之前,另一个守护进程不会连接到 zookeeper。
    • 新的 kafka 消费者插件没有出现这个问题。所以我切换到新插件。
    【解决方案2】:

    您应该尝试在每个 Telegraf 实例中使用不同的消费者组

    实例 1

    [[inputs.kafka_consumer]]
    ...
    consumer_group = "sample-1"
    ...
    

    实例 2

    [[inputs.kafka_consumer]]
    ...
    consumer_group = "sample-2"
    ...
    

    因此,在对两个实例使用相同的 consumer_group 的情况下,这意味着两个实例都在同一个组中。每组只允许一个实例消费数据。如果一个实例宕机,同一组中的另一个实例将负责使用来自 Kafka 主题的数据。

    回答会晚,但应该是同一个问题的解决方案。

    【讨论】:

      猜你喜欢
      • 2011-08-28
      • 2012-10-25
      • 2011-06-25
      • 2023-03-26
      • 1970-01-01
      • 1970-01-01
      • 2011-09-30
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多