2020年11月5日木曜日

syslog-ng Store Box大活用連載企画第11回「フィルターを使用して、必要なログのみ保存してみる!」

SSBフィルター設定画面例

螺子です。syslog-ng Store Box(SSB)は、さまざまなフィルター機能があります。フィルター機能を使用して必要なログのみ保存することができます。


今回は、SSBのフィルター機能を使用して、必要なログのみ保存してみます。






これまでの連載記事:

以下では、ログの送信元アドレスが"10.0.2.212"でメッセージに"root"が含まれているログ、またはログの送信元アドレスが"10.0.2.116"でメッセージに"Administrator"が含まれているログをフィルターして指定したログスペースに保存したいと思います。



Add filterによるフィルター

SSBで、ログをフィルターして保存(または転送)するには、ログパス([Log]>[Paths]ページ)の[Message processing]セクション以下で行います。

図1. ログパスの[Message processing]セクション例

ログパスにフィルターを設定するには、[Add filter]フィールドの[Choose filter...]ドロップダウンリストを開いて、フィルターするログメッセージ部分を選択します。以下では、送信元ホストをフィルターするのに"host"を選択します。

図2. [Add filter]フィールド"host"選択例

フィルターするログメッセージ部分を選択後、ボタンをクリックします。

図3. [Add filter]のボタン
ボタンをクリックすると、以下のように[Add filter]フィールドが[host]に変わり、[select an option]ドロップダウンリストとフィルターに一致させるホスト名を入力するフィールドが表示されます。
図4. [host]フィルター設定画面例

[select an option]では、"is"(ホスト名に一致)、または"is not"(ホスト名以外)を選択できます。今回は、ホストに一致したログをフィルターし保存するので、"is"を選択します。

図5. [select an option]の選択例

フィールドにホスト名を入力します。ここでは、送信元ホストのIPアドレス"10.0.2.212"を入力します。

図6. ホスト名の入力例

次に、メッセージ部分をフィルターするのに、その下の[Add filter]フィールドの[Choose filter...]ドロップダウンリストを開いて、"message"を選択します

図7. [Add filter]フィールド"message"選択例

ログメッセージ部分を選択後、ボタンをクリックします。

図8. [Add filter]のボタン

ホストフィルターと同様に、[Add filter]フィールドが[message]に変わり、[select an option]ドロップダウンリストとフィルターに一致させるテキストを入力するフィールドが表示されます。

図9. [message]フィルター設定画面例

同じく[select an option]では、"is"(メッセージに一致)、または"is not"(メッセージ以外)を選択できます。今回は、メッセージに一致したログをフィルターし保存するので、"is"を選択します。

図10. [select an option]の選択例

メッセージ部に"root"を含むログメッセージをフィルターするので、"root"と入力します。

図11. メッセージフィルターのテキスト入力例

これで、ログの送信元アドレスが"10.0.2.212"でメッセージに"root"が含まれているログをフィルターすることができます。


ここで、ログの送信元アドレスが"10.0.2.116"でメッセージに"Administrator"が含まれているログをフィルターしたいので、[Add filter]フィールドの[Choose filter...]ドロップダウンリストを開いてみます。


ドロップダウンリストのリストには、"host"あるいは"message"が出力されていません。

SSBでは1つのパスに、[Add filter]フィールドでログメッセージ部を選択できるのは一回のみです。

図12. [Add filter]フィールド選択後の例

以下のように、パスを複数作成し、フィルターを追加して、同一のログスペース(または転送先)にすることで、実現することは可能ですが、フィルター条件ごとにパスを複数作成しフィルターを作成することは、パスが多数になり、コンフィグレーションの可読性も悪く、管理が煩雑になります。場合によっては、多数のパスを処理するため、パフォーマンスに影響します。

図13. 複数パスの設定例

Custom filterによるフィルター

1つのパスで、上記のようなフィルター設定を行えないものでしょうか?


SSBでは、[Custom filter]を使用して、上記のANDとORの条件を容易に設定することができます。


[Custom filter]を使用するには、[Custom filter]フィールドの[not set]部分をクリックします。あるいは、パスの右上のをクリックします。

図14. [Custom filter]フィールドの[not set]例

以下のように、[Custom filter]のテキストボックスが開きますので、カスタムフィルター式を入力します。


図15. カスタムフィルター式入力例

上記のフィルターを実行する場合のフィルター式は、以下のようになります。

(host("10.0.2.116") and message("Administrator")) or (host("10.0.2.212") and message("root" flags(ignore-case)));
図16. カスタムフィルター式例

※ここでは、root文字列をflags(ignore-case)オプションを使用して大文字小文字を区別していません。



カスタムフィルター設定後は、[Custom filter]フィールドにはカスタムフィルター式文字列の先頭の一部が表示されます。

図17. カスタムフィルター式設定後の[Custom filter]フィールド表示例

検索ページの検索式との違い

フィルター式とSSBの検索ページ([Search]>[Logspaces])の検索式([Search expression])では、主に以下の点が異なります。
  • フィルター式は、デフォルトで大文字小文字を区別します。
    例えば、以下のようなログは、フィルター式"root"では、一致しません。
    Stopped Remount Root and Kernel File Systems.
  • フィルター式は、正規表現を使用できます(一部のメッセージ部では使用できません)。なお、検索式ではワイルドカード(*および?)および条件式(AND, OR, NOT)が使用できます。
  • フィルター式は、指定したメッセージ部全体を検索します。検索ページでの検索式([Search expression])では、インデックス付けされたトークンに対して検索します。
    例えば、以下のようなログは、フィルター式"Administrator"に一致(Administratorsにも一致していることに注意してください)しますが、Searchページでの検索式"Administrator"では一致しません。これは、"JTC-I\Administrators"トークンがインデックス付けされているからです。
    JTC-I\Administrators: System User32: [情報]...

参考資料

詳細については、syslog-ng Store Box6 LTS管理者ガイドの「10.3 メッセージのフィルター」をご覧ください。

また、カスタムフィルターで使用できるファイルたー式については、syslog-ng PE 7 管理者ガイドの「9.4 フィルター」を参照してください。



いかがでしたでしょうか。さまざまなフィルター機能を使用することで、必要なログのみ保存することができました。


それでは、次回の連載記事をお楽しみに!



SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。


syslog-ng Store Boxについての詳細は、製品紹介ページ・製品ガイドをご参照ください。


評価版のダウンロード

問合わせ