サポートされるログと検出されるフィールド
CloudWatch Logs Insights は、さまざまなタイプのログをサポートします。Amazon CloudWatch Logs の標準クラスロググループに送信されるすべてのログについて、CloudWatch Logs Insights は 5 つのシステムフィールドを自動的に生成します。
-
@messageは、生の未解析のログイベントを示します。これは、InputLogevent のmessageフィールドに相当します。 -
@timestampには、ログイベントのtimestampフィールドに含まれるイベントタイムスタンプが含まれます。これは、InputLogevent のtimestampフィールドに相当します。 -
@ingestionTimeは、ログイベントが CloudWatch Logs によって受信された時間を示します。 -
@logStreamは、ログイベントの追加先のログストリームの名前を示します。ログストリームは、生成時と同じプロセスでログをグループ化します。 -
@logは、の形式のロググループ識別子です。これは、複数のロググループにクエリを実行する場合に、特定のイベントが属しているロググループを識別するのに役立ちます。account-id:log-group-name -
@entityには、Explore 関連のテレメトリ機能のエンティティに関連するフラット化された JSON が含まれています。例えば、この JSON はエンティティを表すことができます。
{ "Entity": { "KeyAttributes": { "Type": "Service", "Name": "PetClinic" }, "Attributes": { "PlatformType": "AWS::EC2", "EC2.InstanceId": "i-1234567890123" } } }このエンティティの場合、抽出されたシステムフィールドは次のとおりです。
@entity.KeyAttributes.Type = Service @entity.KeyAttributes.Name = PetClinic @entity.Attributes.PlatformType = AWS::EC2 @entity.Attributes.EC2.InstanceId = i-1234567890123
注記
フィールド検出は、標準ログクラスのロググループでのみサポートされます。ログクラスの詳細については、「ログクラス」を参照してください。
CloudWatch Logs Insights では、生成されるフィールドの先頭に @ 記号を挿入します。
CloudWatch Logs は、多くのログタイプで、ログ内のログフィールドも自動的に検出します。これらの自動検出フィールドを以下の表に示します。
CloudWatch Logs Insights が自動的に検出しないフィールドを持つ他のログタイプについては、parse コマンドを使用して抽出フィールドを抽出および作成してクエリで使用できます。詳細については、「CloudWatch Logs Insights 言語のクエリ構文」を参照してください。
検出されたログフィールドの名前が @ 文字で始まる場合は、この名前の先頭に @ が追加されて CloudWatch Logs Insights に表示されます。たとえば、ログフィールド名が @example.com である場合、このフィールド名は @@example.com と表示されます。
注記
@message、@timestamp、@log を除き、検出されたフィールドのフィールドインデックスを作成できます。フィールドインデックスの詳細については、「フィールドインデックスを作成してクエリパフォーマンスを改善し、スキャン量を削減する」を参照してください。
| ログタイプ | 検出されるログフィールド |
|---|---|
|
Amazon VPC フローログ |
|
|
Route 53 ログ |
|
|
Lambda ログ |
Lambda ログ行に X-Ray トレース ID が含まれている場合は、 CloudWatch Logs Insights は、Lambda ログのログフィールドを自動的に検出します。ただし、各ログイベントに埋め込まれている最初の JSON フラグメントのみが検出されます。Lambda ログイベントに複数の JSON フラグメントが含まれている場合は、 |
|
CloudTrail ログ JSON 形式のログ |
詳細については、「JSON ログのフィールド」を参照してください。 |
|
その他のログタイプ |
|
JSON ログのフィールド
CloudWatch Logs Insights では、ドット表記を使用して JSON フィールドを表します。このセクションでは、ドット表記を使用して JSON フィールドにアクセスする方法を、JSON イベントとコードスニペットによる例で説明します。
例: JSON イベント
{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EX_PRINCIPAL_ID", "arn": "arn: aws: iam: : 123456789012: user/Alice", "accessKeyId": "EXAMPLE_KEY_ID", "accountId": "123456789012", "userName": "Alice" }, "eventTime": "2014-03-06T21: 22: 54Z", "eventSource": "ec2.amazonaws.com", "eventName": "StartInstances", "awsRegion": "us-east-2", "sourceIPAddress": "192.0.2.255", "userAgent": "ec2-api-tools1.6.12.2", "requestParameters": { "instancesSet": { "items": [ { "instanceId": "i-abcde123" } ] } }, "responseElements": { "instancesSet": { "items": [ { "instanceId": "i-abcde123", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } } ] } } }
サンプルの JSON イベントには、userIdentity という名前のオブジェクトが含まれています。userIdentity には type という名前のフィールドが含まれます。ドット表記を使用して type の値を表すには、userIdentity.type を使用します。
サンプル JSON イベントには、ネストされたフィールド名と値のリストにフラット化された配列が含まれています。requestParameters.instancesSet の最初の項目である instanceId の値を表すには、requestParameters.instancesSet.items.0.instanceId を使用します。instanceID フィールドの前にある番号 0 は、items フィールドの値の場所を指します。次の例には、JSON ログイベントでネストされた JSON フィールドにアクセスする方法を示すコードスニペットが含まれています。
例: クエリ
fields @timestamp, @message | filter requestParameters.instancesSet.items.0.instanceId="i-abcde123" | sort @timestamp desc
このコードスニペットは、ネストされた JSON フィールド instanceId の値にアクセスする filter コマンドと共にドット表記を使用するクエリを示します。このクエリは、instanceId の値が "i-abcde123" に等しいメッセージをフィルタリングし、指定した値を含むログイベントをすべて返します。
注記
CloudWatch Logs Insights は、1 つの JSON ログから最大 200 個のログイベントフィールドを抽出できます。抽出されない追加のフィールドについては、parse コマンドを使用して、メッセージフィールドの未処理の未解析ログイベントからこれらのフィールドを抽出できます。parse コマンドの詳細については、「Amazon CloudWatch ユーザーガイド」の「クエリ構文」を参照してください。