本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
使用篩選條件模式來比對 JSON 日誌事件中的詞彙
當您的日誌以 JSON 格式建構時,請使用 JSON 篩選條件模式。這些模式可讓您以 JSON 物件中的特定欄位和值為目標,使其非常適合:
應用程式日誌:以特定事件類型、使用者 IDs或錯誤碼為目標
AWS 服務日誌:篩選 CloudTrail、VPC 流程日誌或其他結構化 AWS 日誌
微服務:監控輸出結構化 JSON 的容器化應用程式
例如,使用 { $.eventType = "UpdateTrail" }
尋找特定 CloudTrail 事件,或{ $.sourceIPAddress != 123.123.* }
識別來自非預期 IP 範圍的流量。
展開下列各節並瀏覽標籤,查看範例,示範如何為常見監控案例建立 JSON 篩選模式,從基本的單一條件模式到複雜的複合表達式。
下列範例示範如何在常見監控和故障診斷案例中使用篩選模式搭配 JSON 日誌事件。每個範例都包含篩選條件模式語法,以及您要套用它的實際使用案例。
這些模式適用於來自應用程式、 AWS 服務、容器或自訂系統的任何 JSON 格式日誌。您可以將它們與指標篩選條件搭配使用,以建立 CloudWatch 指標、將日誌路由到其他服務的訂閱篩選條件,或即時監控日誌的 Live Tail。
如果要使用 JSON 日誌事件範例測試篩選條件模式範例,則必須在單行中輸入 JSON 日誌範例。
用於測試的範例 JSON 日誌事件:
{
"eventType": "UpdateTrail",
"sourceIPAddress": "111.111.111.111",
"arrayKey": [
"value",
"another value"
],
"objectList": [
{
"name": "a",
"id": 1
},
{
"name": "b",
"id": 2
}
],
"SomeObject": null,
"cluster.name": "c"
}
- Monitor application events by type
-
追蹤 JSON 應用程式日誌中的特定事件類型,以監控系統行為。
篩選條件模式:
{ $.eventType = "UpdateTrail" }
使用案例:
應用程式監控:追蹤特定使用者動作或系統事件
業務分析:計算特定事件類型的出現次數
故障診斷:調查問題時專注於特定操作
此模式適用於包含 eventType 欄位的任何 JSON 日誌,例如:
應用程式日誌: {"eventType": "UserLogin", "userId": "123"}
系統日誌: {"eventType": "ConfigUpdate", "component": "database"}
API 日誌: {"eventType": "UpdateTrail", "source": "cloudtrail"}
- Block suspicious IP addresses
-
識別不符合安全監控預期 IP 地址模式的流量。
篩選條件模式:
{ $.sourceIPAddress != 123.123.* }
使用案例:
安全性監控:從非預期的 IP 範圍尋找請求
存取控制:監控公司網路外的流量
威脅偵測:識別潛在的未經授權存取嘗試
- Track specific application events
-
監控 JSON 陣列中的特定值,以追蹤應用程式行為和使用者動作。
篩選條件模式:
{ $.arrayKey[0] = "value" }
使用案例:
- Find events using pattern matching
-
使用 regex 模式來尋找可靈活比對欄位值的事件。
篩選條件模式:
{ $.eventType = %Trail% }
使用案例:
- Monitor application data with wildcards
-
使用萬用字元和 regex 尋找任何陣列元素中的特定模式。
篩選條件模式:
{ $.arrayKey[*] = %val.{2}% }
使用案例:
資料驗證:尋找包含符合特定模式之值的陣列
內容篩選:監控使用者產生的內容是否有特定模式
品質保證:跨應用程式日誌追蹤資料格式合規性
- Track network traffic patterns
-
使用 regex 模式和萬用字元監控特定範圍內的 IP 地址。
篩選條件模式:
{ $.* = %111\.111\.111\.1[0-9]{1,2}% }
使用案例:
網路監控:追蹤來自特定 IP 子網路的流量
安全性分析:監控來自特定網路範圍的存取
負載平衡:分析跨 IP 範圍的流量分佈
配額
在屬性選取器中,您只能使用最多一個萬用字元選取器。
- Handle JSON properties with special characters
-
存取在其名稱中包含句點或其他特殊字元的 JSON 屬性。
篩選條件模式:
{ $.['cluster.name'] = "c" }
使用案例:
- Find null or missing values
-
監控可能表示應用程式問題的遺失或 null 值。
篩選條件模式:
{ $.SomeObject IS NULL }
使用案例:
資料品質監控:尋找缺少必要欄位的記錄
應用程式偵錯:追蹤何時不存在預期資料
錯誤偵測:監控未完成的 API 回應或資料庫查詢
- Detect missing configuration fields
-
尋找完全缺少預期欄位的日誌,這可能表示組態問題。
篩選條件模式:
{ $.SomeOtherObject NOT EXISTS }
使用案例:
組態驗證:確保日誌中存在所有必要欄位
API 監控:追蹤不完整的請求或回應
資料管道監控:尋找缺少預期結構描述欄位的記錄
當您需要使用邏輯運算子 AND ("&&") 和 OR ("||") 結合多個條件時,請使用複合表達式。這些模式可協助您建立複雜的監控規則,這些規則需要滿足多個條件,或在多種情況下觸發。
複合表達式支援括號 ("()"),並遵循標準操作順序:() > && > ||。當簡單的單一條件篩選條件不足以滿足您的監控需求時,請使用這些模式。
用於測試的範例 JSON 日誌事件:
{
"user": {
"id": 1,
"email": "John.Stiles@example.com"
},
"users": [
{
"id": 2,
"email": "John.Doe@example.com"
},
{
"id": 3,
"email": "Jane.Doe@example.com"
}
],
"actions": [
"GET",
"PUT",
"DELETE"
],
"coordinates": [
[0, 1, 2],
[4, 5, 6],
[7, 8, 9]
]
}
- Monitor specific user actions
-
透過結合使用者識別與動作監控,追蹤特定使用者執行特定動作的時間。
篩選條件模式:
{ ($.user.id = 1) && ($.users[0].email = "John.Doe@example.com") }
使用案例:
安全性稽核:追蹤特定管理員使用者何時存取敏感資源
合規監控:確保特定使用者僅執行已核准的動作
使用者行為分析:監控使用者屬性和動作之間的關聯性
- Alert on any suspicious activity
-
建立廣泛的監控,在發生數個相關情況時觸發。
篩選條件模式:
{ $.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch" && $.actions[2] = "nonmatch" }
使用案例:
- Require multiple conditions for alerts
-
在觸發警示之前,需要滿足多個特定條件,以減少誤報。
篩選條件模式:
{ ($.user.email = "John.Stiles@example.com" || $.coordinates[0][1] = "nonmatch") && $.actions[2] = "nonmatch" }
使用案例:
高可信度提醒:只有在多個可疑指標對齊時提醒
複雜業務規則:監控需要多個條件的案例
雜訊降低:防止來自單一隔離事件的警示
配額
在屬性選取器中,您只能使用最多一個萬用字元選取器,在具有複合運算式的篩選條件模式中,只能使用最多三個萬用字元選取器。
- Monitor failed correlation attempts
-
追蹤資料欄位之間的預期關係何時不相符,這可能表示資料品質問題。
篩選條件模式:
{ ($.user.id = 2 && $.users[0].email = "nonmatch") || $.actions[2] = "GET" }
使用案例:
資料驗證:尋找相關欄位不符合預期模式的記錄
系統完整性:監控資料損毀或同步問題
品質保證:追蹤資料關係何時分解