IIJ内製運用ツール「iwatch」のご紹介

日付:2016年11月16日 水曜日
テーマ運用ツール
執筆者nagasaka

はじめまして、ネットワーク本部の長坂です。
今回は、弊社に古くから存在する iwatch というツールをご紹介しようと思います。

とにかく実行してみる

iwatch – interval watch – は、コマンドを周期的(デフォルトは 2 秒)に実行し変更をハイライトして出力してくれるツールです。
netstat -s, iostat などの統計情報を出力するコマンドにて、モニタしながら数値などの変更箇所をハイライトしてくれるので、トラブルシューティングにて問題の切り分けをする際などに便利に活用できます。

なにはともあれ、GitHub からリポジトリを clone して実行してみましょう。


このように、コマンドの出力が画面に現れました。

iwatch の機能

iwatch では変更箇所をハイライトする上で好みに応じて3つのモードが存在します。

上の動画では、w, e, r キーを押すことで、単語 (word) 単位、行 (line) 単位、文字 (character) 単位でハイライトするモードが遷移し、さらに t キーを押すことでハイライトの on, off の切り替えを行っています。
これにより、文字単位だと少しわかりづらいという方でも変更を目で追いやすく便利かと思います。
よく見ると netstat -s のコマンド出力がウインドウに収まりきれていないですが、ここで ? キーを押してみると…

ヘルプ画面が表示されます。
画面の指示に従って、コマンド出力をスクロールすることが出来ます。
また、1 文字/行単位のみならずまとまった単位でのスクロールも可能ですので、長い出力でも iwatch を終了することなく末端の行まで変更箇所を追うことができます。ハイライトのアップデートを一時停止したりすることなども出来ます。

色をつけてみる

昨今では git コマンドなど、CUI においても出力に色がつくコマンドが多くなってきました。
変更箇所を色付けできたりすると、さらに目で変更を追いやすくなり便利だと思い、iwatch もその流れに沿って色を付ける機能を実装しました。
iwatchでは、ハイライトに色をつけるためには、環境変数 IWATCH_STYLE を設定します。

例:

設定できるパターンは以下のとおりです。

属性:

underline 下線を引く
reverse 反転する
dim 薄暗くする
bold 太字
nounderline 下線を打ち消す
nodim 薄暗くしない
nobold 太字を打ち消す
色:

black
red
green
yellow 黄色
blue
magenta マゼンタ
cyan シアン
white

操作方法に関して詳しくは、

をご覧ください。

watch コマンドと比べた時の利点

この iwatch に似た機能をもつコマンドとして有名な watch コマンドがありますが、iwatch には watch コマンドに負けない機能がいくつもあります。
既に上で説明したものもありますが、一覧でまとめると以下のようになります。

コマンド出力のスクロールが可能

出力が縦横に長いコマンドを実行した場合、コンソールのウインドウからはみ出ることが多々ありますが、 tail コマンドや cut コマンドを用いてパイプするなどの工夫をしなくても、iwatch であれば出力をキー操作でスクロールすることが可能です。

出力結果の差分を単語・行・文字単位でハイライト可能

watch コマンドでは -d オプションをつけることにより、文字単位での差分をハイライトすることができますが、 iwatch ではより分かりやすく単語や行単位でもハイライトをすることが可能になります。これによって、より視覚的に分かりやすい形で変更箇所を追うことができます。

ハイライトに色や属性を適用できる

iwatch では IWATCH_STYLE という環境変数を用いることにより、お好きなスタイルでさらに分かりやすくハイライトすることが出来ます。これによって、さらに分かりやすく変更を追うことが出来ます。

インターバルを実行中に変更できる

watch コマンドはコマンドを周期的に実行するインターバルを起動時のオプションでしか指定できませんが、 iwatch コマンドでは実行中でもインターバルの変更が可能です。ハイライトのアップデートを一時停止したりすることなども出来ます。

今後について

今後も iwatch をより便利にするため更なる改良を行っていこうと思っています。皆様からのプルリクエストもお待ちしております。
https://github.com/iij/iwatch