以前、シスログをMySQLへ書き出す「rsyslog + MySQL」という記事を書きました。
今回はその記事に少し内容をプラスしてみます。・ログサーバで、リモートから受け取ったログをファイルとして保存する以外に、MySQLにも保存している
・非常に大量のログを出力するホストがいるが、そのホストからのシスログだけMySQLには出力したいくない
といったシナリオを実現させる方法について2つピックアップしてみます。
※評価は、CentOS6.6 + rsyslogのver8.5.0で行っています
ファシリティで除外する方法
ログを送ってくる側でファシリティを指定できるのであれば、そのファシリティだけMySQLに出力されないようにするのがお手軽です。
*.*;local4.none :ommysql:localhost,Syslog,rsyslog,PASSWORD
アクションで除外する方法
記述は面倒になりますが、以下のように記述する事で192.168.233.100と192.168.233.101から送られてくるシスログはMySQLへは出力されなくなります。
この場合のキモは”stop”の記述で、それ以降のログ出力の停止、つまりMySQLへのログ出力を停止する事ができます。
$template STOPSQL, "/var/log/%fromhost%/%$year%%$month%%$day%.log"
if \
( $fromhost-ip == '192.168.233.100' or \
$fromhost-ip == '192.168.233.101' ) \
then {
action(type="omfile"
DirCreateMode="0750"
DirGroup="logadmin"
FileCreateMode="0640"
FileOwner="logadmin"
dynaFile="STOPSQL")
stop
}
*.* :ommysql:localhost,Syslog,rsyslog,PASSWORD
(備考)
actionとしてomfileを指定する場合、2つ注意することがあります。
1.DirCreateModeやFileCreateModeなどパーミッションに関連するパラメータは、全体に適用されるようにグローバルで指定してあったとしても、上記のように改めて指定する必要があります
2.さらに出力されるファイルの指定(上記だとdynaFileの行)は、一番最後に指定する必要があります
0 件のコメント:
コメントを投稿