Amazon OpenSearch Service のスローログをトラブルシューティングするにはどうすればよいですか?

最終更新日: 2021 年 7 月 30 日

Amazon OpenSearch Service ドメインの検索スローログを有効にしました。しかし、エラーが発生し、または Amazon CloudWatch ロググループにスローログが表示されません。解決方法を教えてください。

解決方法

スローログを設定しようとするとエラーが発生する

AWS アカウントでリージョンのリソースポリシーが 10 個を超えると、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."

このエラーメッセージを解決するには、複数のロググループを含むリソースポリシーを作成します。

例:

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

注: AWS Identity and Access Management (IAM) ポリシーの制限を引き上げることはできません。

スローログが配信されていない

スローログが CloudWatch に配信されていない場合は、IAM ポリシーまたは OpenSearch Service のしきい値を確認してください。

OpenSearch Service には CloudWatch Logs に書き込むための許可が必要なため、クエリをログに記録するには適切な IAM ポリシーが必要です。IAM ポリシーを更新するには、[Search Slow Logs] (検索スローログ) に移動し、[Select Setup] (セットアップを選択) を選択します。

以下はその例です。

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

また、ドメインに適切なタイミングしきい値を設定してください。例えば、設定されたしきい値の前にすべてのリクエストが完了した場合、ログはロググループに配信されません。

デバッグレベル (TRACE、DEBUG、INFO、および WARN) ごとに個別の INDEX レベルのしきい値を設定することもできます。

例えば、OpenSearch Dashboards の YOURINDEXNAME インデックス用に WARN デバッグレベルのしきい値を 10 秒に設定できます。

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

注: TRACE を「0」ミリ秒に設定して、ドメインのすべてのクエリをログに記録できます。ただし、すべてのクエリのログ記録はリソースを大量に使用するため、ドメインのパフォーマンスに影響を与える可能性があります。

その後、次のコマンドを使用してしきい値を確認します。

GET/YOURINDEXNAME/_settings?pretty

OpenSearch Service は、定義されたしきい値を超えるクエリをログに記録します。

ベストプラクティス

  • 複数の設定変更 (CloudWatch に発行されるログの有効化または無効化など) を同時に行うことは避けてください。一度に行う設定変更が多すぎると、複数のブルー/グリーンデプロイがトリガーされます。複数のブルー/グリーンデプロイにより、OpenSearch Service ドメインが処理状態でスタックする可能性があります。ブルー/グリーンデプロイの詳細については、「OpenSearch Service での設定変更を行う」を参照してください。
  • クエリフェーズと取得フェーズの両方にしきい値を設定して、スロー検索クエリを識別します。
  • 低いしきい値でテストし、しきい値を徐々に引き上げて、パフォーマンスに影響を与えているクエリや最適化が必要なクエリのみをログに記録するようにします。
  • クラスターに適切な数のシャードを選択して、クラスターのパフォーマンスを最適化します。シャードのメンテナンスの詳細については、「Amazon OpenSearch Service のベストプラクティスを参照してください。
  • スローログの場合は、TRACE、DEBUG、INFO、および WARN デバッグレベルでログ記録を有効にします。各デバッグレベルは異なるカテゴリの情報をログに記録するため、リクエストのステータスに応じてログ記録を有効にすることをお勧めします。

Amazon OpenSearch Service は、Amazon Elasticsearch Service の後継サービスです。