Samplerとは
最近のWebアプリの多くには、「ダッシュボード」と呼ばれるUIが用意されています。ダッシュボードとは本来、車の計器盤を指す言葉です。車のダッシュボードにはスピードメーターやタコメーター、燃料計、水温計などが配置されており、ドライバーが車の状態を瞬時に把握できるようになっています。
Webアプリにおけるダッシュボードも車のそれと同じで、現状のデータを可視化するためのツールです。ダッシュボードには様々なウィジェットやメトリクスが配置されており、サービスの状態を俯瞰できるように構成されています。また本当に必要とする情報だけを集約できるよう、ダッシュボードはユーザーが自由にカスタマイズできるのが一般的です。
Webアプリ上に用意されているダッシュボードは、当然ですがそのアプリの状態しか見ることができません。そうしたアプリ固有のダッシュボードではなく、自分のPC上に、自分が必要とする情報だけを集約できるダッシュボードがあったら便利だと思いませんか。さらに「サーバーと黒い画面だけが友達さ」という諸兄にとっては、ターミナル上にダッシュボードを構築したいと思うことでしょう。思わないですか? まあここは話の都合上、そう思っておいてください。
今回紹介するSamplerは、任意のシェルコマンドを実行し、その結果をターミナル上でメトリクス化できるツールです。Samplerを使うことで、ターミナル上に独自のダッシュボードを作ることができるのです。
ただしSamplerは本格的な監視ツールではなく「セットアップが容易な開発ツール」という位置づけのため、PrometheusやZabbixを置き換えることを期待しないでください。筆者の個人的な感想ですが、そうしたモニタリングツールよりもConkyに近いツールではないかと思います。
Samplerのインストール
SamplerはGo言語製のツールです。Ubuntu向けのパッケージがないため、GitHubのリリースページからバイナリをダウンロードして、実行権限を付与するのが簡単でしょう。本記事執筆時点の最新バージョンは1.1.0です。
コンフィグの用意
Samplerを実行する前に、コンフィグファイルを用意しましょう。コンフィグファイルがない状態でsamplerコマンドを実行すると、以下のようなエラーを表示してSamplerは終了します。
SamplerのコンフィグファイルはYAMLで記述します。ここでは例として、PCのロードアベレージをグラフ化してみましょう。以下の内容を~/.sampler.configとして保存してください。
作成したコンフィグファイルは、–configオプションでsamplerコマンドに渡します。
表示できるコンポーネント
Samplerでは前述の例にあるRunchartの他にも、以下のようなコンポーネントを表示できます。
Sparkline
Sparklineは値の変化を可視化することに特化した、小さな棒グラフです。ここではpsコマンドで全プロセスのCPU使用率を表示し、awkで加算した値を利用しています。
Barchart
Barchartはいわゆる棒グラフです。Runchartと同様に、複数のアイテムを並べて比較するような用途に便利です。
Guage
Guageは最大値、最小値、現在値を指定することで、現在値が全体の何%にあたるのかを表示できます。たとえばディスクの空き容量や、プログレスバーなどでの利用が考えられます。
Textbox
Textboxはその名の通り、文字を表示するためのコンポーネントです。特定のコマンドの実行結果をそのまま表示したいような場合に有効です。
Asciibox
AsciiboxもTextboxと同様に、コマンド実行結果の文字列を表示するコンポーネントです。Textboxとの違いは、文字をアスキーアートで表示する点です。ダッシュボード上で目立たせたい文字を表示する場合に便利ですが、アスキーアート化する都合上、日本語は表示できません。
レイアウトの調整
Samplerはターミナルのサイズや複数のコンポーネントの兼ね合いを考え、自動的にコンポーネントの位置とサイズを調整して表示します。しかし、せっかくですから自分好みにコンポーネントの位置やサイズを調整したいですよね。そのためにはコンフィグファイルにpositionを記載します。positionは以下の書式で指定します。
ですが、実際にターミナル上にコンポーネントを表示させながら、現物あわせで調整したい場合もあるでしょう。Samplerは実行中のコンポーネントの移動とリサイズに対応しています。
Samplerを実行している状態で、位置やサイズを変更したいコンポーネントをマウスでクリックして選択してください。その状態でEnterキーを押すと、「MOVE」「RESIZE」「RESUME」というメニューが表示されます。ここで「MOVE」もしくは「RESIZE」を選択すると、カーソルキーでコンポーネントを移動/リサイズできるようになります。好みの位置やサイズに調整ができたら、Enterキーで調整を終了します。この際、コンフィグファイルには自動的にpositionが追記されるため、次回起動時には同じレイアウトが再現されます。
ここで一点気をつけなければならないことがあります。コンポーネントの位置を調整してコンフィグファイルの上書きが発生した場合、コンフィグファイル内のコメント行がすべて消えてしまうという問題があります。一時的に設定をコメントアウトしているような場合にこれが発生すると、それらの設定は失われてしまうため気をつけてください。
このように、Samplerはターミナル上で任意の情報をメトリクス化することができます。様々なシェルコマンドと組み合わせて、君の考えた最強のダッシュボードを作ってみよう!