翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon CloudWatch Logs を用いて OpenSearch ログをモニタリングする
Amazon OpenSearch Service は、Amazon CloudWatch Logs を通じて以下の OpenSearch ログを公開します。
-
エラーログ
検索シャードスローログ、インデックス作成シャードスローログ、およびエラーログは、パフォーマンスと安定性の問題のトラブルシューティングに役立ちます。監査ログは、コンプライアンスの目的でユーザーのアクティビティを追跡します。すべてのログはデフォルトで無効になっています。有効にすると、標準の CloudWatch 料金
注記
エラーログは、OpenSearch および Elasticsearch バージョン 5.1 以降のでのみ利用できます。スローログは、すべてのバージョンの OpenSearch および Elasticsearch で利用できます。
ログについては、OpenSearch は、Apache Log4j 2TRACE、DEBUG、INFO、WARN、ERROR、および FATAL を使用します。
エラーログを有効にすると、OpenSearch Service によって、WARN、ERROR、および 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 Service は、発生したすべてのエラーをログに記録しません。
トピック
ログ発行を有効にする (コンソール)
CloudWatch へのログの発行を有効にするには、OpenSearch Service コンソールを使用する方法が最も簡単です。
CloudWatch へのログの発行を有効にするには (コンソール)
-
aws.amazon.com
に移動し、サインインを選択して認証情報を指定します。 -
[分析] の下で、[Amazon OpenSearch Service] を選択します。
-
更新するドメインを選択します。
-
[ログ] タブで、ログタイプを選択し、[有効化] を選択します。
-
新しい CloudWatch ロググループを作成するか、既存のロググループを選択します。
注記
複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。
-
適切なアクセス権限を含むアクセスポリシーを選択するか、コンソールに用意された JSON を使用してポリシーを作成します。
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 Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の OpenSearch Service ドメインでログを有効にする場合は、この制限に達しないように、複数のロググループを含む広範囲のポリシーを作成して再利用します。ポリシーを更新する手順については、「ログ発行の有効化 (AWS CLI)」を参照してください。
-
[有効] を選択します。
ドメインのステータスが [アクティブ] から [処理中] に変わります。ステータスは、ログの発行が有効になる前に [アクティブ] に戻る必要があります。この変更には通常 30 分かかりますが、ドメイン設定によってはさらに時間がかかる場合があります。
シャードスローログのいずれかを有効にしている場合は、「シャードスローログのしきい値設定」を参照してください。監査ログを有効にした場合は、「ステップ 2: OpenSearch Dashboards で、監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログ発行の有効化 (AWS CLI)
ログの発行を有効にする前に、CloudWatch ロググループが必要です。まだロググループがない場合は、次のコマンドを使用して作成できます。
aws logs create-log-group --log-group-namemy-log-group
次のコマンドを入力してロググループの ARN を検索し、それを書き留めます。
aws logs describe-log-groups --log-group-namemy-log-group
これで、このロググループに書き込むための許可を OpenSearch Service に付与できます。ロググループの末尾に近い位置にロググループの 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 Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の OpenSearch Service ドメインでシャードスローログを有効にする場合は、複数のロググループが含まれている適用範囲のより広いポリシーを作成して再利用し、この制限に達しないようにします。
後でこのポリシーを確認する必要がある場合は、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= |
INDEX_SLOW_LOGS={CloudWatchLogsLogGroupArn= |
|
ES_APPLICATION_LOGS={CloudWatchLogsLogGroupArn= |
|
AUDIT_LOGS={CloudWatchLogsLogGroupArn= |
注記
複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。
例
次の例では、指定されたドメインに対して検索およびインデックス作成のシャードスローログの発行を有効にします。
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 Dashboards で、監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログ発行の有効化 (AWS SDK)
ログの発行を有効にする前に、CloudWatch ロググループを作成してその ARN を取得し、そのロググループに書き込むための許可を OpenSearch Service に付与する必要があります。関連するオペレーションは Amazon CloudWatch Logs API リファレンスに記載されています。
-
CreateLogGroup -
DescribeLogGroup -
PutResourcePolicy
これらのオペレーションには、AWS
SDK
AWS SDKs (Android および iOS SDKs を除く) は、 CreateDomainおよび --log-publishing-optionsのオプションを含め、Amazon OpenSearch Service API リファレンスで定義されているすべてのオペレーションをサポートしますUpdateDomainConfig。
シャードスローログのいずれかを有効にしている場合は、「シャードスローログのしきい値設定」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログの発行を有効にする (CloudFormation)
この例では、CloudFormation を使用して opensearch-logs というロググループを作成し、適切な許可を割り当ててから、アプリケーションログ、検索スローログ、およびインデックス作成シャードスローログのためにログの発行が有効化されたドメインを作成します。
ログの公開を有効化する前に、CloudWatch ロググループを作成する必要があります。
Resources: OpenSearchLogGroup: Type: AWS::Logs::LogGroup Properties: LogGroupName:opensearch-logsOutputs: Arn: Value: 'Fn::GetAtt': - OpenSearchLogGroup - Arn
テンプレートは、ロググループの ARN を出力します。この場合、ARNは arn:aws:logs:us-east-1:123456789012:log-group:opensearch-logs です。
ARN を使用して、OpenSearch Service にロググループに書き込むための許可を付与するリソースポリシーを作成します。
Resources: OpenSearchLogPolicy: Type: AWS::Logs::ResourcePolicy Properties: PolicyName:my-policyPolicyDocument: "{ \"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 Service ドメインを生成します。アクセスポリシーは、 のユーザーがドメイン AWS アカウント へのすべての HTTP リクエストを行うことを許可します。
Resources: OpenSearchServiceDomain: Type: "AWS::OpenSearchService::Domain" Properties: DomainName:my-domainEngineVersion: "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 ユーザーガイドの「ログの発行オプション」を参照してください。
検索リクエストスのスローログのしきい値設定
検索リクエストのスローログ
クラスター設定を使用して、検索リクエストのスローログを指定できます。これは、インデックス設定で有効にするシャードスローログとは異なります。例えば、次の設定は、OpenSearch REST API を使用して指定できます。
PUTdomain-endpoint/_cluster/settings { "transient": { "cluster.search.request.slowlog.threshold.warn": "5s", "cluster.search.request.slowlog.threshold.info": "2s" } }
シャードスローログのしきい値設定
OpenSearch では、デフォルトでシャードスローログ
例えば、次の設定は、OpenSearch REST API を使用して指定できます。
PUTdomain-endpoint/index/_settings { "index.search.slowlog.threshold.query.warn": "5s", "index.search.slowlog.threshold.query.info": "2s" }
スローログのテスト
検索リクエストのスローログとシャードスローログの正常な発行をテストするには、極度に低い値から開始してログが CloudWatch に表示されることを確認し、その後、しきい値をより有用なレベルに高めます。
ログが表示されない場合は、以下を確認してください。
-
CloudWatch ロググループが存在しているかどうか? CloudWatch コンソールを確認します。
-
ロググループに書き込むための許可が OpenSearch Service にあるかどうか? OpenSearch Service コンソールを確認します。
-
OpenSearch Service ドメインはロググループに発行するように設定されているかどうか? OpenSearch Service コンソールを確認するか、 AWS CLI
describe-domain-configオプションを使用するか、いずれかの SDKDescribeDomainConfigを使用して を呼び出します。 SDKs -
OpenSearch ログしきい値が低くてリクエストが超過していないかどうか?
ドメインの検索リクエストのスローログのしきい値を確認するには、次のコマンドを使用します。
GETdomain-endpoint/_cluster/settings?flat_settingsインデックスのシャードスローログのしきい値を確認するには、次のコマンドを使用します。
GETdomain-endpoint/index/_settings?pretty
インデックスのスローログを無効にする場合は、変更したしきい値をデフォルト値の -1 に戻します。
OpenSearch Service コンソールを使用して CloudWatch への発行を無効にするか、OpenSearch によるログの生成を停止 AWS CLI しません。これらのログの発行のみが停止します。シャードスローログが不要になった場合はインデックス設定、検索リクエストのスローログが不要になった場合はドメイン設定を確認してください。
ログの表示
CloudWatchでアプリケーションとスローログを表示する方法は、その他の CloudWatch ログを表示する方法と同じです。詳細については、Amazon CloudWatch Logs ユーザーガイドの「ログデータの表示」を参照してください。
ログを表示する際の考慮事項は以下のとおりです。
-
OpenSearch Service は、各行の最初の 255,000 文字のみを CloudWatch に発行します。残りのコンテンツは切り捨てられます。監査ログの場合、それはメッセージあたり 10,000 文字です。
-
CloudWatch では、ログの内容を識別しやすいようにログストリーム名のサフィックスとして
-index-slow-logs、-search-slow-logs、-application-logs、および-audit-logsが使用されます。