Surveillance des OpenSearch journaux avec Amazon CloudWatch Logs - Amazon OpenSearch Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Surveillance des OpenSearch journaux avec Amazon CloudWatch Logs

Amazon OpenSearch Service expose les OpenSearch journaux suivants via Amazon CloudWatch Logs :

Les journaux de lenteur des partitions de recherche, les journaux lents des partitions d'indexation et les journaux d'erreurs sont utiles pour résoudre les problèmes de performance et de stabilité. Les journaux d'audit permettent de suivre l'activité des utilisateurs à des fins de conformité. Par défaut, tous les journaux sont désactivés. Si cette option est activée, la CloudWatch tarification standard s'applique.

Note

Les journaux d'erreurs ne sont disponibles que pour les versions 5.1 OpenSearch et ultérieures d'Elasticsearch. Les journaux lents sont disponibles pour toutes les versions d'Elasticsearch OpenSearch et pour toutes les versions.

Pour ses journaux, OpenSearch utilise Apache Log4j 2 et ses niveaux de journalisation intégrés (du plus faible au plus sévère) deTRACE,DEBUG,, INFO WARNERROR, et. FATAL

Si vous activez les journaux d'erreurs, le OpenSearch Service publie des lignes de journal de WARNERROR, et FATAL vers CloudWatch. OpenSearch Le service publie également plusieurs exceptions par rapport au DEBUG niveau, notamment les suivantes :

  • org.opensearch.index.mapper.MapperParsingException

  • org.opensearch.index.query.QueryShardException

  • org.opensearch.action.search.SearchPhaseExecutionException

  • org.opensearch.common.util.concurrent.OpenSearchRejectedExecutionException

  • java.lang.IllegalArgumentException

Les journaux d'erreurs favorisent la résolution des problèmes dans de nombreuses situations, y compris les suivantes :

  • Problèmes de compilation de scripts Painless

  • Requêtes non valides

  • Indexation des problèmes

  • Échecs d'instantané

  • Échecs de migration d'Index State Management

Note

OpenSearch Le service n'enregistre pas toutes les erreurs qui se produisent.

Activation de la publication des journaux (console)

La console OpenSearch de service est le moyen le plus simple d'activer la publication de journaux sur CloudWatch.

Pour activer la publication du journal sur CloudWatch (console)
  1. Accédez à https://aws.amazon.com, puis choisissez Se connecter à la console.

  2. Sous Analytics, sélectionnez Amazon OpenSearch Service.

  3. Sélectionnez le domaine que vous souhaitez mettre à jour.

  4. Dans l'onglet Logs (Journaux), sélectionnez un type de journal et choisissez Enable (Activer).

  5. Créez un nouveau groupe de CloudWatch journaux ou choisissez-en un existant.

    Note

    Si vous prévoyez d'activer plusieurs journaux, il est recommandé de publier chacun d'eux dans son propre groupe de journaux. Cette séparation rend plus facile l'analyse des journaux.

  6. Choisissez une politique d'accès contenant les autorisations appropriées ou créez une politique à l'aide de celles JSON fournies par la console :

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com" }, "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": "cw_log_group_arn:*" } ] }

    Nous vous recommandons d'ajouter les clés de condition aws:SourceAccount et aws:SourceArn à la stratégie pour vous protéger contre le problème du député confus. Le compte source est le propriétaire du domaine et la source ARN est ARN celle du domaine. Votre domaine doit être sur le logiciel de service R20211203 ou plus récent afin d'ajouter ces clés de condition.

    Par exemple, vous pouvez ajouter la clé de condition suivante à la stratégie :

    "Condition": { "StringEquals": { "aws:SourceAccount": "account-id" }, "ArnLike": { "aws:SourceArn": "arn:aws:es:region:account-id:domain/domain-name" } }
    Important

    CloudWatch Logs prend en charge 10 politiques de ressources par région. Si vous envisagez d'activer les journaux pour plusieurs domaines de OpenSearch service, vous devez créer et réutiliser une politique plus large incluant plusieurs groupes de journaux afin d'éviter d'atteindre cette limite. Pour savoir comment mettre à jour votre politique , consultez Activation de la publication des journaux (AWS CLI).

  7. Sélectionnez Activer.

    L'état de votre domaine passe de Actif à En cours de traitement. L'état doit revenir à Actif avant que la publication du journal ne soit activée. Cette modification prend généralement 30 minutes, mais peut prendre plus de temps en fonction de la configuration de votre domaine.

Si vous avez activé l'un des journaux lents des partitions, consultezDéfinition des seuils de lenteur de journalisation des partitions. Si vous avez activé les journaux d'audit, consultez Étape 2 : activer les journaux d'audit dans les OpenSearch tableaux de bord. Si vous avez activé uniquement des journaux d'erreurs, vous n'avez pas besoin d'effectuer d'étapes de configuration supplémentaires.

Activation de la publication des journaux (AWS CLI)

Avant de pouvoir activer la publication des journaux, vous avez besoin d'un groupe de CloudWatch journaux. Si vous n'en possédez pas déjà un, vous pouvez en créer un à l'aide de la commande suivante :

