telegraf_docker_in_docker

Telegraf Docker в Docker (telegraf-docker-in-docker)

Статус REUSE лицензия MIT pre-commit соответствие стандарту readme

Ansible роль для запуска Telegraf агента с плагином Docker input в контейнере Docker.

Содержание

Фон

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 мониторинга инфраструктуры.

О проекте

Run Telegraf Agent with Docker input plugin in Docker container

Установить
ansible-galaxy install LeSpocky/ansible-role-telegraf-docker-in-docker
Лицензия
other
Загрузки
10246
Владелец
Embedded Linux Developer