Pourquoi Kibana indique-t-il un état rouge sur mon domaine Amazon Elasticsearch Service ?

Date de la dernière mise à jour : 11/08/2020

Kibana continue d'afficher un état rouge sur mon domaine Amazon Elasticsearch Service (Amazon ES). Quelle est la cause de ce problème, et comment puis-je le résoudre ?

Brève description

Kibana affiche un état vert lorsque toutes les vérifications d'état sont réussies sur l'ensemble des nœuds du cluster Elasticsearch. Si une vérification de l'état échoue, Kibana passe à l'état rouge. Celui-ci peut également s'afficher lorsque le service Amazon ES présente un statut de cluster rouge. L'état rouge de Kibana peut être dû aux raisons suivantes :

  • Un nœud échoue en raison d'un problème lié à une instance Amazon Elastic Compute Cloud (Amazon EC2) ou un volume Amazon Elastic Block Store (Amazon EBS). Pour plus d'informations sur les incidents de nœuds, consultez la section Pourquoi mon nœud Amazon Elasticsearch Service s'est-il bloqué ?
  • Vos nœuds ne disposent pas d'une mémoire suffisante.
  • Vous procédez à la mise à niveau d'Elasticsearch vers une version plus récente.
  • Les versions Kibana et Amazon ES ne sont pas compatibles.
  • Un cluster à nœud unique s'exécute avec une charge importante et aucun nœud principal dédié (ou celui-ci est inaccessible). Pour plus d'informations sur la façon dont Amazon ES augmente la stabilité du cluster, consultez la section Nœuds principaux dédiés.

Solution

Utilisez une ou plusieurs des méthodes suivantes pour résoudre le problème d'état rouge de Kibana sur un domaine Amazon ES.

Remarque : si le cluster Elasticsearch affiche une exception de disjoncteur, commencez par augmenter la limite du disjoncteur. À défaut, commencez par les autres méthodes proposées.

Ajuster les requêtes

Si vous exécutez des requêtes complexes, telles que de lourdes agrégations, ajustez-les afin d'optimiser les performances. Les pics soudains de consommation de la mémoire de segment peuvent être provoqués par les données de champ ou les structures de données utilisées pour les requêtes d'agrégation.

Inspectez les appels d'API suivants pour identifier la cause du pic, en remplaçant es-endpoint par votre point de terminaison de domaine Amazon ES :

$curl es-endpoint/_nodes/stats/breaker?pretty
$curl "es-endpoint/_nodes/stats/indices/fielddata?level=indices&fields=*"

Pour plus d'informations sur la gestion de l'utilisation de la mémoire, consultez les pages Tune for search speed (Ajuster la vitesse de recherche) et Limiting Memory Usage (Limiter l'utilisation de la mémoire) sur le site Web d'Elasticsearch.

Utiliser des nœuds principaux dédiés

Nous vous conseillons d'allouer trois nœuds principaux dédiés à chaque domaine Amazon ES. Pour plus d'informations sur l'amélioration de la stabilité des clusters, consultez l'article Get Started with Amazon Elasticsearch Service: Use Dedicated Master Instances to Improve Cluster Stability (Prise en main d'Amazon Elasticsearch Service : utilisation d'instances principales dédiées pour l'amélioration de la stabilité des clusters).

Augmenter les capacités du domaine

Pour accroître les capacités de votre domaine Amazon ES, augmentez le nombre de nœuds ou choisissez un type d'instance Amazon EC2 contenant une mémoire supérieure. Pour plus d'informations sur l'augmentation des capacités, consultez la section Comment augmenter la capacité de mon domaine Amazon Elasticsearch Service ?

Vérifier la distribution de votre partition

Vérifiez l'index d'ingestion de vos partitions pour confirmer qu'elles sont réparties uniformément entre tous les nœuds de données. Si vos partitions sont distribuées inégalement, un ou plusieurs des nœuds de données peuvent manquer d'espace de stockage.

Utilisez la formule suivante pour confirmer que les partitions sont distribuées uniformément :

Total number of shards = shards per node * number of data nodes

Par exemple, si l'index contient 24 partitions pour huit nœuds de données, vous devez avoir trois partitions par nœud. Pour plus d'informations sur le nombre de partitions, consultez l'article Get Started with Amazon Elasticsearch Service: How Many Shards Do I Need? (Prise en main d'Amazon Elasticsearch Service : de combien de partitions ai-je besoin ?).

Vérifier vos versions

Important : vos versions Kibana et Amazon ES doivent être compatibles.

Pour le confirmer, exécutez l'appel d'API suivant, en remplaçant es-endpoint par votre point de terminaison de domaine Amazon ES :

$curl es-endpoint/.kibana/config/_search?pretty

Remarque : si la commande échoue, il est possible que des problèmes de compatibilité existent entre Kibana et les versions d'Elasticsearch prises en charge. Pour plus d'informations sur les versions compatibles de Kibana et Elasticsearch, consultez la page Set Up Kibana (Configurer Kibana) sur le site Web d'Elasticsearch.

Surveiller les ressources

Configurez des alarmes Amazon CloudWatch qui vous informent lorsque l'utilisation des ressources dépasse un certain seuil. Par exemple, si vous avez défini une alarme dédiée à la mémoire de la machine virtuelle Java, prenez des mesures correctives avant d'atteindre une sollicitation de 100 %. Pour plus d'informations sur les alarmes CloudWatch, consultez la section Alarmes CloudWatch recommandées et l'article Improve the Operational Efficiency of Amazon Elasticsearch Service Domains with Automated Alarms Using Amazon CloudWatch (Amélioration de l'efficacité opérationnelle des domaines Amazon Elasticsearch Service avec des alarmes automatisées à l'aide d'Amazon CloudWatch).

Augmenter la limite du disjoncteur

Pour éviter que le cluster manque de mémoire, essayez d'augmenter la limite du disjoncteur de données parentes ou de champ. Pour plus d'informations sur les limites des disjoncteurs de données de champ, consultez la page Circuit Breaker (Disjoncteur) sur le site Web d'Elasticsearch.