Несколько демонов Telegraf пытаются записать в одну и ту же БД в InfluxDB
У меня работает два демона телеграфа.
Демон 1: Ввод = тема кафки: sample_topic, Ввод = InfluxDb: DB = телеграф, ИЗМЕРЕНИЕ = KI1
Демон 2: вход = тема кафки: sample_topic2, выход = InfluxDb: DB = телеграф, ИЗМЕРЕНИЕ = KI2
Два демона читают разные темы кафки и записывают два разных измерения в базу данных InfluxDB "telegraf"
Я наблюдаю, что измерения KI1 и KI2 не создаются одновременно. Создано только одно измерение. Когда я убиваю демона, который уже создал измерение, то другое измерение создается в БД другим демоном.
Разрешается ли одновременная запись в разные измерения в InfluxDb?
Я даже попробовал то же самое, написав две разные базы данных InfluxDb, telegraf и telegraf2. Я наблюдал такое же поведение.
Кроме того, возможно ли сделать все это, используя только одного демона? Где у меня есть несколько входных плагинов для чтения различных тем Кафки и различных выходных плагинов для записи, когда это необходимо.
Демон 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
2 ответа
Я наблюдаю, что измерения KI1 и KI2 не создаются одновременно. Создано только одно измерение. Когда я убиваю демона, который уже создал измерение, то другое измерение создается в БД другим демоном.
Я не знаю, как ты это проверил. Но шансы на такую аномалию редки.
Разрешается ли одновременная запись в разные измерения в InfluxDb?
Да.
Вы должны попытаться использовать разные группы потребителей в каждом экземпляре Telegraf.
экземпляр 1
[[inputs.kafka_consumer]]
...
consumer_group = "sample-1"
...
экземпляр 2
[[inputs.kafka_consumer]]
...
consumer_group = "sample-2"
...
Таким образом, в случае использования одной и той же Consumer_group для обоих экземпляров это означает, что оба экземпляра находятся в одной группе. Только один экземпляр в каждой группе может потреблять данные. Если один экземпляр не работает, другой экземпляр в той же группе возьмет на себя ответственность за использование данных из тем Kafka.
Было бы поздно отвечать, но это должно быть решение той же проблемы.