aws logs create-log-group --log-group-name my-log-group

Entrez la commande suivante pour trouver le groupe de journauxARN, puis notez-le :

aws logs describe-log-groups --log-group-name my-log-group

Vous pouvez désormais autoriser le OpenSearch service à écrire dans le groupe de journaux. Vous devez fournir les groupes de journaux ARN vers la fin de la commande :

aws logs put-resource-policy \ --policy-name my-policy \ --policy-document '{ "Version": "2012-10-17", "Statement": [{ "Sid": "", "Effect": "Allow", "Principal": { "Service": "es.amazonaws.com"}, "Action":[ "logs:PutLogEvents","logs:CreateLogStream"],"Resource": "cw_log_group_arn:*"}]}'
Important

CloudWatch Logs prend en charge 10 politiques de ressources par région. Si vous envisagez d'activer les journaux lents partiels pour plusieurs domaines de OpenSearch service, vous devez créer et réutiliser une politique plus large incluant plusieurs groupes de journaux afin d'éviter d'atteindre cette limite.

Si vous devez revoir cette politique ultérieurement, utilisez la commande aws logs describe-resource-policies. Pour mettre à jour la politique, exécutez la même commande aws logs put-resource-policy avec un nouveau document de politique.

Enfin, vous pouvez utiliser l'option --log-publishing-options pour activer la publication. La syntaxe pour l'option est la même pour les deux commandes create-domain et update-domain-config.

Paramètre Valeurs valides
--log-publishing-options SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
AUDIT_LOGS={CloudWatchLogsLogGroupArn=cw_log_group_arn,Enabled=true|false}
Note

Si vous prévoyez d'activer plusieurs journaux, il est recommandé de publier chacun d'eux dans son propre groupe de journaux. Cette séparation rend plus facile l'analyse des journaux.

Exemple

L'exemple suivant permet de publier des journaux de ralentissement des partitions de recherche et d'indexation pour le domaine spécifié :

aws opensearch update-domain-config \ --domain-name my-domain \ --log-publishing-options "SEARCH_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-log-group,Enabled=true},INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn=arn:aws:logs:us-east-1:123456789012:log-group:my-other-log-group,Enabled=true}"

Pour désactiver la publication sur CloudWatch, exécutez la même commande avecEnabled=false.

Si vous avez activé l'un des journaux lents des partitions, consultezDéfinition des seuils de lenteur de journalisation des partitions. Si vous avez activé les journaux d'audit, consultez Étape 2 : activer les journaux d'audit dans les OpenSearch tableaux de bord. Si vous avez activé uniquement des journaux d'erreurs, vous n'avez pas besoin d'effectuer d'étapes de configuration supplémentaires.

Activation de la publication des journaux (AWS SDKs)

Avant de pouvoir activer la publication de journaux, vous devez d'abord créer un groupe de CloudWatch journauxARN, l'obtenir et autoriser le OpenSearch service à y écrire. Les opérations pertinentes sont documentées dans le Amazon CloudWatch Logs API Reference :

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

Vous pouvez accéder à ces opérations à l'aide du AWS SDKs.

AWS SDKs(sauf Android et iOSSDKs) prennent en charge toutes les opérations définies dans le Amazon OpenSearch Service API Reference, y compris l'--log-publishing-optionsoption pour CreateDomain etUpdateDomainConfig.

Si vous avez activé l'un des journaux lents des partitions, consultezDéfinition des seuils de lenteur de journalisation des partitions. Si vous avez activé uniquement des journaux d'erreurs, vous n'avez pas besoin d'effectuer d'étapes de configuration supplémentaires.

Activation de la publication des journaux (CloudFormation)

Dans cet exemple, nous avons l'habitude de CloudFormation créer un groupe de journaux appeléopensearch-logs, d'attribuer les autorisations appropriées, puis de créer un domaine dans lequel la publication des journaux est activée pour les journaux des applications, les journaux lents de recherche sur les partitions de recherche et l'indexation des journaux lents.

Avant de pouvoir activer la publication des journaux, vous devez créer un groupe de CloudWatch journaux :

Resources: OpenSearchLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName: opensearch-logs Outputs: Arn: Value: 'Fn::GetAtt': - OpenSearchLogGroup - Arn

Le modèle génère le nom ARN du groupe de journaux. Dans ce cas, le champ ARN est arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs.

À l'aide duARN, créez une politique de ressources qui autorise le OpenSearch service à écrire dans le groupe de journaux :

Resources: OpenSearchLogPolicy: Type: AWS::Logs::ResourcePolicy Properties: PolicyName: my-policy PolicyDocument: "{ \"Version\": \"2012-10-17\", \"Statement\": [{ \"Sid\": \"\", \"Effect\": \"Allow\", \"Principal\": { \"Service\": \"es.amazonaws.com\"}, \"Action\":[ \"logs:PutLogEvents\",\"logs:CreateLogStream\"],\"Resource\": \"arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs:*\"}]}"

Enfin, créez la CloudFormation pile suivante, qui génère un domaine OpenSearch de service avec publication de journaux. La politique d'accès permet Compte AWS à l'utilisateur de faire toutes les HTTP demandes au domaine.

