coopdevs.monitoring_role

Rôle de surveillance Rôle Ansible

Un rôle Ansible pour maintenir les outils de surveillance de l'écosystème Grafana.

Utilise Docker pour installer les exportateurs Prometheus et Loki :

  • nodeexporter : exportateur Prometheus qui collecte des données générales sur l'état d'un hôte.
  • postgresexporter : exportateur Prometheus qui surveille l'état du serveur PostgreSQL.
  • promtail : l'exportateur principal pour Loki, un serveur de logs similaire à Prometheus et compatible avec Grafana.

Ce rôle prend en charge certaines applications avec leur format de logging par défaut :

De plus, il supporte un exportateur personnalisé qui expose les utilisateurs actifs dans le système.

Utilisation de ce rôle

Variables publiques

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"

Utilisateurs actifs

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

Variables secrètes

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"

Exemples de playbooks

Odoo avec promtail

# playbooks/odoo-promtail.yml
---
- name: Installer Odoo avec surveillance des logs
  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 avec métriques système

# playbooks/postgres-nexporter.yml
---
- name: Installer un serveur de base de données avec des métriques système exposées
  hosts: servers
  become: yes
  roles:
    - role: geerlingguy.postgresql
    - role: coopdevs.monitoring_role
      vars:
        monitoring_nexporter_enabled: true
        monitoring_promtail_enabled: false

Sécurité

Ce rôle expose, via un serveur HTTP, de nombreuses données qui pourraient être exploitées. Par défaut, il écoute sur une adresse de boucle locale, donc non publique depuis Internet.

Cependant, vous voudrez probablement qu'un serveur Prometheus externe récupère ces données régulièrement. Dans ce but, et pour protéger les données, un certain type d'authentification du serveur Prometheus envers l'hôte est nécessaire.

Une approche consiste à laisser les exportateurs liés à localhost, puis à configurer un proxy inverse devant eux avec une authentification de base, en utilisant Nginx. La gestion de cette configuration et des clés impliquées sort du cadre de ce rôle.

Extension

Un exportateur prometheus

Pour ajouter un nouvel exportateur prometheus :

  1. Copiez la section defaults/main.yml de Node Exporter dans le même fichier et remplacez tous les termes nexporter par le vôtre, par exemple, someexporter.
  2. Copiez la section templates/monitoring-docker-compose.yml.j2 de Node Exporter et renommez-la et adaptez-la à vos besoins.
  3. Adaptez meta/main.yml : ajoutez une étiquette, modifiez la description si nécessaire.
  4. Mettez à jour README.md.

Un module promtail pour une nouvelle application

Pour ajouter la compatibilité pour une application qui n'est pas encore supportée, faites :

  1. Déclarez-la dans monitoring_promtail_modules_available. Le chemin des logs dépend de l'application, le nom du modèle que vous décidez ici.
  2. Copiez le templates/promtail-config-apps/odoo-role.j2 dans le même répertoire mais avec le nom de fichier new-app.j2.
  3. Modifiez le modèle en conséquence pour votre application. Consultez la documentation officielle.
  • Vous pouvez tester les regex sur regexr en "mode serveur" ou regex101.com. Incluez un commentaire avec quelques entrées de logs pour plus de clarté, cela aidera les futurs lecteurs des regex.
  • Définissez l'étape labels pour indiquer les étiquettes exportées vers Loki, parmi toutes celles collectées.
  • Définissez l'étape timestamp pour horodater la ligne de log avec l'heure réelle au lieu du moment où promtail l'a récupéré.
    • Incluez les millisecondes uniquement si possible. Golang ne comprend que le point '.' comme séparateur décimal. Si votre application utilise ',', ce n'est pas le cas. Consultez le problème golang #6189.
    • Incluez le fuseau horaire soit par le parsing comme dans backups-role.j2, soit manuellement comme dans odoo-role.j2.
  • Optionnellement, incluez une étape match si vous voulez supprimer les entrées qui ne correspondent pas à votre regex.
À propos du projet

Install Prometheus and Loki exporters to monitor your project instances

Installer
ansible-galaxy install coopdevs.monitoring_role
Licence
Unknown
Téléchargements
22.4k
Propriétaire
Coopdevs, Free and Open Source Software for Social and Solidarity Economy.