本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
貢獻者見解規則語法 CloudWatch
本節說明 Contributor Insights 規則的語法。只有在透過輸入JSON區塊來建立規則時,才使用此語法。如果您使用精靈建立規則,您便不需要了解語法。如需使用精靈建立規則的詳細資訊,請參閱 在中建立貢獻者見解規則 CloudWatch。
所有規則與日誌事件欄位名稱及值進行的比對都區分大小寫。
下列範例說明記JSON錄檔的語法。
{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "LogGroupNames": [ "API-Gateway-Access-Logs*", "Log-group-name2" ], "LogFormat": "JSON", "Contribution": { "Keys": [ "$.ip" ], "ValueOf": "$.requestBytes", "Filters": [ { "Match": "$.httpMethod", "In": [ "PUT" ] } ] }, "AggregateOn": "Sum" }
Contributor Insights 規則中的欄位
- 結構描述
-
分析 CloudWatch 記錄檔資料的規則值必須始終為
Schema
{"Name": "CloudWatchLogRule", "Version": 1}
- LogGroupNames
-
字串陣列。針對陣列中的每個元素,您可以選擇在字串的結尾使用
*
來包含所有名稱開頭為該字首的日誌群組。請小心搭配日誌群組名稱使用萬用字元。每個符合規則的日誌事件都會產生費用。如果您不小心搜尋了比您預期數量更多的日誌群組,您可能會產生未預期的費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價
。 - LogGroupARNs
-
如果您要在 CloudWatch 跨帳戶觀察性監視帳戶中建立此規則,則可以使用在連結
LogGroupARNs
至監視帳戶的來源帳戶中指定記錄群組,並在監視帳戶本身中指定記錄群組。您必須在規則中指定LogGroupNames
或LogGroupARNs
,但不能同時指定兩者。LogGroupARNs
是字串陣列。對於陣列中的每個元素,您可以在某些情況下選擇使用*
作為萬用字元。例如,您可以指定arn:aws:logs:us-west-1:*:log-group/MyLogGroupName2
,以指定美國西部 (加利佛尼亞北部) 區域中所有來源帳戶以及監控帳戶中命名為MyLogGroupName2
的日誌群組。您也可以指定arn:aws:logs:us-west-1:111122223333:log-group/GroupNamePrefix*
,來指定 111122223333 帳戶在美國西部 (加利佛尼亞北部) 中名稱以GroupNamePrefix
開頭的所有日誌群組。您不能指定部分 AWS 帳戶 ID 作為帶有萬用字元的前綴。
請小心使用萬用字元搭配記錄群組ARNs。每個符合規則的日誌事件都會產生費用。如果您不小心搜尋了比您預期數量更多的日誌群組,您可能會產生未預期的費用。如需詳細資訊,請參閱 Amazon CloudWatch 定價
。 - LogFormat
-
有效值為
JSON
和CLF
。 - Contribution
-
此物件包含
Keys
陣列 (其中最多可以有四個成員)、選用的單一ValueOf
,以及其中最多可包含四個Filters
的選用陣列。 - 鍵
-
最多四個日誌欄位的陣列,會用來作為分類參與者的維度。如果您輸入的索引鍵超過一個,索引鍵值的每個唯一組合都會計為唯一的參與者。必須使用JSON屬性格式標記法來指定欄位。
- ValueOf
-
(選用) 請只在您指定
Sum
作為AggregateOn
的值時才使用此項目。ValueOf
會使用數值指定日誌欄位。在這種規則類型中,參與者會根據此欄位值的總和進行排名,而非在日誌項目中發生的次數。例如,如果您想要根據其在特定期間內的總BytesSent
排名參與者,您可將ValueOf
設為BytesSent
,並為AggregateOn
指定Sum
。 - 篩選條件
-
(選用) 指定最多四個篩選條件的陣列,縮小包含在報告中的日誌事件。如果您指定多個篩選器,參與者見解會使用邏輯AND運算子來評估它們。您可以使用此項目來在您的搜尋中篩選掉不相關的日誌事件,或是您可以用來選取單一參與者以分析其行為。
陣列中的每個成員都必須包含
Match
欄位,以及一個指出要使用比對運算子類型的欄位。Match
欄位會指定要在篩選條件中評估的日誌欄位。log 欄位是使用JSON屬性格式標記法指定的。比對運算子欄位必須是以下其中一個:
In
、NotIn
、StartsWith
、GreaterThan
、LessThan
、EqualTo
、NotEqualTo
或IsPresent
。如果運算子欄位是In
、NotIn
或StartsWith
,其後會跟隨一個要檢查的字串值陣列。Contributor Insights 會使用 OR 運算子評估字串值陣列。陣列最多可包含 10 個字串值。如果運算子欄位是
GreaterThan
、LessThan
、EqualTo
或NotEqualTo
,其後會跟隨要比較的單一數值。如果運算子欄位是
IsPresent
,其後會跟隨true
或false
。此運算子會根據日誌事件中是否存在指定的日誌欄位來比對日誌事件。僅isPresent
適用於JSON屬性葉節點中的值。例如,尋找與c-count
相符的篩選條件不會評估值為details.c-count.c1
的日誌事件。請參閱以下四個篩選條件範例:
{"Match": "$.httpMethod", "In": [ "PUT", ] } {"Match": "$.StatusCode", "EqualTo": 200 } {"Match": "$.BytesReceived", "GreaterThan": 10000} {"Match": "$.eventSource", "StartsWith": [ "ec2", "ecs" ] }
- AggregateOn
-
有效值為
Count
和Sum
。指定是要根據發生計數彙整報告,還是在ValueOf
欄位中指定的欄位值總和彙整報告。
JSON屬性格式表示法
Keys
ValueOf
、和Match
欄位會遵循具有點標記法的JSON屬性格式,其中$
代表JSON物件的根目錄。其後會跟隨一個句點,然後是包含子屬性名稱的英數字串。其支援多個屬性層級。
字串的第一個字元只能是 A-Z 或 a-z。字串的後續字元可以是 A-Z、a-z 或 0-9。
下列清單說明JSON屬性格式的有效範例:
$.userAgent $.endpoints[0] $.users[1].name $.requestParameters.instanceId
CLF記錄檔規則中的其他欄位
通用日誌格式 (CLF) 日誌事件沒有像這樣JSON的字段的名稱。若要提供要用於貢獻者見解規則的欄位,可以將CLF記錄事件視為含索引從1
開始的陣列。您可以將第一個欄位指定為 "1"
,將第二個欄位指定為 "2"
,以此類推。
為了使CLF日誌的規則更易於閱讀,您可以使用Fields
。這可讓您為CLF欄位位置提供命名別名。例如,您可以指定位置 "4" 是一個 IP 位址。指定之後,IpAddress
便可以用來在規則的 Keys
、ValueOf
和 Filters
中作為屬性。
以下是使用Fields
欄位之CLF記錄檔規則的範例。
{ "Schema": { "Name": "CloudWatchLogRule", "Version": 1 }, "LogGroupNames": [ "API-Gateway-Access-Logs*" ], "LogFormat": "CLF", "Fields": { "4": "IpAddress", "7": "StatusCode" }, "Contribution": { "Keys": [ "IpAddress" ], "Filters": [ { "Match": "StatusCode", "EqualTo": 200 } ] }, "AggregateOn": "Count" }