[rsyslogd] facilityではなくプロパティを元にしたログ取得を行うの巻

スポンサーリンク

試験環境で利用しているルーターのログをCentOSサーバー側で確認したいと思った。利用しているルーターは「WAPM-AG300N」。こちらのログをCentOSで動いているrsyslogdに転送して、サーバー側で閲覧出来るようにしようと思ったわけだ。

初めに考えたのは、facilityを送信側のルーターで設定してサーバー側でそのfacilityをもつログを特定のファイルにログとして吐き出す方法。そこでWAPM-AG300Nにてsyslog送信時のfacilityを設定出来ないかを調べたが設定出来なかった。なので、デフォルトで設定されているfacilityがないかを確認するためにちょっとGoogle検索したら以下のページが見つかった。

[Buffalo] Syslogサーバにおけるファシリティ値を教えてください。【AirStation】

どうやらこのページだと、WAPMシリーズには以下のfacilityが設定されているとのこと。

●WAPMシリーズ

 項目       Facility(コード番号)
 パケットフィルタ Local 3 (19)
 DHCPクライアント daemon  (3)
 AOSS       daemon  (3)
 無線クライアント Local 4 (20)
 認証       authentication(4)
 設定変更     Local 0 (16)
 システム起動   daemon  (3)
 NTPクライアント  daemon  (3)
 有線リンク    Local 4 (20)

確かに、他ルーター用にfacility4を用いてログ取得していたのだが、見事にそちらに出力されていたことを確認した。

だがしかしだ。やりたいことはルーターのログをすべて特定のファイルに出力すること。認証やその他云々によってバラバラに保存される必要はなく、WAPM-AG300Nのログを特定のログに出力したいのだ。”rsyslog with from address” で検索したところ以下のページがヒットした。

CentOS rsyslogの設定 – UnixPower on Networking

上記ページを元に、rsyslogはログの「プロパティ」を元にログの保存先を指定できるとのこと。私がやりたかった事は、以下ルールを/etc/rsyslogd.confに追記しrsyslogを再起動することによって実現できた。「#### RULES ####」のすぐしたに追記して、その他のfacilityベースのフィルタに引っかかる前にログを出力し、その後はログを破棄するように設定した。

#### RULES ####
#接続元が192.168.50.50の場合/var/log/air.logに出力
:fromhost-ip, isequal, "192.168.50.50" -/var/log/air.log
#上記条件に合致するログは今後破棄する 
& ~

プロパティでログを出力する際には以下のように設定する。

:プロパティ, 条件, "値" 出力先

プロパティで指定できるものは rsyslogのページこちら にある「Available Properties」を参考にしてくれ。例えば、ログ全文や接続元ドメイン、接続元IPアドレスなどを元にログをフィルタして好きなファイルに保存できる。

上記で書いた 条件 だが、これは少ないので以下に書きます。man rsyslogd.confからも確認できます。

設定できる条件(compare-operations)
             contains 指定した値がプロパティに含まれる
             isequal 指定した値がプロパティと一致する
             startswith 指定した値でプロパティが始まる
             regex 指定した正規表現がプロパティにマッチする

さて、ここまでくれば上述した私が/etc/rsyslogd.confに追加した記述の意味が分かるはずです!

以上

コメント

タイトルとURLをコピーしました