Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
technique:adminsys:monitoring:collect:service_metrics [2022/09/23 10:19] – modification externe 127.0.0.1technique:adminsys:monitoring:collect:service_metrics [2023/12/29 17:45] (Version actuelle) – Ajout procédure mots de passe limaanto
Ligne 9: Ligne 9:
  
 Du côté de Traefik, on va simplement se baser sur le middleware [[https://doc.traefik.io/traefik/middlewares/basicauth/|Basic Auth]]. Il permet d'activer une authentification Basic sur un //router// Traefik spécifique.   Du côté de Traefik, on va simplement se baser sur le middleware [[https://doc.traefik.io/traefik/middlewares/basicauth/|Basic Auth]]. Il permet d'activer une authentification Basic sur un //router// Traefik spécifique.  
-Prenons l'exemple d'un service Web classique, ici CodiMD+Prenons l'exemple d'un service Web classique, ici Hedgedoc
  
-Dans notre cas, un exporter Prometheus écoute sous le chemin ''/metrics/codimd'' du service, et un autre sous ''/metrics/router''. On veut donc que tout le trafic vers ce service pour le chemin commençant par ''/metrics'' soit soumis à une authentification Basic de Traefik. Pour cela on créé un second //routeur//. Les labels appliqués sur le conteneur pour exposer le service sont ainsi les suivants :+Dans notre cas, un exporter Prometheus écoute sous le chemin ''/metrics/hedgedoc'' du service, et un autre sous ''/metrics/router''. On veut donc que tout le trafic vers ce service pour le chemin commençant par ''/metrics'' soit soumis à une authentification Basic de Traefik. Pour cela on créé un second //routeur//. Les labels appliqués sur le conteneur pour exposer le service sont ainsi les suivants :
  
 ```yaml ```yaml
 traefik.enable: true traefik.enable: true
-traefik.http.routers.codimd-app.entrypoints: websecure +traefik.http.routers.hedgedoc-app.entrypoints: websecure 
-traefik.http.routers.codimd-app.rule: Host(`md.picasoft.net`) +traefik.http.routers.hedgedoc-app.rule: Host(`md.picasoft.net`) 
-traefik.http.routers.codimd-app.service: codimd-app +traefik.http.routers.hedgedoc-app.service: hedgedoc-app 
-traefik.http.routers.codimd-metrics.entrypoints: websecure +traefik.http.routers.hedgedoc-metrics.entrypoints: websecure 
-traefik.http.routers.codimd-metrics.rule: "Host(`md.picasoft.net`) && PathPrefix(`/metrics`)" +traefik.http.routers.hedgedoc-metrics.rule: "Host(`md.picasoft.net`) && PathPrefix(`/metrics`)" 
-traefik.http.routers.codimd-metrics.service: codimd-app +traefik.http.routers.hedgedoc-metrics.service: hedgedoc-app 
-traefik.http.routers.codimd-metrics.middlewares: "codimd-metrics-auth@docker" +traefik.http.routers.hedgedoc-metrics.middlewares: "hedgedoc-metrics-auth@docker" 
-traefik.http.middlewares.codimd-metrics-auth.basicauth.users: "test:$$apr1$$waO5zvqJ$$jrty/RULcxryemeBmH3RU0+traefik.http.middlewares.hedgedoc-metrics-auth.basicauth.users: "${METRICS_AUTH}
-traefik.http.services.codimd-app.loadbalancer.server.port: 3000+traefik.http.services.hedgedoc-app.loadbalancer.server.port: 3000
 ``` ```
  
Ligne 38: Ligne 38:
  
 ```yaml ```yaml
-  - job_name: codimd +  - job_name: hedgedoc 
-    metrics_path: "/metrics/codimd"+    metrics_path: "/metrics/hedgedoc"
     scheme: "https"     scheme: "https"
     basic_auth:     basic_auth:
-      username: codimd+      username: hedgedoc
       password: monpassword       password: monpassword
     static_configs:     static_configs:
Ligne 52: Ligne 52:
  
 ```yaml ```yaml
-  - job_name: codimd +  - job_name: hedgedoc 
-    metrics_path: "/metrics/codimd"+    metrics_path: "/metrics/hedgedoc"
     scheme: "https"     scheme: "https"
     basic_auth:     basic_auth:
-      username: "%{CODIMD_METRICS_USER}" +      username: "%{HEDGEDOC_METRICS_USER}" 
-      password: "%{CODIMD_METRICS_PASSWORD}"+      password: "%{HEDGEDOC_METRICS_PASSWORD}"
     static_configs:     static_configs:
       - targets:       - targets:
Ligne 64: Ligne 64:
  
 Il ne reste plus que à fournir les 2 variables d'environnement en question à ''vmagent''. Pour cela on utilise le même mécanisme de [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/master/secrets/exporters-auth.secrets.example|fichiers de secrets]] que l'on utilise dans nos autres dépôts. On charge ensuite [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/master/secrets/exporters-auth.secrets.example|le fichier de variables]] dans [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/a502c35154b62f11da6e0a6bba544ccda295cc61/docker-compose.yml#L69|le conteneur vmagent]]. Il ne reste plus que à fournir les 2 variables d'environnement en question à ''vmagent''. Pour cela on utilise le même mécanisme de [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/master/secrets/exporters-auth.secrets.example|fichiers de secrets]] que l'on utilise dans nos autres dépôts. On charge ensuite [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/master/secrets/exporters-auth.secrets.example|le fichier de variables]] dans [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/a502c35154b62f11da6e0a6bba544ccda295cc61/docker-compose.yml#L69|le conteneur vmagent]].
 +
 +## Génération du mot de passe
 +
 +Après avoir créé l'utilisateur pour le service (ici `hedgedoc` par exemple), on sauvegarde le mot de passe dans le dossier `Tech/Prometheus-Exporters-Auth` du [[asso:tuto:vaultwarden|vaultwarden]].
 +
 +Ce mot de passe peut être donné en clair côté monitoring via la variable d’environnement `HEDGEDOC_METRICS_PASSWORD`. Cependant, traefik s'attendant à un [format particulier](https://doc.traefik.io/traefik/middlewares/http/basicauth/#configuration-examples) de la forme `hedgedoc:$$apr1$$waO5zvqJ$$jrty/RULcxryemeBmH3RU0`, il faut d'abord le transformer.
 +Pour cela on exécutera la commande suivante
 +
 +```sh
 +htpasswd -nb $HEDGEDOC_METRICS_USER $HEDGEDOC_METRICS_PASSWORD
 +```
 +
 +Dont la sortie peut être mise dans la variable d'environnement `METRICS_AUTH`
  • technique/adminsys/monitoring/collect/service_metrics.1663921191.txt.gz
  • de 127.0.0.1