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

2016年11月16日 水曜日


【この記事を書いた人】
nagasaka

ネットワーク本部 SDN開発部 ネットワーク基盤開発課に所属。主にゲートウェイソフトウェアの開発や、製品の検証業務を行っています。

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

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

とにかく実行してみる

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

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

$ git clone https://github.com/iij/iwatch

$ ./configure   # Ubuntu : $ sudo apt-get install build-essential libncurses5-dev libncursesw5-dev
                # CentOS  : $ sudo yum install git gcc ncurses-devel
                # FreeBSD : $ sudo pkg install git gmake
                # OpenBSD : $ doas pkg_add git gmake が必要

$ make          # FreeBSD : $ sudo gmake
                # OpenBSD : $ doas gmake をご使用ください

$ sudo make install    # FreeBSD : $ sudo gmake install
                       # OpenBSD : $ doas gmake install をご使用ください

$ iwatch
usage: iwatch [-rewp] [-i interval] [-s start_line] [-c start_column]
              command [arg ...]

$ iwatch -i 1.5 netstat -s


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

iwatch の機能

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

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

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

色をつけてみる

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

例:

$ export IWATCH_STYLE=yellow,dim,underline

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

属性:

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

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

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

$ man iwatch

をご覧ください。

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

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

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

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

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

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

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

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

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

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

今後について

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

nagasaka

2016年11月16日 水曜日

ネットワーク本部 SDN開発部 ネットワーク基盤開発課に所属。主にゲートウェイソフトウェアの開発や、製品の検証業務を行っています。

Related
関連記事