coopdevs.monitoring_role

Monitoring Rolle Ansible Rolle

Eine Ansible-Rolle zur Wartung der Überwachungstools des Grafana-Ökosystems.

Verwendet Docker, um Prometheus- und Loki-Exporter zu installieren:

  • nodeexporter: Prometheus-Exporter, der allgemeine Daten über den Zustand eines Hosts sammelt.
  • postgresexporter: Prometheus-Exporter, der den Zustand des PostgreSQL-Servers überwacht.
  • promtail: der Haupt-Exporter für Loki, einen Log-Server, der ähnlich wie Prometheus ist und mit Grafana kompatibel ist.

Diese Rolle unterstützt einige Anwendungen mit ihrem Standard-Protokollformat:

Zusätzlich unterstützt sie einen benutzerdefinierten Exporter, der die aktiven Benutzer im System anzeigt.

Verwendung dieser Rolle

Öffentliche Variablen

NodeExporter

# defaults/main.yaml
monitoring_nexporter_enabled: true
monitoring_nexporter_host: 127.0.0.1
monitoring_nexporter_port: 9100
monitoring_nexporter_docker_bind: "127.0.0.1:127.0.0.1:9100"
monitoring_nexporter_container_name: nexporter
monitoring_nexporter_image_version: latest

PostgreSQLExporter

monitoring_postgres_exporter_enabled: true
monitoring_postgres_exporter_pg_user: "monitor_user"

Promtail

# defaults/main.yaml
monitoring_promtail_enabled: true
monitoring_promtail_host: 127.0.0.1
monitoring_promtail_port: 9080
monitoring_promtail_docker_bind: "127.0.0.1:127.0.0.1:9080"
monitoring_promtail_container_name: promtail
monitoring_promtail_image_version: latest

monitoring_promtail_modules_enabled:
  - "app2"

monitoring_promtail_modules_available:
  app1:
    log_path: "/var/log/app1/error.log"
    template: "app1.j2"
  app2:
    log_path: "/opt/app2/log/app2.log"
    template: "app2.j2"

monitoring_promtail_config_dir: "/etc/promtail"
monitoring_promtail_config_filename: "config.yml"

Aktive Benutzer

monitoring_users_enabled: true
monitoring_users_host: 127.0.0.1
monitoring_users_port: 9839
monitoring_users_endpoint: "/metrics"
monitoring_users_prefix: "what"
monitoring_users_with_timestamp: false
monitoring_users_scrape_interval: 5000

Geheime Variablen

Promtail

monitoring_loki_user: "1234"
monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
monitoring_loki_hostname: "logs-somewhere.grafana.net"

PostgreSQLExporter

monitoring_postgres_exporter_pg_password: "3%hyZ&toNZ#Xn74"
monitoring_postgres_exporter_pg_port: "3456"

Beispiel-Playbooks

Odoo mit Promtail

# playbooks/odoo-promtail.yml
---
- name: Installiere Odoo mit Protokollüberwachung
  hosts: servers
  become: yes
  roles:
    - role: coopdevs.odoo_role
    - role: coopdevs.monitoring_role
      vars:
        monitoring_nexporter_enabled: false
        monitoring_promtail_enabled: true
        monitoring_promtail_modules_enabled: [ "odoo" ]
        monitoring_loki_user: "1234"
        monitoring_loki_key: "eyJrIjoiM2VlZmM2NmQ4ZTQ4ZmE3MDRmZDBmMGE0YzNlNTE1MzRjZDdjNDY0N2YiLCJuIjoieW91ciBncmFmYW5hIGNsb3VkIGtleSIsImlkIjoxMjM0NTZ9"
        monitoring_loki_hostname: "logs-somewhere.grafana.net"

PostgreSQL mit Systemmetriken

# playbooks/postgres-nexporter.yml
---
- name: Installiere einen Datenbankserver mit offengelegte Systemmetriken
  hosts: servers
  become: yes
  roles:
    - role: geerlingguy.postgresql
    - role: coopdevs.monitoring_role
      vars:
        monitoring_nexporter_enabled: true
        monitoring_promtail_enabled: false

Sicherheit

Diese Rolle gibt über einen HTTP-Server viele Daten preis, die potenziell ausgenutzt werden können. Standardmäßig hört sie auf eine Loopback-Adresse, die nicht öffentlich im Internet zugänglich ist.

Dennoch möchten Sie wahrscheinlich, dass ein externer Prometheus-Server diese Daten regelmäßig abruft. Zu diesem Zweck ist eine Art Authentifizierung des Prometheus-Servers gegen den Host erforderlich.

Ein Ansatz ist es, die Exporter an localhost zu binden und dann einen Reverse Proxy mit Basis-Authentifizierung, z. B. mit Nginx, davor einzurichten. Die Verwaltung dieser Einrichtung und der damit verbundenen Schlüssel liegt außerhalb des Rahmens dieser Rolle.

Erweiterung

Ein Prometheus-Exporter

Um einen neuen Prometheus-Exporter hinzuzufügen:

  1. Kopiere den Abschnitt defaults/main.yml vom Node Exporter in dieselbe Datei und ändere alle nexporter-Begriffe in deinen, z. B. someexporter
  2. Kopiere den Abschnitt templates/monitoring-docker-compose.yml.j2 des Node Exporters und benenne ihn um und passe ihn an deine Bedürfnisse an.
  3. Passe meta/main.yml an: füge ein Tag hinzu, ändere die Beschreibung bei Bedarf.
  4. Aktualisiere README.md

Ein Promtail-Modul für eine neue App

Um die Unterstützung für eine App hinzuzufügen, die noch nicht unterstützt wird, tue Folgendes:

  1. Deklariere sie bei monitoring_promtail_modules_available. Der Log-Pfad hängt von der App ab, der Name der Vorlage, den du hier entscheidest.
  2. Kopiere die templates/promtail-config-apps/odoo-role.j2 in dasselbe Verzeichnis, aber benenne sie in new-app.j2 um.
  3. Bearbeite die Vorlage entsprechend deiner App. Überprüfe die offiziellen Dokumente.
  • Du kannst den Regex bei regexr im "Servermodus" oder regex101.com testen. Füge einen Kommentar mit einigen Log-Einträgen zur besseren Verständlichkeit hinzu, das hilft zukünftigen Lesern des Regex.
  • Setze die labels-Stufe, um festzulegen, welche Labels an Loki übertragen werden, unter all den gesammelten.
  • Setze die timestamp-Stufe, um die Protokollzeile mit der tatsächlichen Zeit anstelle der Zeit, die Promtail sie abgerufen hat, zu stempeln.
    • Füge Millisekunden nur hinzu, wenn möglich. Golang versteht nur den Punkt '.' als Dezimaltrennzeichen. Wenn deine App ',' verwendet, funktioniert das nicht. Siehe das Golang-Problem #6189
    • Füge die Zeitzone entweder durch das Parsen wie im backups-role.j2 oder manuell wie im odoo-role.j2 hinzu.
  • Optional kannst du eine match-Stufe hinzufügen, wenn du Einträge ausschließen möchtest, die nicht deinem Regex entsprechen.
Über das Projekt

Install Prometheus and Loki exporters to monitor your project instances

Installieren
ansible-galaxy install coopdevs.monitoring_role
GitHub Repository
Lizenz
Unknown
Downloads
22.4k
Besitzer
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.