Поначалу я планировал этот пост про InfluxDB. Дескать, вот так поставим, вот так настроим… Однако реальность больно тыкнула вилкой в глаз: поставил, запустил, зашел на influx:8086, установил пароль, завел организацию… и всё. Нет, реально всё. Больше там ничего не потребовалось делать.
А вот с телеграфом пришлось повозиться. Дело в том, что я возжелал с одной машины отправлять разные метрики в разные бакеты. Ну всякие там “загрузка процессора и памяти” в один, а “температура в доме” – в другой. Ну вот захотелось мне так.
Все просто. Для начала прямо в telegraf.conf добавим тег influxdb_database
# Global tags can be specified here in key="value" format.
[global_tags]
# dc = "us-east-1" # will tag all metrics with dc=us-east-1
# rack = "1a"
## Environment variables can be used as tags, and throughout the config file
# user = "$USER"
influxdb_database = "default"
Да, я очень неоригинален в этом плане. Теперь ко всему, что собирает telegraf по умолчанию добавляется тэг influxdb_database со значением default.
Теперь добавляем сборку данных с mqtt. Заполняем файл /etc/telegraf/telegraf.d/mqtt.conf
[[inputs.mqtt_consumer]]
servers = ["tcp://127.0.0.1:1883"]
## Topics that will be subscribed to.
topics = [
"/devices/+/controls/temperature",
"/devices/+/controls/battery",
"/devices/+/controls/humidity",
"/devices/+/controls/pressure",
"/devices/+/controls/co2",
"/devices/+/controls/MCU Temperature",
"/devices/+/controls/CPU Temperature",
"/devices/dark_room_power/controls/voltage",
"/devices/dark_room_power/controls/power",
"/devices/sleeping_room_power2/controls/voltage",
"/devices/sleeping_room_power2/controls/power",
]
data_format = "value"
data_type = "float"
[inputs.mqtt_consumer.tags]
influxdb_database = "mqtt"
Тут тоже все просто: указываем адрес сервера, указываем, на какие топики подписаться, их формат и последней строчкой меняем значение тега на mqtt. И теперь самая магия:
[[outputs.influxdb_v2]]
urls = ["http://influxdb.hlevnoe.lan:8086"]
token = "xf3w6SKIPSKIP7z1hPQ=="
organization = "hlevnoe"
bucket = "hlevnoe"
[outputs.influxdb_v2.tagpass]
influxdb_database = ["default"]
И сравните с вторым
[[outputs.influxdb_v2]]
urls = ["http://influxdb.hlevnoe.lan:8086"]
token = "xf3w6nSKIPSKIPvam7z1hPQ=="
organization = "hlevnoe"
bucket = "mqtt"
[outputs.influxdb_v2.tagpass]
influxdb_database = ["mqtt"]
Наверняка для матерых инфлюксоводов это покажестя легкой шуткой, но я честно потратил пару часов на раскуривание функционала tagpass. Больше, правда, на выяснение, как и куда его правильно прописать. В общем, теперь все с influxdb_database = default
попадает в бакет hlevnoe
, а mqtt
в mqtt
.
Запустив все это и убедившись в отсутствии ошибок, можно вернуться в influx. Там есть простенький data explorer, позволяющий потыкаться и порисовать графики. Даже можно простейшие дашборды собрать!
Вот, к примеру, график потребления электричества у морозильника.
![](https://blog.kiltum.tech/wp-content/uploads/2024/07/image.png)
Или график температуры у меня за окном
![](https://blog.kiltum.tech/wp-content/uploads/2024/07/image-1.png)
В общем, это далеко не графана, но по-быстрому позырить что к чему – можно.