Comment résoudre les problèmes liés aux journaux lents dans Amazon Elasticsearch Service ?

Dernière mise à jour : 26/08/2020

J'ai activé les journaux lents de recherche Elasticsearch pour mon domaine Amazon Elasticsearch Service (Amazon ES). Cependant, un message d'erreur s'affiche ou les journaux lents n'apparaissent pas dans mon groupe de journaux Amazon CloudWatch. Comment résoudre ce problème ?

Solution

Un message d'erreur s'affiche lorsque j'essaie de configurer des journaux lents

Si votre compte AWS compte plus de dix stratégies de ressources pour votre région, le message d'erreur suivant s'affiche dans Amazon CloudWatch Logs :

"Unable to create the Resource Access Policy - You have reached the maximum limit for number of Resource Access Policies for CloudWatch Logs. Please select an existing policy and edit it or delete an older policy and try again."

Pour résoudre ce message d'erreur, créez une stratégie de ressource qui inclut plusieurs groupes de journaux comme ceci :

{
    "Version": "2012-10-17",
    "Statement": [
        {
         "Effect": "Allow",
         "Principal": {
         "Service": "es.amazonaws.com"
        },
        "Action": [
         "logs:PutLogEvents",
         "logs:CreateLogStream"
        ],
        "Resource": [
         "ARN-Log-Group-1",
         "ARN-Log-Group-2",
         "ARN-Log-Group-3",
         "ARN-Log-Group-4"
        }
    ]
}

Remarque : la limite de stratégie AWS Identity and Access Management (IAM) ne peut pas être augmentée.

Je ne vois aucun journal lent fourni

Si vous ne voyez pas que vos journaux lents sont fournis à CloudWatch, vérifiez votre stratégie IAM ou vos seuils Amazon ES.

Dans la mesure où Amazon ES requiert l'autorisation d'écrire dans CloudWatch Logs, vous devez disposer de la stratégie IAM appropriée pour consigner vos requêtes. Pour mettre à jour votre stratégie IAM, accédez à Rechercher les journaux lents, puis choisissez Sélectionner l'installation. Votre stratégie IAM devrait ressembler à l'exemple suivant :

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "es.amazonaws.com"
      },
      "Action": [
        "logs:PutLogEvents",
        "logs:CreateLogStream"
      ],
      "Resource": "arn:aws:logs:us-east-1:588671893395:log-group:/aws/aes/domains/myes/search-logs:*"
    }
  ]
}

Veillez également à définir un seuil de synchronisation approprié pour votre domaine Amazon ES. Par exemple, si toutes vos demandes sont terminées avant le seuil défini, les journaux ne sont pas fournis à votre groupe de journaux.

Vous pouvez également définir des seuils de niveau INDEX individuels pour chaque niveau de débogage (TRACE, DEBUG, INFO et WARN). Dans l'exemple suivant, le seuil pour les niveaux de débogage WARN est défini sur dix secondes pour l'index YOURINDEXNAME dans Kibana :

PUT /YOURINDEXNAME/_settings{"index.search.slowlog.threshold.query.warn": "10s"}

Remarque : vous pouvez définir TRACE sur « 0 » milliseconde pour enregistrer toutes les requêtes pour votre domaine Amazon ES. Toutefois, la journalisation de toutes les requêtes peut affecter les performances du domaine Amazon ES, car il s'agit d'une opération gourmande en ressources.

Ensuite, vérifiez votre seuil à l'aide de la commande suivante :

GET/YOURINDEXNAME/_settings?pretty

Votre Amazon ES consigne toutes les requêtes qui dépassent le seuil défini.

Bonnes pratiques

  • Évitez d'apporter plusieurs modifications de configuration (telles que l'activation ou la désactivation des journaux publiés sur CloudWatch) en même temps. Un trop grand nombre de modifications de configuration simultanées déclenche plusieurs déploiements bleu/vert. Plusieurs déploiements bleu/vert peuvent entraîner le blocage du domaine Amazon ES à l'état de traitement. Pour plus d'informations sur le déploiement bleu/vert, consultez la section Modifications de configuration.
  • Définissez votre seuil pour la phase de requête et la phase de récupération afin d'identifier les requêtes de recherche lentes.
  • Effectuez un test avec une valeur de seuil faible et augmentez lentement le seuil pour consigner uniquement les requêtes qui affectent les performances ou nécessitent une optimisation.
  • Choisissez le nombre approprié de partitions pour votre cluster Elasticsearch afin d'optimiser les performances du cluster. Pour plus d'informations sur la maintenance des partitions, consultez les bonnes pratiques d'Amazon Elasticsearch Service.
  • Pour les journaux lents, activez la journalisation aux niveaux de débogage TRACE, DEBUG, INFO et WARN. Étant donné que chaque niveau de débogage consigne différentes catégories d'informations, il est recommandé d'activer la journalisation selon le statut de la demande.