patrickjahns.promtail

Ansible-Rolle: promtail

Test Lizenz Ansible Rolle GitHub-Tag

Beschreibung

Setzen Sie promtail mit Ansible ein. Unterstützt amd64- und arm-Architekturen. Für aktuelle Änderungen, bitte das CHANGELOG überprüfen oder einen Blick auf die GitHub-Releases werfen.

Anforderungen

  • Ansible >= 2.7

Rollenvariablen

Alle übersteuerbaren Variablen sind in der Datei defaults/main.yml sowie in der folgenden Tabelle gespeichert.

Name Standardwert Beschreibung
promtail_version "3.0.0" Version des promtail-Pakets. Akzeptiert auch latest als Parameter.
promtail_custom_checksum "" Benutzerdefinierter Prüfziffer für benutzerdefinierte promtail-Binärdateien
promtail_binary_local_dir "" Ermöglicht die Verwendung lokaler Pakete statt der auf GitHub verteilten. Erfordert den Pfad, wo das Zip-Archiv von promtail gespeichert ist.
promtail_extra_args [] Ermöglicht das Setzen zusätzlicher Argumente für die Binärdatei innerhalb der systemd-Dienstdatei.
promtail_config_dir /etc/promtail Verzeichnis zur Speicherung der Konfigurationsdatei von promtail
promtail_config_expand_env "false" Wert von promtail -config.expand-env Option
promtail_config_file_sd_dir "{{ promtail_config_dir }}/file_sd" Standardverzeichnis für file_sd-Entdeckung
promtail_config_file "{{ promtail_config_dir }}/promtail.yml" Konfigurationsdatei, die von promtail verwendet wird
promtail_system_user promtail Benutzer, unter dem der promtail-Prozess ausgeführt wird
promtail_system_group "{{ promtail_system_user }}" Gruppe des promtail-Benutzers
promtail_user_additional_groups "adm" Zusätzliche Gruppen, die zum promtail-Benutzer hinzugefügt werden, um den Zugriff auf spezifische Logdateien zu ermöglichen
promtail_config_clients siehe defaults/main.yml Abschnitt der promtail clients
promtail_loki_server_url http://127.0.0.1:3100 Server-URL, an die promtail seine Ergebnisse sendet
promtail_config_server siehe defaults/main.yml Abschnitt der promtail server
promtail_positions_directory /var/lib/promtail Pfad zum Verzeichnis, in dem promtail die erfassten Log-Positionen verfolgt
promtail_config_positions {"filename": "{{ promtail_positions_directory }}/positions.yml"} Abschnitt der promtail positions
promtail_config_scrape_configs [] Abschnitt der promtail scrape_configs
promtail_target_config {} Abschnitt der promtail target_config
promtail_log_level "info" Protokollstufe von promtail (einer von: debug,info,warn,error)
promtail_config_include_default_file_sd_config "True" Wenn auf false gesetzt, wird das Standard-file_sd nicht bereitgestellt
promtail_apt_update_cache "True" Wenn auf false gesetzt, wird die Rolle den APT-Cache nicht automatisch aktualisieren

Für jeden Abschnitt (promtail_config_clients, promtail_config_server, promtail_config_positions, promtail_config_scrape_configs, promtail_target_config) kann die Konfiguration gemäß der offiziellen promtail-Konfiguration übergeben werden. Die Rolle wird die Ansible-Variablen in die jeweilige YAML-Konfiguration für Loki umwandeln.

Beispiel-Playbook

Ein einfaches Playbook, das davon ausgeht, dass Loki unter http://127.0.0.1:3100 lauscht und eine einfache Konfiguration zum Scrapen von /var/log-Logs hat:

---
- hosts: all
  roles:
    - role: patrickjahns.promtail
      vars:
        promtail_config_scrape_configs:
          - job_name: system
            static_configs:
            - targets:
                - localhost
              labels:
                job: varlogs
                __path__: /var/log/*log

Ein komplexeres Beispiel, das die Server-, Client- und Positionskonfiguration sowie eine Scrape-Konfiguration für /var/log überschreibt:

---
- hosts: all
  roles:
    - role: patrickjahns.promtail
      vars:
        promtail_config_server:
          http_listen_port: 9080
          grpc_listen_port: 9081
        promtail_config_clients:
          - url: "http://prometheus.domain.tld:3100/loki/api/v1/push"
            external_labels:
              host: "{{ ansible_hostname }}"
        promtail_config_positions:
          filename: "{{ promtail_positions_directory }}/positions.yaml"
          sync_period: "60s"

        promtail_config_scrape_configs:
          - job_name: system
            static_configs:
            - targets:
                - localhost
              labels:
                job: varlogs
                __path__: /var/log/*log

Lokales Testen

Der bevorzugte Weg, die Rolle lokal zu testen, besteht darin, Docker und Molecule (v3.x) zu verwenden. Sie müssen Docker auf Ihrem System installieren. Siehe "Erste Schritte" für ein geeignetes Docker-Paket für Ihr System. Wir verwenden Tox, um den Prozess des Testens mit mehreren Ansible-Versionen zu vereinfachen. Um Tox zu installieren, führen Sie aus:

pip3 install tox

Um Tests mit allen Ansible-Versionen auszuführen (WARNUNG: Dies kann einige Zeit in Anspruch nehmen):

tox

Um einen benutzerdefinierten Molecule-Befehl in einer benutzerdefinierten Umgebung mit nur dem Standard-Test-Szenario auszuführen:

tox -e ansible29 -- molecule test -s default

Für weitere Informationen zu Molecule besuchen Sie deren Dokumentation.

Wenn Sie Tests auf einem entfernten Docker-Host ausführen möchten, geben Sie vor dem Ausführen der Tox-Tests die Variable DOCKER_HOST an.

CI

GitHub-Aktionen werden verwendet, um diese Ansible-Rolle über ansible-later und Molecule zu testen und zu validieren. Molecule-Tests werden mit verschiedenen Betriebssystemen sowie Ansible-Versionen durchgeführt, um die Kompatibilität sicherzustellen.

Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert. Siehe LICENSE für weitere Details.

Wartende und Mitwirkende

Installieren
ansible-galaxy install patrickjahns.promtail
Lizenz
mit
Downloads
514.5k
Besitzer
Site Reliability Engineer with a ❤️ for "everything as code". Passionate about software craftsmanship and deliberately breaking things (aka Chaos Engineering)