Elasticsearch ログの設定 - Amazon Elasticsearch Service

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

Elasticsearch ログの設定

Amazon ES 4つの Elasticsearch までのログ Amazon CloudWatch Logs:エラーログ、低速ログの検索、低速ログのインデックス作成、 監査ログ. 低速ログの検索、低速ログのインデックス作成、およびエラー・ログは、パフォーマンスおよび安定性の問題のトラブルシューティングに役立ちます。監査ログは、コンプライアンスの目的でユーザーのアクティビティを追跡します。すべてのログは 無効 をデフォルトにします。有効にすると、標準の CloudWatch 料金が適用されます。

注記

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

ログについては、Elasticsearch は、Apache Log4j 2 とその組み込みログレベル (昇順) の TRACEDEBUGINFOWARNERRORFATAL を使用します。

エラーログを有効にすると、Amazon ES によって、WARNERRORFATAL のログ行が CloudWatch に発行されます。また、Amazon ES は、DEBUG レベルの複数の例外 (以下を含む) も発行します。

  • org.elasticsearch.index.mapper.MapperParsingException

  • org.elasticsearch.index.query.QueryShardException

  • org.elasticsearch.action.search.SearchPhaseExecutionException

  • org.elasticsearch.common.util.concurrent.EsRejectedExecutionException

  • java.lang.IllegalArgumentException

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

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

  • 無効なクエリ

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

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

ログ発行の有効化 (コンソール)

CloudWatch へのログの発行を有効にするには、Amazon ES コンソールを使用する方法が最も簡単です。

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

  1. https://aws.amazon.com にアクセスし、[Sign In to the Console] を選択します。

  2. [分析] で、[Elasticsearch Service] を選択します。

  3. ナビゲーションペインの [My domains (マイドメイン)] で、更新するドメインを選択します。

  4. [Logs (ログ)] タブで、必要なログの [Enable (有効化)] を選択します。

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

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

  7. [Enable] を選択します。

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

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

ログ発行の有効化 (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

これで、このロググループに書き込むためのアクセス許可を Amazon ES に付与できます。ロググループの末尾に近い位置にロググループの 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:PutLogEventsBatch","logs:CreateLogStream"],"Resource": "cw_log_group_arn"}]}'
重要

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

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

最後に、--log-publishing-options オプションを使用して発行を有効化できます。オプションの構文は、create-elasticsearch-domain コマンドと update-elasticsearch-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 es update-elasticsearch-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 を使用して同じコマンドを実行します。

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

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

ログの発行を有効にする前に、CloudWatch ロググループを作成してその ARN を取得し、そのロググループに書き込むためのアクセス許可を Amazon ES に付与する必要があります。関連するオペレーションは Amazon CloudWatch Logs API Reference に記載されています。

  • CreateLogGroup

  • DescribeLogGroup

  • PutResourcePolicy

これらの操作には、 AWS(AWS) SDKs.

AWSは SDKs (AndroidとiOSを除く) SDKs) は、 で定義されているすべての操作をサポートします。 Amazon Elasticsearch Service 設定 API リファレンスには、 --log-publishing-options オプション CreateElasticsearchDomain および UpdateElasticsearchDomainConfig.

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

スローログの Elasticsearch ログしきい値の設定

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

これらの設定は、Elasticsearch REST API を使用して指定します。

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

スローログの正常な発行をテストするには、極度に低い値から開始してログが CloudWatch に表示されることを確認し、その後、しきい値をより有用なレベルに高めていきます。

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

  • CloudWatch ロググループが存在しているかどうか? CloudWatch コンソールを確認します。

  • ロググループに書き込むためのアクセス許可が Amazon ES にあるかどうか? Amazon ES コンソールを確認します。

  • Amazon ES ドメインはロググループに発行するように設定されているかどうか? [ Amazon ES コンソールで、 AWS CLI describe-elasticsearch-domain-config オプション、または DescribeElasticsearchDomainConfig いずれかの SDKs.

  • Elasticsearch ログしきい値が低くてリクエストが超過していないかどうか? インデックスのしきい値を確認するには、次のコマンドを使用します。

    GET elasticsearch_domain_endpoint/index/_settings?pretty

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

Amazon ES コンソールまたは AWS CLI を使用して CloudWatch への発行を無効にしても、Elasticsearch でのログ生成は停止されません。これらのログの発行が停止されるだけです。スローログが不要になった場合は、インデックスの設定を確認してください。

ログの表示

CloudWatch でアプリケーションとスローログを表示する方法は、その他の CloudWatch ログを表示する方法と同じです。詳細については、https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html#ViewingLogData の「Amazon CloudWatch Logs User Guideログデータの表示」を参照してください。

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

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

  • イン CloudWatchログストリーム名には、次の接尾辞が付きます。 -index-slow-logs-search-slow-logs-es-application-logs、および -audit-logs 特定する手助けをします