SSBフィルター設定画面例 |
螺子です。syslog-ng Store Box(SSB)は、さまざまなフィルター機能があります。フィルター機能を使用して必要なログのみ保存することができます。
今回は、SSBのフィルター機能を使用して、必要なログのみ保存してみます。
- syslog-ng Store Box大活用連載企画第1回「syslog-ng Store Boxを知る」
- syslog-ng Store Box大活用連載企画第2回「syslog-ng Store Boxを仮想環境にインストールする」
- syslog-ng Store Box大活用連載企画第3回「syslog-ng Store Boxで出来ることまとめ」
- syslog-ng Store Box大活用連載企画第4回「Wiresharkでsyslogプロトコルパケットを覗く」
- syslog-ng Store Box大活用連載企画第5回「ciscoスイッチ、fortigateファイアウォールログをSSBで受信!よりログを検索しやすく」
- syslog-ng Store Box大活用連載企画第6回「RPC APIを使ってみる、自社システムに統合!ログ検索の自動化!」
- syslog-ng Store Box大活用連載企画第7回「Active Directoryと連携して、Active Directoryユーザー認証!」
- syslog-ng Store Box大活用連載企画第8回「SSBをHA(High Availability)構成で構築してみる!」
- syslog-ng Store Box大活用連載企画第9回「ログをバイナリおよびテキスト形式で保存、違いを比較してみる」
- syslog-ng Store Box大活用連載企画第10回「ログファイルを共有して、外部ホストからアクセスしてみる!」
以下では、ログの送信元アドレスが”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)));
※ここでは、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-IAdministrators”トークンがインデックス付けされているからです。
JTC-IAdministrators: System User32: [情報]...
参考資料
詳細については、syslog-ng Store Box6 LTS管理者ガイドの「10.3 メッセージのフィルター」をご覧ください。
また、カスタムフィルターで使用できるファイルたー式については、syslog-ng PE 7 管理者ガイドの「9.4 フィルター」を参照してください。
いかがでしたでしょうか。さまざまなフィルター機能を使用することで、必要なログのみ保存することができました。
それでは、次回の連載記事をお楽しみに!
SSBは、高信頼ログ管理アプライアンスです。様々なデバイスおよびアプリケーションからログメッセージを収集、分類、フィルタリング、正規化して安全に保存可能です。ログデータの信頼性を担保し、膨大なログが発生する高負荷環境、あるいはログロストが許されない企業・組織のログ管理に最適です。