linux+swatchでログ監視するならinotailという選択肢がある

ログの監視ツールとして定番中の定番swatch。

最近はrsyslogかsyslog-ngに移行しているので、使うケースも減っていますが、柔軟で使いやすいツールです。

ただtailでログを監視しているゆえの制限があったりもします。

  • ファイル更新の確認の間隔(–sleep-interval)が最小でも1秒かかる
  • 確認の間隔が短かければ、余計な負荷になりそう

上記が大きいとるかは環境によりますが、そんなときにはtailの代替としてinotailを検討してみます。inotifyの特徴は次の通りです。

  • linuxのinotify API を通じてカーネルから送信される特別なイベントを受信することで更新情報を取得する。
  • tailより使用メモリが少ない
  • linux専用という制限がある

ps auxでは下記のようになりました。環境はDebian lenny(i386)です。

USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root      2765  0.0  0.2   3040   544 pts/0    S+   04:56   0:00 tail -f /var/log/syslog
root      2786  0.0  0.1   1748   372 pts/2    S+   04:57   0:00 inotail -f /var/log/syslog

それでswatchでinotailを使う方法は簡単です。

 $ swatch --tail-program-name /usr/bin/inotail