使用篩選條件模式來比對 JSON 日誌事件中的詞彙 - Amazon CloudWatch Logs

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用篩選條件模式來比對 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% }

使用案例:

  • 彈性事件追蹤:尋找包含特定文字模式的所有事件

  • API 監控:追蹤 API 系列而不指定確切的名稱

  • 日誌分析:在事件名稱或描述中搜尋部分相符項目

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" }

使用案例:

  • Kubernetes 監控:追蹤容器日誌中的叢集名稱

  • 組態追蹤:使用虛線屬性名稱監控設定

  • 第三方整合:使用特殊命名慣例處理來自系統的日誌

Find null or missing values

監控可能表示應用程式問題的遺失或 null 值。

篩選條件模式:

{ $.SomeObject IS NULL }

使用案例:

  • 資料品質監控:尋找缺少必要欄位的記錄

  • 應用程式偵錯:追蹤何時不存在預期資料

  • 錯誤偵測:監控未完成的 API 回應或資料庫查詢

Detect missing configuration fields

尋找完全缺少預期欄位的日誌,這可能表示組態問題。

篩選條件模式:

{ $.SomeOtherObject NOT EXISTS }

使用案例:

  • 組態驗證:確保日誌中存在所有必要欄位

  • API 監控:追蹤不完整的請求或回應

  • 資料管道監控:尋找缺少預期結構描述欄位的記錄

注意

目前不支援變數 IS NOTEXISTS

當您需要使用邏輯運算子 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" }

使用案例:

  • 資料驗證:尋找相關欄位不符合預期模式的記錄

  • 系統完整性:監控資料損毀或同步問題

  • 品質保證:追蹤資料關係何時分解