coopdevs.monitoring_role

Rola monitorowania Rola Ansible

Rola Ansible do utrzymywania narzędzi monitorowania ekosystemu Grafana.

Używa Dockera do instalacji eksporterów Prometheusa i Lokiego:

  • nodeexporter: eksporter Prometheusa, który zbiera dane o stanie hosta.
  • postgresexporter: eksporter Prometheusa, który monitoruje stan serwera PostgreSQL.
  • promtail: główny eksporter dla Lokiego, serwera logów podobnego do Prometheusa i współpracującego z Grafana.

Ta rola wspiera niektóre aplikacje z ich domyślnym formatem logowania:

Dodatkowo wspiera niestandardowego eksportera, który expose aktywnych użytkowników w systemie.

Korzystanie z tej roli

Publiczne zmienne

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"

Aktywni użytkownicy

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

Zmienne poufne

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"

Przykłady playbooków

Odoo z promtail

# playbooks/odoo-promtail.yml
---
- name: Zainstaluj Odoo z monitorowaniem logów
  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 z metrykami systemu

# playbooks/postgres-nexporter.yml
---
- name: Zainstaluj serwer bazy danych z ujawnionymi metrykami systemu
  hosts: servers
  become: yes
  roles:
    - role: geerlingguy.postgresql
    - role: coopdevs.monitoring_role
      vars:
        monitoring_nexporter_enabled: true
        monitoring_promtail_enabled: false

Bezpieczeństwo

Ta rola udostępnia wiele danych przez serwer HTTP, które mogą być potencjalnie wykorzystane. Domyślnie, nasłuchuje na adresie lokalnym, niedostępnym z internetu.

Jednakże, prawdopodobnie chcesz, aby zewnętrzny serwer Prometheus pobierał te dane okresowo. W tym celu, i aby chronić dane, potrzebna jest pewnego rodzaju autoryzacja serwera Prometheus do hosta.

Jednym z podejść jest pozostawienie eksporterów przylegających do localhost, a następnie skonfigurowanie odwrotnego proxy przed nimi z autoryzacją podstawową, używając Nginx. Zarządzanie tą konfiguracją i kluczami w tym zakresie jest poza zakresem tej roli.

Rozszerzenie

Eksporter prometheusa

Aby dodać nowego eksportera prometheusa:

  1. Skopiuj sekcję defaults/main.yml z Node Exportera do tego samego pliku i zmień wszystkie terminy nexporter na swoje, na przykład, someexporter.
  2. Skopiuj sekcję templates/monitoring-docker-compose.yml.j2 z Node Exportera i ponownie, zmień nazwę i dostosuj do swoich potrzeb.
  3. Dostosuj meta/main.yml: dodaj tag, zmień opis jeśli to konieczne.
  4. Zaktualizuj README.md.

Moduł promtail dla nowej aplikacji

Aby dodać kompatybilność dla aplikacji, która nie jest jeszcze obsługiwana, zrób:

  1. Zadeklaruj ją w monitoring_promtail_modules_available. Ścieżka logów zależy od aplikacji, nazwę szablonu ustalasz tutaj.
  2. Skopiuj templates/promtail-config-apps/odoo-role.j2 do tej samej lokalizacji, ale z nazwą pliku new-app.j2.
  3. Edytuj szablon w zależności od aplikacji. Zobacz oficjalną dokumentację.
    • Możesz przetestować regex na regexr w trybie "serwera" lub regex101.com. Umieść komentarz z kilkoma wpisami logów dla jasności, to pomoże przyszłym czytelnikom regex.
    • Ustaw etap labels, aby określić, które etykiety są eksportowane do Lokiego spośród wszystkich zebranych.
    • Ustaw etap timestamp, aby oznaczyć linię logu rzeczywistym czasem, a nie czasem, w którym promtail ją zebrał.
      • Włącz milisekundy tylko jeśli to możliwe. Golang rozumie tylko kropkę '.' jako separator dziesiętny. Jeśli Twoja aplikacja używa ',', nie działa. Zobacz problem golanga #6189.
      • Dodaj strefę czasową albo przez parsowanie, jak w backups-role.j2, albo ręcznie, jak w odoo-role.j2.
    • Opcjonalnie, dodaj etap match, jeśli chcesz odrzucić wpisy, które nie pasują do Twojego regex.
O projekcie

Install Prometheus and Loki exporters to monitor your project instances

Zainstaluj
ansible-galaxy install coopdevs.monitoring_role
Licencja
Unknown
Pobrania
22.4k
Właściciel
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.