Amazon CloudWatch Logs による OpenSearch ログのモニタリング - Amazon OpenSearch サービス

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Amazon CloudWatch Logs による OpenSearch ログのモニタリング

Amazon OpenSearch Service は、Amazon CloudWatch Logs を通じて次の OpenSearch ログを公開します。

検索シャードスローログ、インデックス作成シャードスローログ、エラーログは、パフォーマンスと安定性の問題のトラブルシューティングに役立ちます。監査ログは、コンプライアンスの目的でユーザーのアクティビティを追跡します。すべてのログはデフォルトで無効になっています。有効にすると、標準 CloudWatch 料金が適用されます。

注記

エラーログは、 OpenSearch および Elasticsearch バージョン 5.1 以降でのみ使用できます。スローログは、すべての OpenSearch および Elasticsearch バージョンで使用できます。

ログには、Apache Log4j 2 とその組み込みログレベル (最も重要度が低いものから最も高いものまで) である TRACEDEBUGINFOWARNERROR、および OpenSearch を使用しますFATAL

エラーログを有効にするERRORと、 OpenSearch サービスは WARN、、および のログ行FATALを に発行します CloudWatch。また、 OpenSearch DEBUGレベルから次のようないくつかの例外を発行します。

  • org.opensearch.index.mapper.MapperParsingException

  • org.opensearch.index.query.QueryShardException

  • org.opensearch.action.search.SearchPhaseExecutionException

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

  • java.lang.IllegalArgumentException

以下のように、エラーログは多くの状況でトラブルシューティングに役立ちます。

  • Painless スクリプトのコンパイルの問題

  • 無効なクエリ

  • インデックス作成の問題

  • スナップショットの失敗

  • Index State Management の移行の失敗

注記

OpenSearch サービスは発生したすべてのエラーをログに記録しません。

ログ発行を有効にする (コンソール)

OpenSearch サービスコンソールは、 へのログの発行を有効にする最も簡単な方法です CloudWatch。

へのログ発行を有効にするには CloudWatch (コンソール)
  1. https://aws.amazon.com にアクセスし、[コンソールにサインイン] を選択します。

  2. Analytics でAmazon OpenSearch Service を選択します。

  3. 更新するドメインを選択します。

  4. [ログ] タブで、ログタイプを選択し、[有効化] を選択します。

  5. 新しい CloudWatch ロググループを作成するか、既存のロググループを選択します。

    注記

    複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

  6. 適切なアクセス許可を含むアクセスポリシーを選択するか、JSONコンソールが提供する を使用してポリシーを作成します。

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

    Confused Deputy Problem (混乱した代理の問題) から自分を守るために、aws:SourceAccount および aws:SourceArn の条件キーをポリシーに追加することをお勧めします。ソースアカウントはドメインの所有者であり、ソースARNはドメインARNの です。これらの条件キーを追加するには、ドメインがサービスソフトウェア R20211203 以降にある必要があります。

    例えば、次の条件ブロックをポリシーに追加できます。

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

    CloudWatch ログは、リージョン ごとに 10 個のリソースポリシーをサポートします。複数の OpenSearch サービスドメインのログを有効にする場合は、この制限に達しないように、複数のロググループを含むより広範なポリシーを作成して再利用する必要があります。ポリシーを更新する手順については、「ログ発行の有効化 (AWS CLI)」を参照してください。

  7. [有効] を選択します。

    ドメインのステータスが [アクティブ] から [処理中] に変わります。ステータスは、ログの発行が有効になる前に [アクティブ] に戻る必要があります。この変更には通常 30 分かかりますが、ドメイン設定によってはさらに時間がかかる場合があります。

シャードスローログのいずれかを有効にした場合は、「」を参照してくださいシャードスローログしきい値の設定。監査ログを有効にした場合は、「ステップ 2: OpenSearch ダッシュボードで監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

ログ発行の有効化 (AWS CLI)

ログの発行を有効にする前に、 CloudWatch ロググループが必要です。まだロググループがない場合は、次のコマンドを使用して作成できます。

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

次のコマンドを入力してロググループの を検索しARN、それを書き留めます

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

これで、ロググループに書き込むアクセス許可を OpenSearch サービスに付与できます。コマンドのARN最後にロググループの を指定する必要があります。

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:*"}]}'
重要

CloudWatch ログは、リージョン ごとに 10 個のリソースポリシーをサポートします。複数の OpenSearch サービスドメインでシャードスローログを有効にする場合は、この制限に達しないように、複数のロググループを含むより広範なポリシーを作成して再利用する必要があります。

後でこのポリシーを確認する必要がある場合は、aws logs describe-resource-policies コマンドを使用します。ポリシーを更新するには、新しいポリシードキュメントで同じ aws logs put-resource-policy コマンドを実行します。

最後に、--log-publishing-options オプションを使用して発行を有効化できます。オプションの構文は、create-domain コマンドと update-domain-config コマンドのどちらでも同じです。

パラメータ 有効な値
--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}
注記

複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。

次の例では、指定されたドメインの検索およびインデックス作成シャードスローログの発行を有効にします。

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}"

への発行を無効にするには CloudWatch、 で同じコマンドを実行しますEnabled=false

