置換ルールを使用したログ・データの修正

IBM® Cloud Logsでは、 「置換」 規則を使用して、ログ構造の変更、誤った形式のログの修復、ログ重大度の変更、または情報のマスクを行うことができます。

開始前に

語句解析ルールは、 *「ルール・グループ」*内に編成されています。 各グループには、名前とルールのセットがあり、それらの間に論理関係があります。 ログは、ルール・グループの順序 (最初から最後まで) に従って処理されます。 その後、ルール・グループ内のルールの順序、およびルール・グループ間の論理演算子 (AND/OR) に従って処理されます。 ルールは、ログ・データを処理、解析、および再構成して、モニターおよび分析の準備をするのに役立ちます。 詳しくは、 ルール・グループの操作 を参照してください。

置換ルールの構成

以下のステップを実行します。

  1. 「データ・パイプライン」 アイコン 「データ・パイプライン」アイコン > 「ルールの構文解析」 をクリックし、 「新規ルール・グループ」 をクリックします。

  2. 「詳細」 セクションで、 「ルール・グループ名」 および *「ルール・グループの説明」*を入力します。

  3. 「ルール・マッチャー」 セクションで、ルール・グループに含まれるルールを適用するログを定義するアプリケーション、サブシステム、および重大度を構成します。

  4. 「ルール」 セクションで、 「置換」 「語句解析ルールの置換」アイコン を選択します。

    1. 名前を入力します。

    2. オプションで、説明を入力します。

    3. ソース・フィールドを選択する。 これは、 RegEx が適用されるフィールドです。

    4. 宛先フィールドを選択します。 これは、 RegEx 式を適用した結果が設定されるフィールドです。

    5. 「正規表現」 (RegEx) を入力します。

    6. 一致した RegExを置換する置換ストリングを入力します。

    7. ルールを有効にする場合は、状況を 「アクティブ」 に切り替えます。

  5. さらにルール・グループを追加するには、 「ルールの追加」 をクリックし、目的のルール・タイプを選択します。 「AND/OR」 を切り替えて、追加ルールの処理方法を選択します。

  6. ルールグループの作成 ]をクリックします。

例: 正しくない形式の 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
  }
}