使用「取代」規則來修正日誌資料
在 IBM® Cloud Logs中,您可以使用 取代 規則來變更日誌結構、修復格式不正確的日誌、變更日誌嚴重性或遮罩資訊。
開始之前
剖析規則組織在 規則群組內。 每一個群組都有一個名稱及一組規則,它們之間具有邏輯關係。 會根據規則群組的順序 (從開始到結束) 來處理日誌。 然後由規則群組內的規則順序,並根據它們之間的邏輯運算子 (AND/OR) 來處理它們。規則可協助您處理、剖析及重組日誌資料,以準備監視及分析。 如需相關資訊,請參閱 使用規則群組。
配置取代規則
請完成下列步驟:
-
按一下 資料管線 圖示
> 剖析規則,然後按一下 新建規則群組。
-
在 詳細資料 區段中,輸入 規則群組名稱 和 規則群組說明。
-
在 規則比對器 區段中,配置應用程式、子系統及嚴重性,以定義要套用規則群組所包含之規則的日誌。
-
在 規則 區段中,選取 取代
。
-
輸入名稱。
-
選擇性地輸入說明。
-
選取來源欄位。 這是套用 RegEx 的欄位。
-
選擇目的地欄位。 這是將移入套用 RegEx 表示式之結果的欄位。
-
輸入 正規表示式 (RegEx)。
-
輸入將取代相符 RegEx的取代字串。
-
如果您想要啟用規則,請將狀態切換為 ACTIVE。
-
-
按一下 新增規則 並選取所需的規則類型,以新增其他規則群組。 切換 AND/OR 以選取您要如何處理其他規則。
-
按一下建立規則群組。
範例: 修復格式不正確的 JSON 日誌
取代規則的一般使用案例是修復格式不正確的 JSON 日誌。
在下列範例中,傳送的 JSON 日誌具有日期字首,會岔斷 JSON 格式,並將它們轉換成非結構化日誌。
RegEx 會識別子字串,並移除日誌中不正確的字串。
原始日誌為:
2020-08-07 {“status”:”OK”, “user”:John Smith”, “ops”:”J1”}
RegEx:
.*{
用來取代評估 RegEx 表示式之結果的字串為:
{
產生的日誌:
{"status":"OK", "user":"John Smith", "ops":"J1"}
範例: 使用巢狀欄位重新建置日誌
下列範例顯示如何使用取代規則來重建具有巢狀欄位的日誌。 巢狀欄位是擷取及剖析規則中的限制項。
原始日誌:
{"ops":"G1","user":"John Smith-2125 Sierra Ventura Dr.-Sunnyvale-CA-94054","status":"305"}
RegEx:
(.*user"):"([^-]*)-([^-]*)-([^-]*)-([^-]*)-([^-]*)",([^$]*)
每一個括弧都代表一個可由 $n n=1..7 處理的擷取群組。
取代字串:
$1:{"name":"$2","address":"$3","city":"$4","state":"$5","zip":"$6"},$7
產生的日誌;
{
"ops":"G1",
"User":{
"name":"John Smith",
"address":"2125 Sierra Ventura Dr.",
"city":"Sunnyvale",
"state":"CA",
"Zip":"94054"
},
"status":"305"
}
範例: 將字串化 (跳出) JSON 欄位轉換成物件
inner_json 規則是一個特殊取代規則,在包含字串化 (跳出) 的 JSON 日誌中採用欄位值 JSON,並將它轉換成物件。
在下列範例中,原始日誌為:
{
"server":"opa",
"IBC":"45ML",
"thread":"1201",
"message":"{\"first_name\":\"John\", \"last_name\":\"Smith\", \"userID\":\"AB12345\", \"duration\":45}"
}
欄位訊息具有跳出合法 JSON 的字串值。
我們的特殊取代規則會將欄位名稱從原始名稱 "message" 變更為 "inner_json":
RegEx:
“message”\s*:\s*”{\s*\\”
此 RegEx 會識別具有跳出 JSON 開頭的欄位名稱訊息。
取代字串為:
“inner_json”:”{\”
此範例只會取代欄位名稱,而不會取代其他任何項目。
產生的日誌:
{
"server":"opa",
"inner_json":{
"first_name":"John" ,
"last_name":"Smith" ,
"userID":"AB12345" ,
"duration":45
}
}