本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
欄位索引語法和配額
您可以透過建立欄位索引政策來建立欄位索引。您可以建立套用至整個帳戶的帳戶層級索引政策,也可以建立僅適用於單一日誌群組的政策。對於整個帳戶的索引政策,您可以有一個適用於帳戶中所有日誌群組的索引政策。您也可以建立套用到帳戶中日誌群組子集的帳戶層級索引政策,由其日誌群組名稱的字首選取。如果您在同一個帳戶中有多個帳戶層級政策,則這些政策的日誌群組名稱字首無法重疊。
日誌群組層級欄位索引政策會覆寫帳戶層級欄位索引政策:如果您建立日誌群組層級索引政策,該日誌群組只會使用該政策,並忽略帳戶層級政策。
日誌事件與欄位索引名稱的比對會區分大小寫。例如, 的欄位索引與包含 的日誌事件RequestId
不相符requestId
。
您最多可以有 20 個帳戶層級索引政策。如果您有多個帳戶層級索引政策篩選為日誌群組名稱字首,則其中沒有任何兩個可以使用相同或重疊的日誌群組名稱字首。例如,如果您有一個政策篩選為以 開頭的日誌群組my-log
,則無法將另一個欄位索引政策篩選為 my-logpprod
或 my-logging
。
如果您的帳戶層級索引政策沒有名稱字首且適用於所有日誌群組,則無法建立其他帳戶層級索引政策。
每個索引政策都有下列配額和限制:
-
政策最多可包含 20 個欄位。
-
每個欄位名稱最多可包含 100 個字元。
-
若要在以 開頭的日誌群組中建立自訂欄位的索引
@
,您必須在欄位名稱的@
開頭指定具有額外 的欄位。例如,如果您的日誌事件包含名為 的欄位@userId
,您必須指定@@userId
為此欄位建立索引。
產生的欄位和預留欄位
CloudWatch Logs Insights 會在每個日誌事件中自動產生系統欄位。這些產生的欄位字首為 @
,如需所產生欄位的詳細資訊,請參閱 支援的日誌和探索的欄位。
在這些產生的欄位中,支援使用下列項目做為欄位索引:
-
@logStream
-
@ingestionTime
-
@requestId
-
@type
-
@initDuration
-
@duration
-
@billedDuration
-
@memorySize
-
@maxMemoryUsed
-
@xrayTraceId
-
@xraySetmentId
若要為這些產生的欄位編製索引,您不需要在指定@
時新增額外的 ,因為您必須對開頭為 的自訂欄位執行此操作@
。例如,若要建立 的欄位索引@logStream
,只要指定 @logStream
做為欄位索引即可。
JSON 日誌中的子欄位和陣列欄位
您可以在 JSON 日誌中為巢狀子欄位或陣列欄位的欄位編製索引。
例如,您可以在此日誌的 欄位內建立accessKeyId
子userIdentity
欄位的索引:
{ "eventVersion": "1.0", "userIdentity": { "type": "IAMUser", "principalId": "EXAMPLE_PRINCIPAL_ID", "arn": "arn: aws: iam: : 123456789012: user/Alice", "accessKeyId": "11112222", "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", "currentState": { "code": 0, "name": "pending" }, "previousState": { "code": 80, "name": "stopped" } }] } } }
若要建立此欄位,您可以在建立欄位索引和在查詢中指定欄位索引時,使用點符號 (userIdentity.accessKeyId
) 來參考它。查詢可能如下所示:
fields @timestamp, @message | filterIndex userIdentity.accessKeyId = "11112222"
在先前的範例事件中, instanceId
欄位位於 陣列中 requestParameters.instancesSet.items
若要在建立欄位索引時和查詢時都代表此欄位,請將其稱為 requestParameters.instancesSet.items.0.instanceId
0,表示該欄位在陣列中的位置。
然後,此欄位的查詢可以是下列項目:
fields @timestamp, @message | filterIndex requestParameters.instancesSet.items.0.instanceId="i-abcde123"