Resources: OpenSearchServiceDomain: Type: "AWS::OpenSearchService::Domain" Properties: DomainName: my-domain EngineVersion: "OpenSearch_1.0" ClusterConfig: InstanceCount: 2 InstanceType: "r6g.xlarge.search" DedicatedMasterEnabled: true DedicatedMasterCount: 3 DedicatedMasterType: "r6g.xlarge.search" EBSOptions: EBSEnabled: true VolumeSize: 10 VolumeType: "gp2" AccessPolicies: Version: "2012-10-17" Statement: Effect: "Allow" Principal: AWS: "arn:aws:iam::123456789012:user/es-user" Action: "es:*" Resource: "arn:aws:es:us-east-1:123456789012:domain/my-domain/*" LogPublishingOptions: ES_APPLICATION_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true SEARCH_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true INDEX_SLOW_LOGS: CloudWatchLogsLogGroupArn: "arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs" Enabled: true

Pour obtenir des informations détaillées sur la syntaxe, consultez les options de publication de journaux dans le Guide de l'utilisateur AWS CloudFormation .

Définition des seuils de lenteur de journalisation des demandes de recherche

Les journaux de lenteur des demandes de recherche sont disponibles pour les recherches sur les domaines de OpenSearch service exécutés sur les versions 2.13 et ultérieures. Les seuils de lenteur des demandes de recherche sont configurés pour le temps total pris par les demandes. Cela est différent des journaux de lenteur des demandes de partition, qui sont configurés en fonction du temps nécessaire à chaque partition.

Vous pouvez définir les journaux lents des demandes de recherche à l'aide des paramètres du cluster. Cela diffère des journaux partiels lents, que vous activez à l'aide des paramètres d'index. Par exemple, vous pouvez définir les paramètres suivants par le biais de OpenSearch REST API :

PUT domain-endpoint/_cluster/settings { "transient": { "cluster.search.request.slowlog.threshold.warn": "5s", "cluster.search.request.slowlog.threshold.info": "2s" } }

Définition des seuils de lenteur de journalisation des partitions

OpenSearch désactive les journaux lents des partitions par défaut. Une fois que vous avez activé la publication des journaux lents des partitions sur CloudWatch, vous devez toujours spécifier des seuils de journalisation pour chaque OpenSearch index. Ces seuils définissent précisément ce qui doit être journalisé et à quel niveau de journal.

Par exemple, vous pouvez définir ces paramètres par le biais de OpenSearch REST API :

PUT domain-endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }

Tester les journaux lents

Pour vérifier que les journaux lents des requêtes de recherche et des partitions sont publiés correctement, envisagez de commencer par des valeurs très faibles pour vérifier que les journaux apparaissent CloudWatch, puis d'augmenter les seuils à des niveaux plus utiles.

Si les journaux ne s'affichent pas, vérifiez les éléments suivants :

  • Le groupe de CloudWatch logs existe-t-il ? Vérifiez la CloudWatch console.

  • Le OpenSearch service est-il autorisé à écrire dans le groupe de journaux ? Vérifiez la console OpenSearch de service.

  • Le domaine OpenSearch de service est-il configuré pour publier dans le groupe de journaux ? Vérifiez la console OpenSearch de service, utilisez l' AWS CLI describe-domain-configoption ou appelez à DescribeDomainConfig l'aide de l'un desSDKs.

  • Les seuils de OpenSearch journalisation sont-ils suffisamment bas pour que vos demandes les dépassent ?

    Pour revoir les seuils de lenteur de votre demande de recherche pour un domaine, utilisez la commande suivante :

    GET domain-endpoint/_cluster/settings?flat_settings

    Pour revoir les seuils de lenteur de journalisation de votre partition pour un index, utilisez la commande suivante :

    GET domain-endpoint/index/_settings?pretty

Si vous souhaitez désactiver les journaux lents pour un index, rétablissez les seuils que vous avez modifiés aux valeurs par défaut de -1.

La désactivation de la publication pour CloudWatch utiliser la console de OpenSearch service AWS CLI n'arrête pas la génération OpenSearch de journaux ; elle arrête uniquement la publication de ces journaux. Assurez-vous de vérifier les paramètres de votre index si vous n'avez plus besoin des journaux lents des partitions, et les paramètres de votre domaine si vous n'avez plus besoin des journaux lents des demandes de recherche.

Affichage des journaux

L'affichage de l'application et la lenteur des connexions CloudWatch sont identiques à l'affichage de n'importe quel autre CloudWatch journal. Pour plus d'informations, consultez la section Afficher les données des CloudWatch journaux dans le guide de l'utilisateur Amazon Logs.

Voici quelques éléments à prendre en compte pour visualiser les journaux :

  • OpenSearch Le service ne publie que les 255 000 premiers caractères de chaque ligne sur CloudWatch. Tout le contenu restant est tronqué. Pour les journaux d'audit, il s'agit de 10 000 caractères par message.

  • Dans CloudWatch, les noms des flux de journaux ont les suffixes-index-slow-logs, -search-slow-logs-application-logs, et -audit-logs pour aider à identifier leur contenu.