Grafana Stack đ 4. DĂ©ploiement dâun Grafana
Dans lâarticle prĂ©cĂ©dent , nous avons collectĂ© les journaux de lâapplication Spring. Reste maintenant Ă restituer les mĂ©triques et les journaux de cette application. Pour cela, Grafana est lâapplication tout indiquĂ©e. Ce n’est pas pour rien que lâon a utilisĂ© tous les outils de la stack.
Les autres articles de la série :
- Observabilité avec Spring Boot 3
- Collecte des métriques avec OpenTelemetry
- Collecte des logs avec OpenTelemetry
- DĂ©ploiement dâun Grafana
Prérequis au déploiement
Docker Compose
Tout comme dans les articles précédents, il faut compléter le fichier docker-compose.yml
avec un nouveau service : Grafana
.
Service Grafana
Grafana est lâinterface de restitution des mĂ©triques et des logs que lâon a collectĂ©s jusque-lĂ . On peut aussi afficher les traces, mais câest pour de futurs articles. Commençons par dĂ©ployer le serveur Grafana sur le mĂȘme modĂšle de docker compose que les autres services.
Voilà la déclaration du service Grafana dans le compose.
services:
grafana:
image: grafana/grafana:10.0.3
user: '472'
restart: unless-stopped
environment:
GF_SECURITY_ADMIN_USER: admin
GF_SECURITY_ADMIN_PASSWORD: password
GF_USERS_ALLOW_SIGN_UP: false
logging:
driver: local
options:
max-size: 10m
volumes:
- grafana_data:/var/lib/grafana
- /opt/bw/grafana/provisioning/:/etc/grafana/provisioning/
networks:
metrics: {}
grafana: {}
networks:
metrics: {}
Il nây a pas de configuration particuliĂšre si ce nâest le compte administrateur de dĂ©part Ă configurer comme variable dâenvironnement. Le volume va permettre de conserver les rĂ©glages de dashboard et les comptes additionnels.
Le répertoire provisionning
va permettre de prĂ©charger des dashboards et de la configuration. Câest pratique, car cela va Ă©viter les actions manuelles pour l’ajout de dashboard par exemple. Mais les dashboard ajoutĂ©s via le provisionning ne sont pas modifiable. TrĂšs vite cela devient compliquĂ© Ă gĂ©rer et Ă tenir Ă jour, car dĂšs que les mĂ©triques Ă©voluent, il faut mettre Ă jour le dashboard dans le provisionning. Au final importer le dashboard normalement par lâinterface sâest avĂ©rĂ© dans mon cas plus simple Ă gĂ©rer.
472
est l’ID de lâutilisateur avec lequel grafana est lancĂ©e dans le container.
Dans les fichiers du gist associĂ©, vous trouverez aussi une configuration nginx pour placer un proxy devant le serveur grafana. Câest plus propre de ne pas brancher grafana directement sur le port 443 de la machine hĂŽte. Et cela permettra de simplifier les changements de configuration puisque câest docker qui sâoccupera de mapper les ports correctement.
Configuration des Dashboards
Pour afficher toutes les donnĂ©es que lâon a collectĂ©es avec Open Telemetry, on va dĂ©ployer trois dashboard Grafana. Un premier pour Spring, le second pour lâapplication, le dernier pour les mĂ©triques de lâhĂŽte collectĂ© par le plugin host
de Open Telemetry.
Le dashboard Spring est facile Ă trouvĂ© sur internet. Par contre, je nâai pas trouvĂ© de dashboard pour le plugin host
de otel donc jâen ai fait un depuis zĂ©ro.
Le dashboard pour lâapplication est strictement custom puisque les mĂ©triques le sont aussi. Mais il donne une bonne idĂ©e de comment intĂ©grer dans le mĂȘme Ă©cran, des mĂ©triques et des logs.
Lâensemble des fichiers de configuration modifiĂ©s sont disponibles sur github .
Conclusion
La plus grande partie de la stack est dĂ©ployĂ©e. Il est maintenant possible de suivre lâactivitĂ© de lâapplication et du serveur en temps rĂ©el. Il restera Ă dĂ©ployer Tempo pour les traces de lâapplication. Mais pour lâinstant, je nâai pas creusĂ© et je trouve la mise en place un peu compliquĂ©e et trĂšs intrusive. Surement, pour un prochain article, quand jâaurais trouvĂ© une façon de le faire plus simple.
La mise en place dâalerte sera aussi une chose Ă faire rapidement si vous ne voulez pas avoir a restĂ© collĂ© Ă lâĂ©cran H24.