Passer au contenu

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

Lecture de 5 minute(s)
0

Lorsque j'active les journaux lents de recherche dans mon domaine Amazon OpenSearch Service, un message d'erreur s'affiche. Ou bien, les journaux lents ne sont pas visibles dans mon groupe de journaux Amazon CloudWatch.

Résolution

Impossible de créer l'erreur de stratégie d'accès aux ressources

Si votre compte AWS dépasse 10 stratégies de ressources dans une seule région AWS, l'erreur suivante s'affiche dans les journaux CloudWatch :

« 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. » (Impossible de créer la politique d'accès aux ressources. Vous avez atteint le nombre maximum de politiques d'accès aux ressources pour CloudWatch Logs. Sélectionnez une politique existante et modifiez-la ou supprimez une ancienne politique et réessayez.)

Pour résoudre cette erreur, créez une stratégie de ressources qui inclut plusieurs groupes de journaux :


{  "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 : Remplacez region par votre région. Remplacez account-id par l'ID de votre compte.

Important : Il n’est pas possible d’augmenter le quota de la politique de Gestion des identités et des accès AWS (AWS IAM).

Les journaux lents ne sont pas livrés

Si vos journaux lents ne sont pas transmis à CloudWatch, vérifiez votre politique IAM ou les seuils de votre service OpenSearch.

Vous devez configurer votre politique IAM pour journaliser vos requêtes car OpenSearch Service requiert l'autorisation d'écrire dans les journaux CloudWatch.

Pour créer votre politique IAM, procédez comme suit :

  1. Ouvrez la console OpenSearch Service.
  2. Choisissez votre domaine.
  3. Cliquez sur l'onglet Journaux, puis sélectionnez Journaux lents de recherche.
  4. Choisissez Sélectionner la configuration.
  5. Mettez à jour votre politique IAM avec les valeurs de vos ressources :
    
    {  "Version": "2012-10-17",
      "Statement": [
        {
          "Effect": "Allow",
          "Principal": {
            "Service": "es.amazonaws.com"
          },
          "Action": [
            "logs:PutLogEvents",
            "logs:CreateLogStream"
          ],
          "Resource": "arn:aws:region:account_id:log-group:/aws/aes/domains/myes/search-logs:*"
        }
      ]
    }
    Remarque : Remplacez region par votre région. Remplacez account-id par l'ID de votre compte.
  6. (Facultatif) Pour plus de sécurité, ajoutez les clés de condition AWS:SourceAccount et aws:SourceArn à votre politique :
    {
      "Condition": {
        "StringEquals": {
          "aws:SourceAccount": "account-id"
        },
        "ArnLike": {
          "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name"
        }
      }
    }
    Remarque : Remplacez region par votre région. Remplacez account-id par l'ID de votre compte. Remplacez domain-name par le nom de votre domaine.
  7. Choisissez Activer.

Pour plus d'informations, consultez la section Activer la publication des journaux (console).

Par défaut, la journalisation d'OpenSearch Service est désactivée. Vous pouvez utiliser un appel d'API pour définir le niveau de journalisation et le seuil de synchronisation. Ces paramètres étant dynamiques, vous pouvez les mettre à jour sur un cluster en cours d'exécution et OpenSearch Service les applique immédiatement.

Définissez un seuil de temporisation approprié pour votre domaine. Si toutes vos requêtes sont traitées avant le seuil défini, CloudWatch ne transmet pas vos journaux à votre groupe de journaux. Vous pouvez définir des seuils de niveau d'index individuels pour chaque niveau de débogage (TRACE, DEBUG, INFO et WARN).

Par exemple, définissez le seuil du niveau de débogage WARN à 10 secondes pour votre index dans les tableaux de bord OpenSearch :

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

Remarque : Remplacez YOURINDEXNAME par le nom de votre index.

Pour curl, exécutez la commande suivante :

curl -XPUT http://your_domain_endpoint/index/_settings -d '{"index.search.slowlog.threshold.query.level":"10s"}'

Remarque : Remplacez your_domain_endpoint par le point de terminaison de votre domaine. Remplacez 10s par le seuil de journalisation souhaité.

Pour journaliser toutes les requêtes relatives à votre domaine, vous pouvez définir TRACE à 0 millisecondes. Cependant, la journalisation de toutes les requêtes est gourmande en ressources, ce qui peut affecter les performances de votre domaine. Pour désactiver la journalisation, définissez le seuil sur -1.

Pour vérifier votre seuil, exécutez la commande suivante :

GET /YOURINDEXNAME/_settings?pretty

Remarque : Remplacez YOURINDEXNAME par le nom de votre index.

OpenSearch Service journalise toutes les requêtes qui dépassent le seuil défini.

Appliquer les paramètres de journaux lents à tous les nouveaux indices au niveau du cluster

Pour appliquer les paramètres de journaux lents à tous les nouveaux indices au niveau du cluster, utilisez des modèles d'index. Il n'existe pas de paramètre à l'échelle du cluster pour les journaux lents d'indexation dans OpenSearch Service.

Créez un modèle d'index qui inclut les paramètres de journaux lents :


PUT _template/all_indices_template
{
  "index_patterns": ["*"], // This applies to all indices
  "settings": {
    "index.indexing.slowlog.threshold.index.warn": "10s",
    "index.indexing.slowlog.threshold.index.info": "5s",
    "index.indexing.slowlog.threshold.index.debug": "2s",
    "index.indexing.slowlog.threshold.index.trace": "500ms"
  }
}

Le modèle précédent applique automatiquement les paramètres à tous les nouveaux indices que vous créez une fois le modèle configuré.

Bonnes pratiques

Effectuez les opérations suivantes :

  • Effectuez les mises à jour de configuration une par une.
  • Pour identifier les requêtes de recherche lentes, définissez un seuil pour la phase de requête et la phase de récupération.
  • Effectuez un test avec une valeur seuil faible. Augmentez lentement le seuil pour journaliser uniquement les requêtes qui affectent les performances ou qui nécessitent une optimisation.
  • Choisissez le nombre de partitions adéquat pour votre cluster et votre cas d'utilisation afin d'optimiser les performances du cluster. Pour plus d'informations, consultez la section Stratégie de partition.
  • Pour les journaux lents, activez la journalisation aux niveaux de débogage TRACE, DEBUG, INFO et WARN. Chaque niveau de débogage journalise différentes catégories d'informations. Activez la journalisation en fonction du statut de la requête.

Informations connexes

Analyse des journaux lents d'Amazon Elasticsearch Service à l'aide d'Amazon CloudWatch Logs Streaming et de Kibana

Comment résoudre les problèmes liés aux journaux CloudWatch afin qu'ils soient diffusés vers mon domaine OpenSearch Service ?

Consultation des journaux d'erreurs d'Amazon OpenSearch Service

AWS OFFICIELA mis à jour il y a 8 mois