將非結構化文字轉換成 JSON

在 IBM® Cloud Logs中,您可以使用 剖析 規則將非結構化文字轉換為 1 個以上 JSON 欄位。

開始之前

剖析規則組織在 規則群組內。 每一個群組都有一個名稱及一組規則,它們之間具有邏輯關係。 會根據規則群組的順序 (從開始到結束) 來處理日誌。 然後由規則群組內的規則順序,並根據它們之間的邏輯運算子 (AND/OR) 來處理它們。規則可協助您處理、剖析及重組日誌資料,以準備監視及分析。 如需相關資訊,請參閱 使用規則群組

使用具名擷取群組來定義新欄位

剖析規則使用 RegEx 具名擷取群組來定義新欄位。

  • 擷取的群組會變成剖析的日誌欄位。
  • 與每一個群組相關聯的值會變成欄位的值。
  • RegEx 不需要符合整個日誌。
  • 只有 RegEx 具名擷取群組 ( < > 內的值) 及其擷取的值是重新建構日誌的一部分。

配置剖析規則

完成下列步驟,以建立具有 1 個剖析規則的規則群組:

  1. 按一下 資料管線 圖示 資料管線圖示 > 剖析規則,然後按一下 新建規則群組

  2. 詳細資料 區段中,輸入 規則群組名稱規則群組說明

  3. 規則比對器 區段中,配置應用程式、子系統及嚴重性,以定義要套用規則群組所包含之規則的日誌。

  4. 規則 區段中,選取 剖析 「剖析規則」圖示

    1. 輸入名稱。

    2. 選擇性地輸入說明。

    3. 選取來源欄位。 這是套用 RegEx 的欄位。

    4. 選擇目的地欄位。 這是將移入套用 RegEx 表示式之結果的欄位。

    5. 輸入 正規表示式 (RegEx)。

    6. 如果您想要啟用規則,請將狀態切換為 ACTIVE

  5. 按一下 新增規則 並選取所需的規則類型,以新增其他規則群組。 切換 AND/OR 以選取您要如何處理其他規則。

  6. 按一下建立規則群組

日誌轉換範例

下列範例採用從 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": ""
}