將非結構化文字轉換成 JSON
在 IBM® Cloud Logs中,您可以使用 剖析 規則將非結構化文字轉換為 1 個以上 JSON 欄位。
開始之前
剖析規則組織在 規則群組內。 每一個群組都有一個名稱及一組規則,它們之間具有邏輯關係。 會根據規則群組的順序 (從開始到結束) 來處理日誌。 然後由規則群組內的規則順序,並根據它們之間的邏輯運算子 (AND/OR) 來處理它們。規則可協助您處理、剖析及重組日誌資料,以準備監視及分析。 如需相關資訊,請參閱 使用規則群組。
使用具名擷取群組來定義新欄位
剖析規則使用 RegEx 具名擷取群組來定義新欄位。
- 擷取的群組會變成剖析的日誌欄位。
- 與每一個群組相關聯的值會變成欄位的值。
- RegEx 不需要符合整個日誌。
- 只有 RegEx 具名擷取群組 (
< >內的值) 及其擷取的值是重新建構日誌的一部分。
配置剖析規則
完成下列步驟,以建立具有 1 個剖析規則的規則群組:
-
按一下 資料管線 圖示
> 剖析規則,然後按一下 新建規則群組。
-
在 詳細資料 區段中,輸入 規則群組名稱 和 規則群組說明。
-
在 規則比對器 區段中,配置應用程式、子系統及嚴重性,以定義要套用規則群組所包含之規則的日誌。
-
在 規則 區段中,選取 剖析
。
-
輸入名稱。
-
選擇性地輸入說明。
-
選取來源欄位。 這是套用 RegEx 的欄位。
-
選擇目的地欄位。 這是將移入套用 RegEx 表示式之結果的欄位。
-
輸入 正規表示式 (RegEx)。
-
如果您想要啟用規則,請將狀態切換為 ACTIVE。
-
-
按一下 新增規則 並選取所需的規則類型,以新增其他規則群組。 切換 AND/OR 以選取您要如何處理其他規則。
-
按一下建立規則群組。
日誌轉換範例
下列範例採用從 Heroku 傳送的 Heroku L/H 類型錯誤日誌作為非結構化日誌,並將它轉換為 JSON 日誌。
原始日誌為:
sock=client at=warning code=H27 desc="Client Request Interrupted" method=POST path="/submit/" host=myapp.herokuapp.com fwd=17.17.17.17 dyno=web.1 connect=1ms service=0ms status=499 bytes=0
RegEx 為:
^(sock=)?(?P<sock>(\S*))\s*at=(?P<severity>\S*)\s*code=(?P<error_code>\S*)\s*desc="(?P<desc>[^"]*)"\s*method=(?P<method>\S*)\s*path="(?P<path>[^"]*)" host=(?P<host>\S*)\s* (request_id=)?(?P<request_id>\S*)\s*fwd="?(?P<fwd>[^"\s]*)"?\s*dyno=(?P<dyno>\S*)\s*connect=(?P<connect>\d*)(ms)?\s*service=(?P<service>\d*)(ms)?\s*status=(?P<status>\d*)\s* bytes=(?P<bytes>\S*)\s*(protocol=)?(?P<protocol>[^"\s]*)$
格式化日誌為:
{
"sock": "client",
"severity": "warning",
"error_code": "H27",
"desc": "Client Request Interrupted",
"method": "POST",
"path": "/submit/",
"host": "myapp.herokuapp.com",
"request_id": "",
"fwd": "17.17.17.17",
"dyno": "web.1",
"connect": "1",
"service": "0",
"status": "499",
"bytes": "0",
"protocol": ""
}