置換ルールを使用したログ・データの修正
IBM® Cloud Logsでは、 「置換」 規則を使用して、ログ構造の変更、誤った形式のログの修復、ログ重大度の変更、または情報のマスクを行うことができます。
開始前に
語句解析ルールは、 *「ルール・グループ」*内に編成されています。 各グループには、名前とルールのセットがあり、それらの間に論理関係があります。 ログは、ルール・グループの順序 (最初から最後まで) に従って処理されます。 その後、ルール・グループ内のルールの順序、およびルール・グループ間の論理演算子 (AND/OR) に従って処理されます。 ルールは、ログ・データを処理、解析、および再構成して、モニターおよび分析の準備をするのに役立ちます。 詳しくは、
ルール・グループの操作 を参照してください。
置換ルールの構成
以下のステップを実行します。
-
「データ・パイプライン」 アイコン
> 「ルールの構文解析」 をクリックし、 「新規ルール・グループ」 をクリックします。
-
「詳細」 セクションで、 「ルール・グループ名」 および *「ルール・グループの説明」*を入力します。
-
「ルール・マッチャー」 セクションで、ルール・グループに含まれるルールを適用するログを定義するアプリケーション、サブシステム、および重大度を構成します。
-
「ルール」 セクションで、 「置換」
を選択します。
-
名前を入力します。
-
オプションで、説明を入力します。
-
ソース・フィールドを選択する。 これは、 RegEx が適用されるフィールドです。
-
宛先フィールドを選択します。 これは、 RegEx 式を適用した結果が設定されるフィールドです。
-
「正規表現」 (RegEx) を入力します。
-
一致した RegExを置換する置換ストリングを入力します。
-
ルールを有効にする場合は、状況を 「アクティブ」 に切り替えます。
-
-
さらにルール・グループを追加するには、 「ルールの追加」 をクリックし、目的のルール・タイプを選択します。 「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
}
}