Linux
CentOS
Ubuntu
Linuxコマンド

MultiTailで効率的にログを見る

はじめに

ログ調査などでリアルタイムでログを見るときは、とりあえず、tailでログを1個ずつ見ることが多いと思います。

# tail -f /var/log/[対象ログファイル]

または以下のように"error"などで検索を行い、"error"が出力されているログを特定したりすると思います。

# grep -r error /var/log/[対象ログファイル]

MultiTailを使うと効率的にログが見れます。

MultiTail

MultiTailはOSSのコマンドラインツールで、重要な単語をハイライト表示したり、マルチウインドウで複数のログファイルを同時に表示することができます。

スクリーンショット 2018-02-28 21.24.40.png

MultiTailのインストール

  • Fedoraの場合 ※CentOS、RHELはパッケージ提供なし
    # yum install multitail
  • Ubuntu/Debianの場合
    # sudo apt-get install multitail

MultiTailのインストール(ソース)

※本手順で記載しているmultitailのバージョンは、執筆時のバージョン(注)

  • パッケージのダウンロード
    # wget https://www.vanheusden.com/multitail/multitail-6.4.2.tgz
  • ソースの展開
    # tar xzvf multitail-6.4.2.tgz
  • ディレクトリの移動
    # cd multitail-6.4.2/
  • コンパイルの実行
    # make
  • インストールの実行
    # make install

※makeでコンパイルが失敗する場合は以下を実施

# コンパイラがない場合のエラー
cc -funsigned-char -D`uname` -DVERSION=\"6.4.2\" -DCONFIG_FILE=\"/etc/multitail.conf\" -DUTF8_SUPPORT -D_FORTIFY_SOURCE=2 -O3   -c -o utils.o utils.c
/bin/sh: cc: コマンドが見つかりません
make: *** [utils.o] エラー 127

# yum install gcc

# コンパイルエラー
cc -funsigned-char -D`uname` -DVERSION=\"6.4.2\" -DCONFIG_FILE=\"/etc/multitail.conf\" -DUTF8_SUPPORT -D_FORTIFY_SOURCE=2 -O3   -c -o utils.o utils.c
In file included from utils.c:34:0:
mt.h:63:29: 致命的エラー: ncursesw/panel.h: そのようなファイルやディレクトリはありません
  #include <ncursesw/panel.h>
                             ^
コンパイルを停止しました。
make: *** [utils.o] エラー 1

# yum install ncurses-devel.x86_64

multitailコマンド

multitailコマンドの基本的な使い方について記載します。
ちなみに、名前の通りにmultiなので引数に渡すファイルは何個でもいけます。

  • オプションなしは縦に表示
    # multitail /var/log/messages /var/log/secure
    スクリーンショット 2018-02-28 07.53.45.png

  • オプション-sでカラム数を指定すると横分割可能
    # multitail -s 2 /var/log/messages /var/log/secure
    スクリーンショット 2018-02-28 07.59.10.png

  • オプション-lでさらにコマンド実行
    # multitail -s 2 /var/log/messages /var/log/secure -l "ping 8.8.8.8"
    スクリーンショット 2018-02-28 08.00.20.png

  • control+hでヘルプ表示
    スクリーンショット 2018-02-28 08.02.57.png

応用的な使い方

  • multitail.confでカスタマイズ 

「multitail.conf」でカスタマイズすることができます。
ソースインストールするとデフォルトで「/etc/multitail.conf.new」が生成されるのでリネームして編集します。

# cp -p /etc/multitail.conf.new /etc/multitail.conf
# vi /etc/multitail.conf

当confファイルはセクション毎に区切られているので、例えばmessagesで"error"という単語を赤字で抽出したい場合は以下のように編集する。また、カラースキームの設定はデフォルトでも多くのログフォーマットにも対応し、syslog、ssh、postfix、apache、bind等主要デーモンに対応している。
スクリーンショット 2018-02-28 21.44.34.png

confファイル編集後、multitailを実行する。そうすると、"error"の単語は赤字で出力される。
# multitail /var/log/messages
スクリーンショット 2018-02-28 21.53.38.png

  • 一度に複数のログをまとめて見る

# cd /var/log/
# multitail -s 7 *
スクリーンショット 2018-02-28 22.12.41.png

"/"を押すと検索画面になるので、例えば、"error"で検索したい場合
スクリーンショット 2018-02-28 22.22.44.png

/var/log配下にある全てのログから"error"のログを抽出してくれる
スクリーンショット 2018-02-28 22.24.27.png

さいごに

実はmultitailは数年前からあるコマンドラインツールです。古い本読んでたら見つけて改めて使ってみると面白かったので、投稿しました。

it's your change your log life