MultiTailで効率的にログを見る

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

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

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

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

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

## MultiTail
[MultiTail](https://www.vanheusden.com/multitail/download.php)はOSSのコマンドラインツールで、重要な単語をハイライト表示したり、マルチウインドウで複数のログファイルを同時に表示することができます。

![スクリーンショット 2018-02-28 21.24.40.png](https://qiita-image-store.s3.amazonaws.com/0/221759/bd9b1c2f-9772-49f8-118d-1df020d2afe1.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でコンパイルが失敗する場合は以下を実施**

```bash
# コンパイラがない場合のエラー
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`


```bash
# コンパイルエラー
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](https://qiita-image-store.s3.amazonaws.com/0/221759/c3a6220b-7365-9173-8bda-33edb8fee96b.png)

- オプション-sでカラム数を指定すると横分割可能
`# multitail -s 2 /var/log/messages /var/log/secure`
![スクリーンショット 2018-02-28 07.59.10.png](https://qiita-image-store.s3.amazonaws.com/0/221759/c297b138-ea7a-215d-0e26-e15f5803be0c.png)

- オプション-lでさらにコマンド実行
`# multitail -s 2 /var/log/messages /var/log/secure -l "ping 8.8.8.8"`
![スクリーンショット 2018-02-28 08.00.20.png](https://qiita-image-store.s3.amazonaws.com/0/221759/d0153e76-d050-009e-4c22-45f070aef0d6.png)

- control+hでヘルプ表示
![スクリーンショット 2018-02-28 08.02.57.png](https://qiita-image-store.s3.amazonaws.com/0/221759/f6239dff-07fd-eaa2-ff11-563fdac70902.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](https://qiita-image-store.s3.amazonaws.com/0/221759/42fbba59-f347-7187-ab81-5891999ef62f.png)

confファイル編集後、multitailを実行する。そうすると、*"error"*の単語は赤字で出力される。
`# multitail /var/log/messages `
![スクリーンショット 2018-02-28 21.53.38.png](https://qiita-image-store.s3.amazonaws.com/0/221759/c5627215-3349-ca8d-32a9-e6011f7bc1e0.png)

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

`# cd /var/log/` 
`# multitail -s 7 *`
![スクリーンショット 2018-02-28 22.12.41.png](https://qiita-image-store.s3.amazonaws.com/0/221759/b9b8b7ff-a544-0f7e-3201-73bc6f3b5dbe.png)

*"/"*を押すと検索画面になるので、例えば、*"error"*で検索したい場合
![スクリーンショット 2018-02-28 22.22.44.png](https://qiita-image-store.s3.amazonaws.com/0/221759/14a56f21-fd30-432c-65ec-645031aebd8a.png)


**/var/log配下にある全てのログから*"error"*のログを抽出してくれる**
![スクリーンショット 2018-02-28 22.24.27.png](https://qiita-image-store.s3.amazonaws.com/0/221759/88a8c8f6-df6f-c87f-8abd-3d255de7d584.png)

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

**it's your change your log life**