シャードスローログのいずれかを有効にした場合は、「」を参照してくださいシャードスローログしきい値の設定。監査ログを有効にした場合は、「ステップ 2: OpenSearch ダッシュボードで監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

ログ発行の有効化 (AWS SDKs)

ログの発行を有効にする前に、まず CloudWatch ロググループを作成し、その を取得しARN、そのグループに書き込むアクセス許可を OpenSearch サービスに付与する必要があります。関連するオペレーションについては、「Amazon CloudWatch Logs APIリファレンス」を参照してください。

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

これらのオペレーションには、 を使用してアクセスできますAWS SDKs

(Android AWS SDKsおよび iOS を除くSDKs) は、 CreateDomainおよび --log-publishing-optionsのオプションを含め、Amazon OpenSearch Service API Reference で定義されているすべてのオペレーションをサポートしますUpdateDomainConfig

シャードスローログのいずれかを有効にした場合は、「」を参照してくださいシャードスローログしきい値の設定。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。

ログ発行の有効化 (CloudFormation)

この例では、 CloudFormation を使用して というロググループを作成しopensearch-logs、適切なアクセス許可を割り当て、アプリケーションログ、シャードスローログの検索、スローログのインデックス作成のためにログの発行を有効にしたドメインを作成します。

ログ発行を有効にする前に、 CloudWatch ロググループを作成する必要があります。

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

テンプレートはロググループの ARN を出力します。この場合、ARN は arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs です。

を使用してARN、ロググループに書き込むアクセス許可を OpenSearch サービスに付与するリソースポリシーを作成します。

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:*\"}]}"

最後に、次の CloudFormation スタックを作成します。これにより、ログの発行を含む OpenSearch サービスドメインが生成されます。アクセスポリシーは、 のユーザーがドメイン AWS アカウント へのすべてのHTTPリクエストを行うことを許可します。

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

構文の詳細については、AWS CloudFormation ユーザーガイドの「ログの発行オプション」を参照してください。

検索リクエストのスローログしきい値の設定

検索リクエストのスローログは、バージョン 2.13 以降で実行されている OpenSearch サービスドメインでの検索に使用できます。検索リクエストのスローログのしきい値は、リクエストにかかった合計時間に対して設定されます。これは、個々のシャードに時間がかかったように設定されたシャードリクエストのスローログとは異なります。

クラスター設定で検索リクエストのスローログを指定できます。これは、インデックス設定で有効にするシャードスローログとは異なります。例えば、 を使用して OpenSearch REST次の設定を指定できますAPI。

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

シャードスローログしきい値の設定

OpenSearch はデフォルトでシャードスローログを無効にします。へのシャードスローログの発行を有効にした後も CloudWatch、 OpenSearch インデックスごとにログ記録しきい値を指定する必要があります。これらのしきい値は、ログに記録する内容とログレベルを正確に定義します。

例えば、 を使用して OpenSearch RESTこれらの設定を指定できますAPI。

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

スローログのテスト

検索リクエストとシャードスローログの両方が正常に発行されていることをテストするには、非常に低い値から始めてログが に表示されることを確認し CloudWatch、しきい値をより有用なレベルに引き上げることを検討してください。

ログが表示されない場合は、以下を確認してください。

  • CloudWatch ロググループは存在しますか? CloudWatch コンソールを確認します。

  • OpenSearch サービスにはロググループに書き込むアクセス許可がありますか? OpenSearch サービスコンソールを確認します。

  • OpenSearch サービスドメインはロググループに発行するように設定されていますか? OpenSearch サービスコンソールを確認するか、 AWS CLI describe-domain-configオプションを使用するか、 のいずれかDescribeDomainConfigを使用して を呼び出しますSDKs。

  • OpenSearch ログ記録のしきい値は、リクエストがしきい値を超えているほど低くなっていますか?

    ドメインの検索リクエストのスローログしきい値を確認するには、次のコマンドを使用します。

    GET domain-endpoint/_cluster/settings?flat_settings

    インデックスのシャードスローログのしきい値を確認するには、次のコマンドを使用します。

    GET domain-endpoint/index/_settings?pretty

インデックスのスローログを無効にする場合は、変更したしきい値をデフォルト値の -1 に戻します。

OpenSearch サービスコンソールまたは CloudWatch を使用して への発行を無効にしても、ログの生成 OpenSearch は停止 AWS CLI されません。これらのログの発行のみが停止します。シャードスローログが不要になった場合はインデックス設定を確認し、検索リクエストスローログが不要になった場合はドメイン設定を確認してください。

ログの表示

アプリケーションの表示と でのスローログの表示 CloudWatch は、他の CloudWatch ログの表示と同じです。詳細については、「Amazon Logs ユーザーガイド」の「ログデータの表示」を参照してください。 CloudWatch

ログを表示する際の考慮事項は以下のとおりです。

  • OpenSearch サービスは、各行の最初の 255,000 文字のみを に発行します CloudWatch。残りのコンテンツは切り捨てられます。監査ログの場合、それはメッセージあたり 10,000 文字です。

  • では CloudWatch、ログストリーム名に -index-slow-logs、、-search-slow-logs、および のサフィックス-audit-logsがあり-application-logs、その内容を識別しやすくします。