13 mars 2015

Netflix Hystrix Dashboard - Monitoring du cloud


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épertoire src/main/resources:
  • Démarrer le serveur:
  • mvn spring-boot:run
Hystrix Dashboard demande l'URL d'un flux Hystrix pour en afficher les statistiques.

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:
Nous allons pouvoir afficher ces informations dans le Dashboard de Hystrix.

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:
Le circuit est marqué fermé ("closed") ce qui indique que le service répond correctement.

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.

Références