logtool使ってみた (iptablesのログを見るのに便利だった)

Software Design 2011年2月号 の第一特集内でちょろっと紹介されてた、Logtool を触ってみました。

man logtool すると "logtool - parse and filter syslog files" と記載されている通り、syslog形式やmultilog形式のログ出力をパース、フィルタしてくれるプログラムです。

安定版は 1.2.x tree, 1.2.8 (2005年リリースだけど...) をダウンロードして、RPMパッケージングしてインストールしました。
同梱されていたspecファイルちょっといじる必要ありました。2005年だけあってspecファイルのフォーマットが若干古い。
余談ですが、logtool作者がRedHatのライセンスやポリシーに怒ってシステム全部Debianにしたよ!RPMなんかメンテしねーよ!
って書いてあった。何があったんだろ。

使い方はフィルタとして、catなどで開いた標準出力にパイプで渡してやります。

sudo tail -100 /var/log/messages | logtool | less

そっけない出力に色がついてかっこよくなります、モテますかね。

色がつくだけだと微妙なんですが、Logtoolのサイトにのってる1.2.0の機能の中の

  • Now can do really cool things with snort and iptables syslog entries (ip->hostname resolution, special colors, and more!)

が便利でした。
iptablesを使っててたとえばRejectしたログをとってるとき、通常のログだと

Jan 24 02:49:33 test01 kernel: Rejected_At_Last!! : IN=eth0 OUT= MAC=00:0e:0c:9c:15:ae:XX:XX:db:d3:34:40:08:00 SRC=201.91.255.194 DST=XXX.XXX.XXX.XXX LEN=78 TOS=0x00 PREC=0x00 TTL=48 ID=57854 DF PROTO=UDP SPT=137 DPT=137 LEN=58

な感じで読みにくいのが、logtoolを通すと

Jan 24 02:49:33 test01 iptables: -j LOG: kernel: Rejected_At_Last!! :  {UDP} 201-91-255-194.customer.tdatabrasil.net.br(201.91.255.194):137 -> test01.tnmt.local(XXX.XXX.XXX.XXX):137

と、カラーリングの他にログのIPからホスト名を逆引きしてくれたりします。(ホスト名逆引きは -n オプションで実行しなくも出来ます)

出力形式も [ ANSI | ASCII | CSV | HTML | RAW ] が指定可能です。
例であげた↑の色分けしたログも -o HTML で出力したものを利用しました。

使用用途として、manコマンドに乗ってたものをいくつか紹介しておきます。

  • リアルタイムにログを見る
tail -f /var/log/messages | logtool -o ANSI -b
  • HTMLレポート
cat /var/log/messages | logtool -o HTML > /home/httpd/html/logs/messages.html
  • メールでレポート
retail /var/log/messages | logtool -o ASCII | mail -s "Daily report" someuser@somedomain.ext

logtool.conf という設定ファイルがあるのでデフォルトの挙動も変更出来たりするみたいです。
小さいプログラムなので、入れておくとちょっとしたときに便利に使えそうだなと思いました。