Telegraf не забирает метрики из mqtt

у меня два вопроса

  1. Настраиваю сбор метрик с mqtt, метрики в целом какие то есть но не всех, всегда около 30.
    только первый раз после перезапускa Telegraf я вижу метрики все метрики по адресу IP:PORT/metrics

настройки mqtt telegraf

[[inputs.mqtt_consumer]]
  name_override = "mqtt"
  client_id = "telegraf"
  topics = ["#"]
  interval = "120s"
  servers = ["tcp://127.0.0.1:1883"]
  qos = 0
  persistent_session = false
  data_format = "value"
  data_type = "auto_float"
[inputs.mqtt_consumer.tagdrop] topic = ["*meta*"]

конфигурация описана именно так чтобы при добавлении новых датчиков они появились сразу в victoriaMetrics

  1. как получать не только “цифровые” метрики, но и значение типа серийник контроллера. но чтобы тоже все и новые датчики тоже попадали в базу VM

Добрый день.
Пока не очень понимаю в чем поведение отличается от ожидаемого. Для проверки - подпишитесь на топики, с помощью mosquitto_sub, например и сравните вывод.

Я кажется очень понятно пояснил что мне нужно получить.
я хочу понять почему мне отдается 30 рандомных метрик и как мне получить все остальные.
вы пробовали подписаться на все топики и сравнить вывод, например?

Нет, к сожалению.
Возможно - я не понял описания.
Для примера - покажите вывод какого-то определенного топика.

хорошо. перефразирую.
Я хочу получить все метрики, в том числе текстовые, в виде серийного номер или номера релиза wb через Telegraf, но не могу этого сделать, так как Telegraf получает только 30 случайных метрик, а мне нужны все метрики.
список всех метрик я вижу здесь http://192.168.10.10/#!/MQTTChannels и их я хочу видеть в Telegraf выводе вот тут http://192.168.10.10:9191/metrics

что конкретно в этих метриках мне не важно, так же как и вывод топиков через mosquitto_sub

Я предполагаю что где то есть ограничение у самого MQTT сколько метрик отдавать в единицу времени. В конфигурации mosquitto я ничего похоже не нашел, куда копать?

Воспроизведу сейчас.

1 лайк
[[outputs.prometheus_client]]
  listen = ":9191"
  data_format = "prometheus"

важно отдавать метрики в формате prometheus

тогда будет http://192.168.10.10:9191/metrics здесь только 30 метрик mqtt

нашел эту настройку. Не сразу додумался посмотреть в веб.
Но вот после указания максимального числа метрик все сразу стали отдаваться.

но интересует второй пункт.
чтобы отдавались не только числовые значение но и текст. тут уже похоже настройки самого телеграфа надо крутить, и с этим наверно не поможете

Хотя нет, такое же поведение (как при перезапуске службы telegraf)
при установке значения в 800, метрики все появились, но при следующем опросе их снова стало 30

Если настраиваю отдавать /devices/# то:

2024-10-11T13:53:34Z D! [outputs.http] Wrote batch of 409 metrics in 384.542171ms
2024-10-11T13:53:34Z D! [outputs.http] Buffer fullness: 11 / 10000 metrics
2024-10-11T13:53:41Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "10.0.0.75": invalid syntax
2024-10-11T13:53:41Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "192.168.42.1": invalid syntax
2024-10-11T13:53:41Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "eth0": invalid syntax
2024-10-11T13:53:41Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "[\"lo\",\"wb-ap\"]": invalid syntax
2024-10-11T13:53:44Z D! [outputs.http] Wrote batch of 193 metrics in 356.219453ms
2024-10-11T13:53:44Z D! [outputs.http] Buffer fullness: 7 / 10000 metrics
2024-10-11T13:53:45Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "10m": invalid syntax
2024-10-11T13:53:54Z D! [outputs.http] Wrote batch of 194 metrics in 329.005516ms
2024-10-11T13:53:54Z D! [outputs.http] Buffer fullness: 5 / 10000 metrics
2024-10-11T13:54:04Z D! [outputs.http] Wrote batch of 187 metrics in 366.991382ms
2024-10-11T13:54:04Z D! [outputs.http] Buffer fullness: 11 / 10000 metrics

вижу retained 409
Что соответствует:

timeout --foreground -s 15 2 mosquitto_sub -v -t /devices/# |wc  -l
516

При этом естественно строчные не публикуются:

2024-10-11T13:58:57Z D! [outputs.http] Wrote batch of 195 metrics in 436.462119ms
2024-10-11T13:58:57Z D! [outputs.http] Buffer fullness: 18 / 10000 metrics
2024-10-11T13:59:05Z E! [inputs.mqtt_consumer] Error in plugin: strconv.ParseFloat: parsing "ok": invalid syntax
2024-10-11T13:59:07Z D! [outputs.http] Wrote batch of 200 metrics in 333.112724ms
2024-10-11T13:59:07Z D! [outputs.http] Buffer fullness: 6 / 10000 metrics

Ну и естественно сначала передаются все retained а потом уже только публикуемые.

хорошо, тогда как мне получать retained и публикуемые ?

Если честно я не очень понимаю, в MQTT но казалось задача получить все метрики чтобы запихнуть их в prometheus довольно простая.
похоже telegraf описывать каждый топик и говорить ему как его парсить.
а вот как получать все метрики я до сих не понял.

может так нагляднее получится пояснить


вот данные из топиков /devices/wbe2-i-ebus_12/controls/Heating Temperature
и /devices/wbe2-i-ebus_12/controls/Heating Setpoint

и их нет ингода на графике, то есть Telegraf может получить эту метрику а может и не получить.

где этот лимит настраивается?

retained отправляются сразу же, при запуске.
Публикуемые - по мере публикации, конечно.

Не очень понятно. Значение передается только при его изменении. До следующего изменения - оно просто остается. Это mqtt, событийный механизм.

Он не настраивается. Grafana к примеру просто показывает последнее значение.

Grafana показывает значение от источника в моем случае victoriaMetrics, если значение есть в этот период времени значит оно покажется, если его нет будут дырки как на картинке.


вот так показывает сейчас

а так после перезапуска Telegraf

но в логе вот такое.
[inputs.mqtt_consumer] No metrics were created from a message. Verify your parser settings. This message is only printed once.

если бы значение не было бы то графина не отображала бы их

но значение есть в течение 10 минут, причем они не меняются, потом их нет.

и всегда у telegraf 30 метрик и все тут, ну не может же ведь так быть что все не меняющиеся метрики все были в количество 30 ни больше не меньше.

где то есть какая то стандартная настройка, но где я хочу понять

Нет, не подскажу.
При описанной в примерахконфигурации - дополнительных настроек не нужно. Как пример: WirenBoard + Grafana