Optimisation du graphique dynamique
Le graphique dynamique est un modèle de votre application qui comprend toutes les dépendances physiques et logiques des composants tels que l'hôte, le système d'exploitation, la machine virtuelle Java, le noeud Cassandra , MySQL, etc. Le graphique inclut également des composants logiques tels que des traces, des applications, des services, des clusters et des espaces de table. Les composants et leurs dépendances sont automatiquement détectés par notre agent et nos capteurs, ce qui signifie que le graphique est tenu à jour en temps réel.
Chaque noeud du graphique est également mis à jour en permanence avec des informations d'état telles que des métriques, des données de configuration et une valeur de santé calculée sur la base de connaissances sémantiques et d'une approche d'apprentissage automatique. Cette connaissance analyse également les dépendances dans le graphique pour trouver des regroupements logiques, comme les services et les applications, pour comprendre l'impact à ce niveau et en déduire la criticité des problèmes. L'ensemble du graphique est persistant, ce qui signifie que l'application Instana peut faire des allers-retours dans le temps pour exploiter l'ensemble de la base de connaissances du graphique pour de nombreux cas d'utilisation opérationnelle.
Sur la base du graphique dynamique, nous calculons l'impact des changements et des problèmes sur l'application ou le service et, si l'impact est critique, nous combinons un ensemble de problèmes et de changements corrélés en un incident. Un incident montre comment les problèmes et les changements évoluent dans le temps, ce qui permet à Instana de mettre directement le doigt sur la cause première de l'incident. Tout changement est alors automatiquement découvert et nous calculons son impact sur les nœuds environnants. Un changement peut être une dégradation de la santé (que nous appelons un "problème"), un changement de configuration, un déploiement ou l'apparition / la disparition d'un processus, d'un conteneur ou d'un serveur.
Concrètement, voyons comment nous pourrions modéliser et comprendre une application simple qui utilise un cluster Elasticsearch pour rechercher un produit à l'aide d'une interface Web. Il pourrait en fait s'agir d'un simple micro-service, mais cela montre comment nous comprenons les clusters et les dépendances dans Instana.
Applications dynamiques
Développons un modèle du graphique dynamique pour un cluster Elasticsearch afin de comprendre comment cela fonctionne et pourquoi cela est utile dans des environnements distribués et fluides.
Nous commençons avec un seul nœud Elasticsearch, qui est techniquement une application Java, de sorte que le graphique ressemble à ceci :
Les nœuds montrent les composants découverts automatiquement sur l'hôte et leurs relations. Pour un nœud Elasticsearch, nous découvririons une machine virtuelle Java, un processus, un conteneur Docker (si le noeud s'exécute à l'intérieur d'un conteneur) et l'hôte sur lequel il s'exécute. S'il s'exécute dans un environnement cloud comme Amazon AWS, nous découvrirons également sa zone de disponibilité et ajoutons cela au graphique.
Chaque noeud possède des propriétés (par exemple, JVM_Version=1.7.21) et toutes les mesures pertinentes en temps réel, par exemple les statistiques d'E-S et de réseau de l'hôte, les statistiques de récupération de place de la machine virtuelle Java et le nombre de documents indexés par le noeud ES.
Les bords entre les noeuds décrivent leurs relations. Dans ce cas, il s'agit de relations "runs on". Par exemple, le noeud ES "runs on" (s'exécute sur) la machine virtuelle Java.
Pour un cluster Elasticsearch, nous aurions plusieurs nœuds qui construisent le cluster.
Dans ce cas, nous avons ajouté un noeud de cluster au graphique qui représente l'état et la santé de l'ensemble du cluster. Ce noeud a des dépendances sur les quatre noeuds Elasticsearch qui constituent le cluster.
L'unité logique d'Elasticsearch est l'index. L'index est utilisé par les applications pour accéder aux documents dans Elasticsearch. Il est physiquement structuré dans des fragments qui sont distribués aux noeuds ES du cluster.
Nous ajoutons l'index au graphique pour comprendre les statistiques et la santé de l'index utilisé par les applications.
En outre, nous supposons que nous accédons à l'index Elasticsearch avec une simple application Spring Boot.
Le graphique inclut maintenant l'application Spring Boot.
Comme le capteur Java d'Instana enregistre les traces distribuées, Instana saura si l'application Spring Boot accède à un index Elasticsearch. Nous mettons ces traces en corrélation avec les composants logiques du graphique et suivons les statistiques et la santé des différentes traces.
Grâce à ce graphique, nous pouvons comprendre les différents problèmes d'Elasticsearch et montrer comment nous analysons l'impact sur la santé globale du service.
Supposons que nous ayons deux problèmes différents :
- Un problème d'entrée/sortie sur un hôte qui entraîne un ralentissement de la lecture/écriture sur les données d'index/de partition.
- Le pool d'unités d'exécution d'un noeud Elasticsearch est surchargé de sorte que les demandes sont mises en file d'attente car elles ne peuvent être traitées tant qu'une unité d'exécution n'est pas libre.
Dans ce cas, l'hôte (1) commence à avoir des problèmes d'entrée-sortie. Notre service de renseignement de santé afficherait la santé de l'hôte en jaune, puis transmettrait le problème à notre système de suivi. Quelques minutes plus tard, le nœud ES (Elasticsearch) (2) en serait affecté, et notre service de renseignement de santé constaterait que le débit de ce nœud est dégradé à un niveau tel que nous le marquerions en jaune - ce qui déclencherait un nouveau problème. Notre moteur corrélerait ensuite les deux problèmes et les ajouterait à un incident, qui ne serait pas marqué comme problématique, car dans ce cas, la santé du cluster est toujours bonne afin que la qualité du service ne soit pas affectée.
Ensuite, sur un autre noeud ES (3), le pool d'unités d'exécution utilisé pour le traitement des requêtes est rempli et les requêtes sont regroupées. Comme les performances sont fortement affectées par cette situation, notre moteur marque le statut du noeud en rouge. Cela a des effets sur le cluster ES (4), qui passe au jaune, car le débit diminue. Les deux problèmes générés sont agrégés à l'incident initial.
Etant donné que le cluster affecte les performances de l'index (5), nous marquons l'index en jaune et ajoutons le problème à l'incident. Maintenant, la performance des transactions de recherche de produits est affectée, et notre analyse de la santé de la performance marquera la transaction en jaune (6), ce qui affecte également la santé de l'application (7).
Comme l'application et la transaction sont toutes deux affectées, notre incident se déclenchera avec un statut jaune indiquant que les performances de recherche du produit diminuent et que les utilisateurs sont affectés. Le chemin vers les deux causes profondes est mis en évidence - le problème des E/S et le problème du pool d'unités d'exécution. Comme on peut le voir sur la capture d'écran, Instana montre l'évolution de l'incident, et l'utilisateur peut explorer les composants au moment où le problème s'est produit - y compris l'environnement historique exact et les métriques à ce moment-là.
Cela montre bien les capacités uniques d'Instana :
- Combinaison d'informations physiques, de processus et de trace à l'aide du graphique pour comprendre leurs dépendances.
- Intelligence permettant de comprendre la santé des composants individuels, mais aussi la santé des clusters, des applications et des traces.
- Analyse d'impact intelligente pour comprendre si un problème est critique ou non.
- Capacité de montrer la cause profonde d'un problème et de fournir des informations et un contexte permettant de prendre des mesures.
- Conservation de l'historique du graphique, de ses propriétés, des mesures, des changements et des problèmes, et fonction de "décalage temporel" pour analyser un problème donné avec une vue claire de l'état et des dépendances de tous les composants.
Trouver les causes profondes dans les environnements modernes constituera un défi de plus en plus important dans les années à venir. L'exemple simple ci-dessus a montré que trouver la cause première n'est pas une tâche triviale si on ne comprend pas le contexte, les dépendances et l'impact. Pensez maintenant à des systèmes "liquides" basés sur des micro-services qui ajoutent et suppriment des services en permanence et dont les nouvelles versions sont fréquemment mises en ligne. Instana suit l'état et la santé en temps réel et comprend l'impact de ces changements ou problèmes. Tout cela sans aucune configuration manuelle et en temps réel.
Utilisation
Le graphique dynamique est créé et mis à jour automatiquement. La définition de certains composants, tels que les services, peut être précisée via la configuration de service.
La traversée de graphiques et la portée peuvent être réalisées à l'aide de notre puissante fonction de mise au point dynamique .