lespocky.telegraf_docker_in_docker

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

REUSE status Lizenz MIT pre-commit standard-readme konform

Ansible-Rolle zum Ausführen des Telegraf-Agenten mit dem Docker-Eingangs-Plugin in einem Docker-Container.

Inhaltsverzeichnis

Hintergrund

Telegraf ist ein Agent, der häufig verwendet wird, um Metriken in InfluxDB zu sammeln. Beide sind in der Programmiersprache Go geschrieben, was es schwierig macht, sie für traditionelle Distributionen wie Debian GNU/Linux zu paketieren, daher ist es praktisch, sie in Docker auszuführen.

Das Telegraf Docker Input Plugin sammelt Metriken von laufenden Docker-Containern über die Docker Engine API. Um den Telegraf-Agenten in einem Docker-Container auszuführen, muss man auf den Docker-Endpunkt auf dem Host zugreifen, normalerweise ein UNIX-Socket. Aus sicherheitstechnischer Sicht ist es sinnvoll, den Agenten als nicht privilegierten Benutzer auszuführen, was erforderlich macht, dass ein Benutzer auf dem Docker-Host-System in der docker-Gruppe ist, die von innerhalb des Containers verwendet werden kann, um auf diesen Endpunkt zuzugreifen.

Dieses Projekt richtet den Benutzer und den Container in einer einzigen Ansible-Rolle ein.

Anforderungen

Container werden mit dem community.docker.docker_container Modul eingerichtet, das Teil der community.docker-Sammlung ist. Möglicherweise haben Sie es bereits installiert. Wenn nicht, folgen Sie der Moduldokumentation zur Installation.

Installation

Diese Rolle kann über Ihre requirements.yml installiert werden, entweder von Ansible Galaxy oder über das Git-Repo.

Rollenvorlagen

Pflichtvariablen

  • tdid_influxdb_org:
    • Beschreibung: Name der InfluxDB-Organisation.
  • tdid_influx_token:
    • Beschreibung: InfluxDB API-Token. Es wird empfohlen, dies nicht ins Playbook zu schreiben, sondern Vault oder eine sichere Abfrage zu verwenden!

Optionale Variablen

  • tdid_conf_dir:
    • Standard: "/etc"
    • Beschreibung: Das Zielverzeichnis auf dem Host, in das die Rolle die Konfigurationsdatei kopiert.
  • tdid_docker_image:
    • Standard: "telegraf:latest"
    • Beschreibung: Kombination aus "telegraf" und einem Tag. Standardmäßig wird das neueste Bild von Docker Hub verwendet.
    • Beispiele:
      • "telegraf:latest"
      • "telegraf:alpine"
      • "telegraf:1.23"
      • "telegraf:1.24-alpine"
  • tdid_influxdb_url:
    • Standard: "http://localhost:8086"
    • Beschreibung: URL des Knoten, der InfluxDB ausführt.
  • tdid_influxdb_bucket:
    • Standard: "default"
    • Beschreibung: Ziel-Bucket, in den geschrieben werden soll.
  • tdid_timezone:
    • Standard: "UTC"
    • Beschreibung: Umgebungsvariable TZ, die an den Telegraf-Container übergeben wird.
    • Beispiele:
      • Europe/Berlin
      • Asia/Nepal
  • tdid_user:
    • Standard: "telegraf"
    • Beschreibung: Systembenutzer, der auf dem Host erstellt oder geändert wird.
    • Hintergrund: Es ist nicht einfach möglich, beliebige Hostbenutzer auf Containerbenutzer abzubilden. Die Zugriffsrechte auf dem Host gelten für die gleichen numerischen UIDs und GIDs innerhalb von Containern. Ein Prozess innerhalb eines Containers, der auf etwas auf dem Host zugreifen möchte, muss mit der uid/gid ausgeführt werden, die erforderlich ist, um bestimmte Dinge auf dem Host zuzugreifen. Es ist erforderlich, einen Benutzer in der Docker-Gruppe zu haben, um auf den Docker-Engine-API-Endpunkt ohne Superbenutzerrechte zuzugreifen. Falls dieser Benutzer auf dem Host noch nicht vorhanden ist, wird dieser Benutzer als Systembenutzer erstellt und in die Gruppe 'docker' eingefügt. Der Telegraf-Agent kann im Container mit dieser UID ausgeführt werden.

Abhängigkeiten

Es werden keine anderen Galaxy-Rollen verwendet, nur das oben genannte Community-Modul.

Beispiel-Playbook

Fügen Sie einfach die Rolle hinzu und setzen Sie einige Variablen.

Minimales Beispiel

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

Vollständiges Beispiel

- 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

Mitwirken

Pull-Requests sind willkommen.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert, sofern nicht anders in der Datei angegeben, und entspricht den REUSE-Vorgaben.

© 2022 Alexander Dahl und Mitwirkende

Autoreninformationen

Geschrieben von Alexander Dahl für die Netz39 Infrastrukturüberwachung.

Über das Projekt

Run Telegraf Agent with Docker input plugin in Docker container

Installieren
ansible-galaxy install lespocky.telegraf_docker_in_docker
GitHub Repository
Lizenz
other
Downloads
13.8k
Besitzer
Embedded Linux Developer