Пример использования связки telegraf-influxdb-grafana для мониторинга
Подробности гуглятся по запросам Telegraf + InfluxDB + Grafana
. В двух словах:
- Telegraf -- Занимается сбором различных параметров системы. Использование ЦП, памяти, ...
- InfluxDB -- База данных
- Grafana -- Средство визуализации данных. Альтернатива стандартным средствам InfluxDB с возможностью настроить доступ без прав на запись в БД.
- Выбрать/сгенерировать пароль и токен для InfluxDB. Указать их в
.env
(INFLUX_TOKEN
,INFLUX_PASSWORD
). Они будут использоваться для доступа в БД через веб интерфейс и API. - Указать токен в параметре
token
блокаoutputs.influxdb_v2
в файлеtelegraf.conf
- Выбрать/сгенерировать пароль для Grafana. Указать его в
.env
(GRAFANA_PASSWORD
). Он будет использовать для доступа к веб-интерфейсу.
В примере предполагается отслеживание использования ресурсов, в том числе docker-контейнерами.
Поэтому запуск выполняется следующей командой:
DOCKER_GROUP=$(stat -c '%g' /var/run/docker.sock) docker-compose up -d
Требуется для того, чтобы в контейнере ID группы пользователя совпадал с ID группы docker на хост машине.
- Порт
8086
--InfluxDB
- Порт
3000
--Grafana
- В случае использования в сети с прокси, для telegraf можно указать в переменных окружения прокси по примеру:
http_proxy=http://10.128.0.90:8080
. - Для сервиса
telegraf
можно использовать стандартный образtelegraf
, если не требуется мониторинг ГПУ. - Аналогично, без мониторинга ГПУ строку
/usr/bin/nvidia-smi:/usr/bin/nvidia-smi:ro
можно закомментировать DOCKER_INFLUXDB_INIT_RETENTION=1w
-- определяет срок хранения записей в БД.1w
-- одна неделя.
В основном содержит данные для авторизации в БД
- Описывает что трекать. Поддерживает много плагинов.
inputs.docker
позволяет отслеживать использование ресурсов по контейнерам- Содержит данные для авторизации в БД
Telegraf умеет в помощью плагина собирать данные и с ГПУ Nvidia. Если на сервере ГПУ нет или нет необходимости их отслеживать, можно просто закомментировать в telegraf.conf
строчку [[inputs.nvidia_smi]]
А в docker-compose.yaml
строчки runtime: nvidia
и NVIDIA_VISIBLE_DEVICES: all
.