lespocky.telegraf_docker_in_docker

Telegraf Docker w Docker (telegraf-docker-w-docker)

Status REUSE licencja MIT pre-commit zgodność ze standardowym README

Rola Ansible do uruchamiania agenta Telegraf z wtyczką wejściową Docker w kontenerze Docker.

Spis treści

Tło

Telegraf to agent, który często służy do przesyłania metryk do InfluxDB. Oba są napisane w języku Go, który jest trudny do pakowania dla tradycyjnych dystrybucji, takich jak Debian GNU/Linux, więc uruchamianie ich w Dockerze jest wygodne.

Wtyczka wejściowa Docker Telegraf zbiera metryki z działających kontenerów dockerowych przy użyciu API silnika Docker. Uruchomienie agenta Telegraf w kontenerze Docker wymaga dostępu do punktu końcowego Dockera na hoście, zazwyczaj jest to gniazdo UNIX. Z punktu widzenia bezpieczeństwa sensowne jest uruchomienie agenta jako użytkownika bez uprawnień, co sprawia, że konieczne jest posiadanie użytkownika na systemie hosta, który jest w grupie docker, co może być użyte z wnętrza kontenera do uzyskania dostępu do tego punktu końcowego.

Ten projekt wykonuje całe ustawienie tego użytkownika i kontenera w jednej roli ansible.

Wymagania

Kontenery są ustawiane przy użyciu modułu community.docker.docker_container, który jest częścią kolekcji community.docker. Możesz to już mieć zainstalowane. Jeśli nie, postępuj zgodnie z dokumentacją modułów, aby go zainstalować.

Instalacja

Ta rola może być zainstalowana poprzez twój requirements.yml, zarówno z Ansible Galaxy, jak i z repozytorium Git.

Zmienne roli

Zmienne obowiązkowe

  • tdid_influxdb_org:
    • Opis: Nazwa organizacji InfluxDB.
  • tdid_influx_token:
    • Opis: Token API InfluxDB. Zaleca się, aby nie umieszczać tego w playbooku, ale używać vaultu lub bezpiecznego wyszukiwania!

Zmienne opcjonalne

  • tdid_conf_dir:
    • Domyślnie: "/etc"
    • Opis: Katalog docelowy na hoście, do którego rola kopiuje plik konfiguracyjny.
  • tdid_docker_image:
    • Domyślnie: "telegraf:latest"
    • Opis: Kombinacja "telegraf" i jakiś tag. Domyślnie używa najnowszego obrazu z Docker Hub.
    • Przykłady:
      • "telegraf:latest"
      • "telegraf:alpine"
      • "telegraf:1.23"
      • "telegraf:1.24-alpine"
  • tdid_influxdb_url:
    • Domyślnie: "http://localhost:8086"
    • Opis: URL węzła działającego InfluxDB.
  • tdid_influxdb_bucket:
    • Domyślnie: "default"
    • Opis: Docelowy koszyk do zapisu.
  • tdid_timezone:
    • Domyślnie: "UTC"
    • Opis: Zmienna środowiskowa TZ przekazywana do kontenera telegraf.
    • Przykłady:
      • Europe/Berlin
      • Asia/Nepal
  • tdid_user:
    • Domyślnie: "telegraf"
    • Opis: Użytkownik systemowy utworzony lub zmodyfikowany na hoście.
    • Tło: Mapowanie dowolnych użytkowników hosta na użytkowników kontenera nie jest łatwe możliwe. Prawa dostępu na hoście mają zastosowanie do tych samych numerycznych UID i GID wewnątrz kontenerów. Proces uruchomiony w kontenerze uzyskujący dostęp do czegoś na hoście musi działać z uid/gid wymaganym na hoście, aby uzyskać dostęp do określonych rzeczy na hoście. Konieczne jest posiadanie użytkownika w grupie docker, aby uzyskać dostęp do punktu końcowego api silnika docker bez uprawnień superużytkownika. Jeśli nie jest już obecny na hoście, ten użytkownik zostanie utworzony jako użytkownik systemowy i umieszczony w grupie 'docker'. Agent Telegraf może działać wewnątrz kontenera z tym UID.

Zależności

Nie używane są inne role galaxy, tylko wspomniany powyżej moduł społecznościowy.

Przykładowy Playbook

Po prostu dołącz rolę i ustaw kilka zmiennych.

Minimalny przykład

- hosts: serwery
  roles:
    - role: telegraf_docker_w_docker
      vars:
        tdid_influxdb_org: Home
        tdid_influx_token: "{{ lookup( … ) }}"

Pełny przykład

- hosts: serwery
  roles:
    - role: telegraf_docker_w_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

Współpraca

Przyjmowane są prośby o pociągnięcie.

Licencja

Ten projekt jest licencjonowany na mocy Licencji MIT chyba że zaznaczono inaczej w pliku i jest zgodny z zgodnością REUSE.

© 2022 Alexander Dahl i współpracownicy

Informacje o autorze

Napisane przez Alexander Dahl dla Netz39 monitoring infrastruktury.

O projekcie

Run Telegraf Agent with Docker input plugin in Docker container

Zainstaluj
ansible-galaxy install lespocky.telegraf_docker_in_docker
Licencja
other
Pobrania
13.8k
Właściciel
Embedded Linux Developer