翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
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 へのログの発行を有効にするには (コンソール)
-
https://aws.amazon.com
にアクセスし、[コンソールにサインイン] を選択します。 -
[分析] の下で、[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 Logs では、リージョンごとに 10 個のリソースポリシーがサポートされます。複数の OpenSearch Service ドメインでログを有効にする場合は、この制限に達しないように、複数のロググループを含む広範囲のポリシーを作成して再利用します。ポリシーを更新する手順については、「ログ発行の有効化 (AWS CLI)」を参照してください。
-
[有効] を選択します。
ドメインのステータスが [アクティブ] から [処理中] に変わります。ステータスは、ログの発行が有効になる前に [アクティブ] に戻る必要があります。この変更には通常 30 分かかりますが、ドメイン設定によってはさらに時間がかかる場合があります。
シャードスローログのいずれかを有効にしている場合は、「シャードスローログのしきい値設定」を参照してください。監査ログを有効にした場合は、「ステップ 2: OpenSearch Dashboards で、監査ログを有効にする」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログ発行の有効化 (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 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 SDK (Android および iOS SDK を除く) は、CreateDomain
および UpdateDomainConfig
の --log-publishing-options
オプションを含む、「Amazon OpenSearch Service API リファレンス」で定義されているすべてのオペレーションをサポートします。
シャードスローログのいずれかを有効にしている場合は、「シャードスローログのしきい値設定」を参照してください。エラーログのみ有効にしている場合は、追加のステップを行う必要はありません。
ログの発行を有効にする (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 Service にロググループに書き込むための許可を付与するリソースポリシーを作成します。
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 Service ドメインを生成します。アクセスポリシーは、ドメインに対してすべての HTTP リクエストを実行することを AWS アカウントのユーザーに許可します。
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 Service にあるかどうか? OpenSearch Service コンソールを確認します。
-
OpenSearch Service ドメインはロググループに発行するように設定されているかどうか? OpenSearch Service コンソールを確認するか、AWS CLI
describe-domain-config
オプションを使用するか、いずれかの SDK を使用してDescribeDomainConfig
を呼び出します。 -
OpenSearch ログしきい値が低くてリクエストが超過していないかどうか?
ドメインの検索リクエストのスローログのしきい値を確認するには、次のコマンドを使用します。
GET
domain-endpoint
/_cluster/settings?flat_settingsインデックスのシャードスローログのしきい値を確認するには、次のコマンドを使用します。
GET
domain-endpoint
/index
/_settings?pretty
インデックスのスローログを無効にする場合は、変更したしきい値をデフォルト値の -1
に戻します。
OpenSearch Service コンソールまたは AWS CLI を使用して CloudWatch への発行を無効にしても、OpenSearch でのログ生成は停止されません。これらのログの発行が停止されるだけです。シャードスローログが不要になった場合はインデックス設定、検索リクエストのスローログが不要になった場合はドメイン設定を確認してください。
ログの表示
CloudWatchでアプリケーションとスローログを表示する方法は、その他の CloudWatch ログを表示する方法と同じです。詳細については、Amazon CloudWatch Logs ユーザーガイドの「ログデータの表示」を参照してください。
ログを表示する際の考慮事項は以下のとおりです。
-
OpenSearch Service は、各行の最初の 255,000 文字のみを CloudWatch に発行します。残りのコンテンツは切り捨てられます。監査ログの場合、それはメッセージあたり 10,000 文字です。
-
CloudWatch では、ログの内容を識別しやすいようにログストリーム名のサフィックスとして
-index-slow-logs
、-search-slow-logs
、-application-logs
、および-audit-logs
が使用されます。