Netflix Hystrix permet d'effectuer du monitoring et de la gestion d'erreurs sur les services et les applications dans le Cloud. Il dispose d'un tableau de bord qui présente les graphes et les métriques sur l'état des services dans le cloud.
Netflix Turbine sert à aggréger dans le temps les données envoyées par les clients Hystrix et transmet ces données au serveur Hystrix pour afficher le dashboard.
Nous allons voir dans cet article la mise en place du dashboard Hystrix pour voir les métriques sur les accès aux services Rest d'une application basée sur Spring Boot à l'aide de Spring Cloud Netflix.
Création du serveur Hystrix
Nous créons un nouveau projet Spring Boot:- Aller sur le site Spring Initializr:
- http://start.spring.io/
- Renseigner les informations du projet avec comme nom "spring-hystrix-server" par exemple
- Ne pas sélectionner de dépendances
- Cliquer sur "Generate project" pour télécharger le projet basé sur Spring Boot
- Dézipper le projet
- Dans le fichier pom.xml, remplacer le parent et ajouter les dépendances suivantes :
- Dans la classe principale
Application.java
, ajouter l'annotation@EnableHystrixDashboard
- Créer le fichier
application.yml
dans le répertoiresrc/main/resources
: - Démarrer le serveur:
mvn spring-boot:run
- URL du dashboard Hystrix:
Il n'y a pas encore de statistiques à afficher: nous allons configurer les applications pour qu'elles envoient des métriques au serveur Turbine et Hystrix.
Application cliente: activation de Hystrix
Nous partons du principe que l'application cliente est basée sur Spring Boot.Voici les étapes pour activer Hystrix sur cette application cliente:
- Ajouter dans le
pom.xml
, le parent et la dépendance suivants: - Dans la classe principale
Application.java
, ajouter l'annotation@EnableHystrix
: - Dans les classes des contrôleurs des services Rest, ajouter l'annotation
@HystrixCommand
sur les méthodes. - Par exemple:
- Démarrer le serveur de l'application
- Ouvrir l'URL suivante:
- http://localhost:8080/hystrix.stream
- Il n'affiche pour l'instant que les messages :
ping:
- Effectuer l'appel à un des services REST de l'application
- Accéder de nouveau à l'URL:
- http://localhost:8080/hystrix.stream
- Maintenant cette URL retourne des informations:
Afficher les statstiques sur le dashboard de Hystrix
- Aller sur la page du Dashboard de Hystrix:
- Saisir l'URL:
http://localhost:8080/hystrix.stream
- Cliquer sur Monitor Stream
- Le dashboard s'affiche
- Accéder à un des services Web de l'application monitorée
- Le dashboard se met à jour et affiche des statistiques sur les accès aux services REST de l'application:
Conclusion
Nous venons de voir commet afficher un dashboard pour une application.Pour créer un dashboard sur un groupe d'applications et de services, il est nécessaire de mettre en place un serveur Turbine pour agréger leurs métriques. Hystrix va ensuite interroger Turbine sur un flux en particulier pour obtenir les métriques de ce groupe. Turbine doit alors connaître chaque application pour récupérer leurs métriques.
Hystrix permet également de gérer les erreurs que nous verrons dans un second article.