Dans le monde actuel des systèmes distribués et des microservices, garantir que notre application est observable et contrôlable est tout aussi important que de créer la fonctionnalité de base. Nous avons déjà mis en place des fonctionnalités critiques comme un équilibreur de charge NGINX, un limiteur de débit et un disjoncteur, la prochaine étape consiste à nous concentrer sur observabilité et suivi.
Dans cet article de blog, nous expliquerons comment ajouter Spring Boot Actuator, Prometheus et Grafana à notre application pour créer une observabilité robuste empiler. Cela nous aidera à visualiser l’état de santé de notre application, à suivre les mesures de performances et à résoudre les problèmes rapidement et efficacement.
L'observabilité fait référence à votre capacité à comprendre l'état interne d'un système en fonction des données qu'il produit. Les trois piliers de l'observabilité sont :
En nous concentrant sur les métriques et journaux, nous pouvons créer des tableaux de bord et des alertes puissants qui garantissent que votre application reste performante et fiable.
Notre architecture applicative actuelle comporte déjà des composants essentiels :
Cependant, bien que ces outils améliorent les performances et la fiabilité, ils ne nous disent pas pourquoi quelque chose pourrait échouer ni comment notre système fonctionne sous charge. Les outils d'observabilité tels que Actuator, Prometheus et Grafana :
Ajoutez à votre fichier pom.xml ces dépendances :
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
Mettez à jour les configurations de votre application.properties
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus
Cette ligne expose l'URI de l'actionneur, nous pouvons donc consommer des URI comme :
Dans notre fichier docker-compose.yaml, nous créons un service pour prometheus :
<dependency> <groupId>io.github.resilience4j</groupId> <artifactId>resilience4j-micrometer</artifactId> <version>2.2.0</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-prometheus</artifactId> <version>1.14.1</version> </dependency>
À la racine de votre projet, créez un dossier appelé prometheus et à l'intérieur un fichier appelé prometheus.yaml
resilience4j.circuitbreaker.metrics.enabled=true management.health.circuitbreakers.enabled=true management.endpoints.web.exposure.include=health,metrics,circuitbreakers,prometheus management.endpoint.health.show-details=always management.endpoint.health.access=unrestricted management.endpoint.prometheus.access=unrestricted management.prometheus.metrics.export.enabled=true
Maintenant, quand on court :
prometheus: image: prom/prometheus:latest ports: - "9090:9090" networks: - app_network volumes: - ./prometheus/prometheus.yaml:/etc/prometheus/prometheus.yml - prometheus_data:/prometheus
Un conteneur Prometheus démarrera et consommera les métriques de l'actionneur URI/les métriques de nos serveurs spring-boot.
Nous pouvons voir un tableau de bord sur http://localhost:9090/, par exemple :
Mais ce n’est pas cool. Nous voulons voir des graphiques, et pour cela nous utilisons Grafana.
Mettez à jour votre fichier Docker Compose avec un autre service :
global: scrape_interval: 15s evaluation_interval: 15s scrape_configs: - job_name: 'spring-boot-app' metrics_path: '/actuator/prometheus' static_configs: - targets: - 'spring-server-1:8080' - 'spring-server-2:8080' labels: environment: development application: spring-boot
Vous pouvez désormais accéder au tableau de bord grafana sur http://localhost:3000
D'abord, ils vous demanderont vos informations d'identification, écrivez simplement à l'administrateur l'utilisateur et le mot de passe.
Dans le menu de gauche, accédez à Connexions > ajoutez une nouvelle connexion et recherchez Prometheus
Configurez l'url de connexion comme ceci :
Cliquez sur le bouton enregistrer & tester, si tout va bien vous pouvez commencer à choisir votre tableau de bord.
Accédez aux tableaux de bord Grafana et choisissez un tableau de bord pour vous.
Pour cela, je choisis le disjoncteur Spring Boot Resilience4j (3.x)
Si tout fonctionne bien, vous verrez quelque chose comme ceci :
N'hésitez pas à parcourir d'autres tableaux de bord.
En intégrant Actuator, Prometheus et Grafana dans notre application, nous avons franchi une étape majeure vers la création d'un système hautement observable. Avec les métriques, la journalisation et la surveillance en place, vous pourrez :
Avec ces outils en place, nous allons non seulement surveiller efficacement notre système, mais également jeter les bases d'une évolution en toute confiance à l'avenir.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!