翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Amazon CloudWatch Logs による OpenSearch ログのモニタリング
Amazon OpenSearch Service は、Amazon CloudWatch Logs を通じて次の OpenSearch ログを公開します。
-
エラーログ
検索シャードスローログ、インデックス作成シャードスローログ、エラーログは、パフォーマンスと安定性の問題のトラブルシューティングに役立ちます。監査ログは、コンプライアンスの目的でユーザーのアクティビティを追跡します。すべてのログはデフォルトで無効になっています。有効にすると、標準 CloudWatch 料金
注記
エラーログは、 OpenSearch および Elasticsearch バージョン 5.1 以降でのみ使用できます。スローログは、すべての OpenSearch および Elasticsearch バージョンで使用できます。
ログには、Apache Log4j 2 TRACE
、DEBUG
、INFO
、WARN
、ERROR
、および 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 (コンソール)
-
https://aws.amazon.com
にアクセスし、[コンソールにサインイン] を選択します。 -
Analytics で、Amazon OpenSearch Service を選択します。
-
更新するドメインを選択します。
-
[ログ] タブで、ログタイプを選択し、[有効化] を選択します。
-
新しい CloudWatch ロググループを作成するか、既存のロググループを選択します。
注記
複数のログを有効にする場合は、各ログを個別にロググループに発行することをお勧めします。分離することで、ログをスキャンしやすくなります。
-
適切なアクセス許可を含むアクセスポリシーを選択するか、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)」を参照してください。
-
[有効] を選択します。
ドメインのステータスが [アクティブ] から [処理中] に変わります。ステータスは、ログの発行が有効になる前に [アクティブ] に戻る必要があります。この変更には通常 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= |
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 ダッシュボードで監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログ発行の有効化 (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 ユーザーガイドの「ログの発行オプション」を参照してください。
検索リクエストのスローログしきい値の設定
検索リクエストのスローログ
クラスター設定で検索リクエストのスローログを指定できます。これは、インデックス設定で有効にするシャードスローログとは異なります。例えば、 を使用して OpenSearch REST次の設定を指定できますAPI。
PUT
domain-endpoint
/_cluster/settings { "transient": { "cluster.search.request.slowlog.threshold.warn": "5s", "cluster.search.request.slowlog.threshold.info": "2s" } }
シャードスローログしきい値の設定
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
、その内容を識別しやすくします。