⚙️ Traefik 2, des métriques pour Prometheus
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.
Version | Date | Commentaires |
---|---|---|
1 | 05/2022 | Création du document |
1.1 | 05/2023 | Mise à jour des versions, correction syntaxique, ajout du contexte d'exécution |
1.2 | 08/2023 | Mise à jour des versions |
Objectif : Configurer le point d'entrée de supervision de Traefik et configurer Prometheus.
Environnement : Debian 12
, Docker 24.x
, docker compose (plugin) 2.20.x
, Traefik 2.10
.
Contexte d'exécution :
- 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 4 moyens de supervision : Datadog, Metricd, Prometheus et InfluxDB.
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é) :
entryPoints:
metrics:
address: ":9090"
En fin de fichier, ajoutez ce bloc entièrement (format 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
:
---
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
swarmMode: false
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
:
...
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_
.