ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

処理ルールを設定してSumo Logicが取り込むログを制御する

こんにちは。クラウドインテグレーション事業部の栗原です。

今回は、Sumo Logicが取り込むログの一部を除外したり、 特定の文字列をマスクしたりといった前処理を行うことができる「処理ルール」についてご紹介します。

処理ルールとは?

処理ルールは、データソースからSumo Logicに送信されたログデータに対してフィルタリングもしくは変換を行う機能です。 Sumo Logicでは次のような処理ルールを適用することができます。

除外ルール

Sumo Logicに取り込みたくないメッセージを定義するルールです。ブラックリストフィルタ として動作します。 ルールに一致するメッセージは削除され、取り込みログデータ量にもカウントされません。

包含ルール

Sumo Logicに取り込むメッセージを明示的に定義するルールです。ホワイトリストフィルタ として動作します。 特定のログメッセージやログフィールドのみ取り込みたい場合に設定するとよいでしょう。

ハッシュルール

ルールに一致するメッセージを、その値から生成された ハッシュ値に置換 する処理ルールです。 個人情報などの機密情報やクレジットカード番号などを匿名化することができます。

マスクルール

ルールに一致するメッセージを、マスク文字列に置換 する処理ルールです。 ハッシュルールと同様に、ログの匿名化をすることができます。 また、取り込みログデータ量はマスクフィルタ適用後の値で計算されるため、 マスクルールでログサイズを小さくすることで全体的な取り込みボリュームを抑えることにも役立ちます。

処理ルール作成時の注意事項

以下のような制限があるようです。

  • 除外ルール、包含ルール、ハッシュルール、マスクルールは 1MB までの単一行のログと 2,000 行または 512KB まで (いずれかに達するまで) の複数行のログを処理可能
  • 除外ルールは他のすべてのルールに優先される
  • マスクルールとハッシュルールは除外ルールと包含ルールよりも後に適用される

試してみる

それでは実際に試してみたいと思います。今回は、以下のログを使用します。

[DEBUG] [session=LG38ADSLXB83FGK8] [mail=user1@example.com]
[INFO] [session=9F16KHK1CRDRIRS2] [mail=user2@example.com]
[ERROR] [session=VU24Q69N9YUTMNKD] [mail=user3@example.com]

除外ルール

[DEBUG] を含むログ行を除外して取り込みます。

左ペインの [Manage Data] - [Collection] を選択し、コレクタ一覧を表示した後、設定対象のコレクタの [edit] を選択します。 f:id:kurihara_fv:20190728234150p:plain

遷移先の画面下部の [Processing Rules for Logs] で [Add Rule] を選択すると、入力欄が表示されます。 f:id:kurihara_fv:20190728234229p:plain

以下のように入力し、[Apply] を選択します。
フィルタには除外対象とするログメッセージを正規表現で指定しています。 f:id:kurihara_fv:20190731100210p:plain

ルールが追加されたことを確認し、[Save] を選択してコレクタ一覧に戻ります。 f:id:kurihara_fv:20190728234413p:plain

これで設定完了です。
続いて、curl コマンドでログをアップロードします。

curl -v -X POST -T [ログファイル名] [HTTPソースURL]

※HTTPソースURLはコレクタ一覧の [Show URL] を選択すると、 f:id:kurihara_fv:20190728234628p:plain URLが表示されるので、こちらを利用します。 f:id:kurihara_fv:20190728234701p:plain

ログを検索すると [DEBUG] 以外の2件が取り込まれていることが確認できました。 f:id:kurihara_fv:20190728234853p:plain

包含ルール

次に、[DEBUG] を含むログ行のみを取り込みます。 以下のように、Typeを Include messages that match にした設定を追加します。 f:id:kurihara_fv:20190728234923p:plain

設定完了後、同じようにログを送信し、検索を行います。
※設定が反映されるまでには少し時間がかかるようです。ルールが適用されない場合は少し時間をおいて再度実施してみてください。

今度は、[DEBUG]の1件のみ取り込まれていますね。 f:id:kurihara_fv:20190728235200p:plain

ハッシュルールとマスクルール

最後に、ハッシュルールとマスクルールを試してみます。 セッションIDをハッシュ化し、メールアドレスをマスク化するルールを設定します。

処理ルールは以下の通りです。 ハッシュ化もしくはマスク化する部分を "()"で囲む必要があります。

f:id:kurihara_fv:20190728235313p:plain
ハッシュルール
f:id:kurihara_fv:20190728235337p:plain
マスクルール

[Save] を選択して設定完了します。 f:id:kurihara_fv:20190728235446p:plain

ログアップロード後、検索を行うと、それぞれハッシュ化、マスク化が行われていることが確認できました。 f:id:kurihara_fv:20190728235455p:plain

さいごに

処理ルールを利用することでデータソース側のログに手を加えることなく、Sumo Logicに取り込むログの制御を行うことができました。
ログの加工はできないけれども、取り込むデータには制限をかけたいなどといった場合には、活用できる機能だと思います。