Des métriques pour Prometheus avec Traefik

Traefik dispose d'un point d'entrée de supervision, conçu pour Prometheus. Découvrez comment le mettre en place et l'exploiter.

Lorsque Traefik est mis en place et que vos routeurs/services sont configurés, il est toujours pertinent d’ajouter de la supervision. Des métriques sont mises à disposition (après configuration) pour être monitoré via Prometheus.

Objectif: Configurer le point d’entrée de supervision de Traefik et configurer Prometheus.

Environnement: Debian 13, Docker 28.x, docker compose (plugin) 2.32.x, Traefik 3.6.

Contexte d’exécution:

bash
jho@vmi866042:/opt/docker/dc$ tree
.
├── conf
│   ├── acme.json
│   ├── traefik.yml
│   ├── traefikdynamic
│   │   ├── dynamic.yml
├── docker-compose.yml
└── logs
    ├── traefikAccess.log
    ├── traefik.log

Résultat de la commande “tree” dans le dossier /opt/docker/dc

  • dossier où se trouvent tous les fichiers et dossiers pour cet exemple : /opt/docker/dc
  • emplacement du fichier de configuration principal de Traefik : /opt/docker/dc/conf/traefik.yml
  • dossier où se trouvent les configurations de Traefik (fichiers dynamiques) : /opt/docker/dc/conf/traefikdynamic
  • emplacement du fichier comportant tous les certificats générés par Let’s Encrypt (ou autre) : /opt/docker/dc/conf/acme.json
  • dossier où se trouvent les journaux d’événements (logs) : /opt/docker/dc/logs/

L’inspiration de cette documentation provient directement du site officiel . Traefik supporte plusieurs moyens de supervision : Datadog, StatsD, Prometheus, InfluxDB v2, OpenTelemetry et d’autres. Les métriques permettent d’avoir des informations pertinentes et en (quasi) temps réel comme notamment des statistiques sur le nombre de rechargements de la configuration, le nombre de requêtes d’entrée sur HTTP / HTTPS, le nombre de redirections, le nombre de connexions ouvertes…

Configuration de Traefik#

Ici, j’utiliserai Prometheus pour récupérer les métriques et les stocker localement. Pour ce faire, le fichier traefik.yml doit être modifié pour intégrer quelques nouveaux paramètres. Au niveau des entrypoints, insérez simplement ce bloc (le numéro de port peut être changé) :

yaml
entryPoints:
  metrics:
    address: ":9090"

En fin de fichier, ajoutez ce bloc entièrement (format YAML) :

yaml
metrics:
  prometheus:
    entryPoint: metrics
    addEntryPointsLabels: true
    addServicesLabels: true
    addRoutersLabels: true
    buckets:
      - 0.1
      - 0.3
      - 1.2
      - 5.0

N’oubliez pas de redémarrer Traefik pour prendre en compte les modifications. ATTENTION à ne pas exposer au web le port de l’entrypoint “metrics” !

Contenu complet du fichier traefik.yml :

bash
---
global:
  sendAnonymousUsage: false
  checkNewVersion: false

api:
  dashboard: true

log:
  filePath: "/etc/traefik/applog.log"
  format: json
  level: "ERROR"

providers:
  docker:
    endpoint: unix:///var/run/docker.sock
    exposedByDefault: false
    watch: true
  file:
    directory: "/dynamic"
    watch: true

entryPoints:
  web:
    address: ":80"
    http:
      redirections:
        entryPoint:
          to: websecure
          scheme: https
  websecure:
    address: ":443"
  metrics:
    address: ":9090"

metrics:
  prometheus:
    entryPoint: metrics
    addEntryPointsLabels: true
    addServicesLabels: true
    addRoutersLabels: true
    buckets:
      - 0.1
      - 0.3
      - 1.2
      - 5.0

Configuration pour Prometheus#

Simplement, ajoutez ce bloc dans votre fichier prometheus.yml :

yaml

...
scrape_configs:
  - job_name: "traefik"
    static_configs:
      - targets: ["traefik:9090"]

N’oubliez pas de remplacer le numéro de port si vous l’avez modifié dans le fichier traefik.yml. Désormais, il vous est possible de scraper Traefik grâce à Prometheus. Toutes les métriques Traefik dans Prometheus sont intitulées traefik_.

Source

Restez informé

Abonnez-vous au flux RSS ou suivez pour les nouveaux articles.

Articles similaires

Aucune image
#traefik

Utiliser le binaire de Traefik sans docker

Cet article décrit l'installation et la configuration de Traefik pour être utilisé en mode binaire, sans docker et sans être un conteneur.

Lire l'article

Derniers dans #supervision