telegraf_docker_in_docker
Telegraf Docker в Docker (telegraf-docker-in-docker)
Ansible роль для запуска Telegraf агента с плагином Docker input в контейнере Docker.
Содержание
- Фон
- Требования
- Установка
- Переменные роли
- Зависимости
- Пример playbook
- Содействие
- Лицензия
- Информация об авторе
Фон
Telegraf — это агент, который часто используется для передачи метрик в InfluxDB. Оба написаны на языке Go, который сложно упаковать для традиционных дистрибутивов, таких как Debian GNU/Linux, поэтому запуск их в Docker удобно.
Плагин Docker Input Telegraf собирает метрики работающих контейнеров Docker через API Docker Engine. Запуск этого агента Telegraf в самом контейнере Docker требует доступа к конечной точке Docker на хосте, обычно через UNIX сокет. С точки зрения безопасности логично запускать агента от непривилегированного пользователя, что означает необходимость наличия пользователя на хост-системе в группе docker, который может быть использован изнутри контейнера для доступа к этой конечной точке.
Этот проект выполняет всю настройку этого пользователя и контейнера в одной роли ansible.
Требования
Контейнеры настраиваются с помощью модуля community.docker.docker_container, который является частью коллекции community.docker. Вы, возможно, уже установили его. Если нет, следуйте документации по модулям о том, как его установить.
Установка
Эта роль может быть установлена через ваш requirements.yml, либо из Ansible Galaxy, либо из Git репозитория.
Переменные роли
Обязательные переменные
tdid_influxdb_org
:- Описание: Имя организации в InfluxDB.
tdid_influx_token
:- Описание: API токен InfluxDB. Рекомендуется не включать это в playbook, а использовать vault или безопасный поиск!
Необязательные переменные
tdid_conf_dir
:- По умолчанию:
"/etc"
- Описание: Каталог назначения на хосте, куда роль копирует файл конфигурации.
- По умолчанию:
tdid_docker_image
:- По умолчанию:
"telegraf:latest"
- Описание: Комбинация "telegraf" и некоторого тега. По умолчанию используется последний образ с Docker Hub.
- Примеры:
"telegraf:latest"
"telegraf:alpine"
"telegraf:1.23"
"telegraf:1.24-alpine"
- По умолчанию:
tdid_influxdb_url
:- По умолчанию:
"http://localhost:8086"
- Описание: URL узла, на котором работает InfluxDB.
- По умолчанию:
tdid_influxdb_bucket
:- По умолчанию:
"default"
- Описание: Целевая корзина для записи данных.
- По умолчанию:
tdid_timezone
:- По умолчанию:
"UTC"
- Описание: Переменная окружения
TZ
, передаваемая в контейнер telegraf. - Примеры:
Europe/Berlin
Asia/Nepal
- По умолчанию:
tdid_user
:- По умолчанию:
"telegraf"
- Описание: Системный пользователь, созданный или измененный на хосте.
- Фон: Связывать произвольных пользователей хоста с пользователями контейнера не так просто. Права доступа на хосте применяются к тем же числовым UID и GID внутри контейнеров. Процесс внутри контейнера, который обращается к чему-то на хосте, должен запускаться с UID/GID, необходимыми на хосте, чтобы получить доступ к определённым вещам на хосте. Необходимо иметь пользователя в группе docker, чтобы получить доступ к конечной точке API движка Docker без суперпользовательских прав. Если пользователя еще нет на хосте, он будет создан как системный пользователь и добавлен в группу 'docker'. Агент Telegraf может работать внутри контейнера с этим UID.
- По умолчанию:
Зависимости
Не используются другие роли galaxy, только указанный выше модуль сообщества.
Пример playbook
Просто добавьте роль и установите несколько переменных.
Минимальный пример
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
Полный пример
- hosts: servers
roles:
- role: telegraf_docker_in_docker
vars:
tdid_influxdb_org: Home
tdid_influx_token: "{{ lookup( … ) }}"
tdid_conf_dir: "/etc/telegraf"
tdid_influxdb_bucket: devops
tdid_influxdb_url: "http://influx.example.org:8086"
tdid_docker_image: telegraf:1.24-alpine
tdid_timezone: "Europe/Berlin"
tdid_user: telegraf
Содействие
Принимаются запросы на слияние.
Лицензия
Этот проект лицензирован под MIT лицензией если не указано иное в файле и соответствует соответствию REUSE.
© 2022 Александр Даль и другие участники
Информация об авторе
Написано Александром Далем для Netz39 мониторинга инфраструктуры.
ansible-galaxy install LeSpocky/ansible-role-telegraf-docker-in-docker