サポートされるログと検出されるフィールド - Amazon CloudWatch Logs

サポートされるログと検出されるフィールド

CloudWatch Logs Insights は、さまざまなタイプのログをサポートします。Amazon CloudWatch Logs に送信されるすべてのログについて、CloudWatch Logs Insights は 5 つのシステムフィールドを自動的に生成します。

  • @message は、生の未解析のログイベントを示します。これは、InputLogeventmessage フィールドに相当します。

  • @timestamp には、ログイベントの timestamp フィールドに含まれるイベントタイムスタンプが含まれます。これは、InputLogeventtimestamp フィールドに相当します。

  • @ingestionTime は、ログイベントが CloudWatch Logs によって受信された時間を示します。

  • @logStream は、ログイベントの追加先のログストリームの名前を示します。ログストリームは、生成時と同じプロセスでログをグループ化します。

  • @log は、 の形式のロググループ識別子です。account-id:log-group-nameこれは、複数のロググループにクエリを実行する場合に、特定のイベントが属しているロググループを識別するのに役立ちます。

CloudWatch Logs Insights では、生成されるフィールドの先頭に @ 記号を挿入します。

CloudWatch Logs は、多くのログタイプで、ログ内のログフィールドも自動的に検出します。これらの自動検出フィールドを以下の表に示します。

CloudWatch Logs Insights が自動的に検出しないフィールドを持つ他のログタイプについては、parse コマンドを使用してエフェメラルフィールドを抽出および作成してクエリで使用できます。詳細については、「CloudWatch Logs Insights のクエリ構文」を参照してください。

検出されたログフィールドの名前が @ 文字で始まる場合は、この名前の先頭に @ が追加されて CloudWatch Logs Insights に表示されます。たとえば、ログフィールド名が @example.com である場合、このフィールド名は @@example.com と表示されます。

ログタイプ 検出されるログフィールド

Amazon VPC フローログ

@timestamp, @logStream, @message, accountId, endTime, interfaceId, logStatus, startTime, version, action, bytes, dstAddr, dstPort, packets, protocol, srcAddr, srcPort

Route 53 ログ

@timestamp, @logStream, @message, edgeLocation, hostZoneId, protocol, queryName, queryTimestamp, queryType, resolverIp, responseCode, version

Lambda ログ

@timestamp, @logStream, @message, @requestId, @duration, @billedDuration, @type, @maxMemoryUsed, @memorySize

Lambda ログ行に X-Ray トレース ID が含まれている場合は、@xrayTraceId および @xraySegmentId フィールドも含まれます。

CloudWatch Logs Insights は、Lambda ログのログフィールドを自動的に検出します。ただし、各ログイベントに埋め込まれている最初の JSON フラグメントのみが検出されます。Lambda ログイベントに複数の JSON フラグメントが含まれている場合は、parse コマンドを使用してログフィールドを解析して抽出できます。詳細については、「JSON ログのフィールド」を参照してください。

CloudTrail ログ

JSON 形式のログ

詳細については、「JSON ログのフィールド」を参照してください。

その他のログタイプ

@timestamp, @ingestionTime, @logStream, @message, @log.

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": "205.251.233.176", "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 ユーザーガイド」の「クエリ構文」を参照してください。