ファイルが多いlogのローテートについて

ファイルが多いlogのローテートについて。

syslog-ngをつかってログの集約サーバを運用している。

ホスト数が小さい、記録するログが少ない場合にはFreeBSD標準のnewsyslogでまぁそれなりにまかなえていたんだけど、ファイル数が増えてきてしまって、いちいちエントリを書くのが面倒になってきた。

特にプログラム名(syslogでいうタグ)をベースにファイルを作るようにしたので、個別のプログラムごとにファイルができてしまう。

そしてそれが追加されるホストごとにできるっていう。

こまったなぁ、なんかこういうのを解決してくれるパッケージないかなぁ、って思ってたら、@tkroroさんから「logrotateでできない?」とツッコミが。

linux標準(一部除く)のログローテートツールで、ちらちら見かけてはいたんだけどどうせできないだろうと思ってスルーしてた。できなさそうな雰囲気を感じて・・。

変な先入観を捨てて、転がってたcentくんで試してみる。confを引数に持たせることで一発だけ実行できた。

で、*をつかってディレクトリ全部とかいけたので採用。

具体的には

/var/log/hostA/messages

/var/log/hostB/messages

こんなファイルを

/var/log/*/messages

っていうエントリで処理できる。これは便利。

後はプログラムごとのやつとか、apache関連は圧縮するとか指定をいれながらぽちぽち。

ただどうもローテーション部分?(後ろに数字をつけてmvするあたり)がうまくいかなかったり(1, 1.1, 2.1, 1.2とかいっぱいできてしまった)、ファイルハンドルをsyslog-ngが握ったままで圧縮中のログは漏らしてるっぽかったり。

ひとまずは運用してみて調整しよう、と。

以上。

コメントを残す