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/04/29 15:45] – ↷ Page déplacée de technique:adminsys:monitoring:metrologie:collect:service_metrics à technique:adminsys:monitoring:collect:service_metrics qduchemitechnique: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 31: Ligne 31:
  
 <bootnote critical> <bootnote critical>
-Les identifiants générés pour `/metrics` sont placés dans le dossier `Tech/Prometheus-Exporters-Auth` du [[technique:adminsys:secu:password_store:start|pass]].+Les identifiants générés pour `/metrics` sont placés dans le dossier `Tech/Prometheus-Exporters-Auth` du [[asso:tuto:vaultwarden|vaultwarden]].
 </bootnote> </bootnote>
 ===== Configuration vmagent ===== ===== Configuration vmagent =====
  
-Du côté de ''vmagent'' il faut préciser les identifiants en question dans [[https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-metrologie/vmagent-prom.yml|le fichier de configuration Prometheus]]. Pour chaque configuration de service, l'objet ''basic_auth'' permet de spécifier que l'exporter nécessite une uathentification Basic. Par exemple pour notre cas (des champs ont été retirés pour se concentrer sur ce qui nous intéresse) :+Du côté de ''vmagent'' il faut préciser les identifiants en question dans [[https://gitlab.utc.fr/picasoft/projets/services/monitoring/-/blob/master/vmagent-prom.yml|le fichier de configuration Prometheus]]. Pour chaque configuration de service, l'objet ''basic_auth'' permet de spécifier que l'exporter nécessite une uathentification Basic. Par exemple pour notre cas (des champs ont été retirés pour se concentrer sur ce qui nous intéresse) :
  
 ```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 63: Ligne 63:
 ``` ```
  
-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/dockerfiles/-/blob/master/pica-metrologie/secrets/exporters-auth.secrets.example|fichiers de secrets]] que l'on utilise dans notre //repository// [[https://gitlab.utc.fr/picasoft/projets/dockerfiles|dockerfiles]]. On charge ensuite [[https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/master/pica-metrologie/secrets/exporters-auth.secrets.example|le fichier de variables]] dans [[https://gitlab.utc.fr/picasoft/projets/dockerfiles/-/blob/5c3c81eece4dc0f3832d982ca23bdeeabab68cff/pica-metrologie/docker-compose.yml#L67|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.1651239950.txt.gz
  • de qduchemi