Ubuntu Weekly Recipe

第605回 Samplerでターミナルをダッシュボードにする

この記事を読むのに必要な時間:およそ 4 分

Samplerとは

最近のWebアプリの多くには,⁠ダッシュボード」と呼ばれるUIが用意されています。ダッシュボードとは本来,車の計器盤を指す言葉です。車のダッシュボードにはスピードメーターやタコメーター,燃料計,水温計などが配置されており,ドライバーが車の状態を瞬時に把握できるようになっています。

Webアプリにおけるダッシュボードも車のそれと同じで,現状のデータを可視化するためのツールです。ダッシュボードには様々なウィジェットやメトリクスが配置されており,サービスの状態を俯瞰できるように構成されています。また本当に必要とする情報だけを集約できるよう,ダッシュボードはユーザーが自由にカスタマイズできるのが一般的です。

図1 サーバーモニタリングサービス「Datadog」のKubernetes Dashboardの例。クラスターを構成するノードや稼働中のコンテナ,CPUやメモリの負荷などを一目で把握できるようになっている。

画像

Webアプリ上に用意されているダッシュボードは,当然ですがそのアプリの状態しか見ることができません。そうしたアプリ固有のダッシュボードではなく,自分のPC上に,自分が必要とする情報だけを集約できるダッシュボードがあったら便利だと思いませんか。さらに「サーバーと黒い画面だけが友達さ」という諸兄にとっては,ターミナル上にダッシュボードを構築したいと思うことでしょう。思わないですか? まあここは話の都合上,そう思っておいてください。

今回紹介するSamplerは,任意のシェルコマンドを実行し,その結果をターミナル上でメトリクス化できるツールです。Samplerを使うことで,ターミナル上に独自のダッシュボードを作ることができるのです。

ただしSamplerは本格的な監視ツールではなく「セットアップが容易な開発ツール」という位置づけのため,PrometheusやZabbixを置き換えることを期待しないでください。筆者の個人的な感想ですが,そうしたモニタリングツールよりもConkyに近いツールではないかと思います。

Samplerのインストール

SamplerはGo言語製のツールです。Ubuntu向けのパッケージがないため,GitHubのリリースページからバイナリをダウンロードして,実行権限を付与するのが簡単でしょう。本記事執筆時点の最新バージョンは1.1.0です。

ホームディレクトリ内にsamplerをインストールする例

$ curl -Lo ~/bin/sampler https://github.com/sqshq/sampler/releases/download/v1.1.0/sampler-1.1.0-linux-amd64
$ chmod +x ~/bin/sampler

コンフィグの用意

Samplerを実行する前に,コンフィグファイルを用意しましょう。コンフィグファイルがない状態でsamplerコマンドを実行すると,以下のようなエラーを表示してSamplerは終了します。

コンフィグファイルを指定せずsamplerコマンドを実行した場合

$ sampler
Please specify config file using --config flag. Example: sampler --config example.yml

SamplerのコンフィグファイルはYAMLで記述します。ここでは例として,PCのロードアベレージをグラフ化してみましょう。以下の内容を~/.sampler.configとして保存してください。

/proc/loadavgから過去1分,5分,15分のロードアベレージを取得して折れ線グラフにするコンフィグ

runcharts:                                                 # Runchartを定義する
  - title: Load Average                                    # グラフのタイトル
    rate-ms: 1000                                          # 値を取得するサンプリングレート(ms,デフォルトは1000)
    scale: 2                                               # 小数点以下のスケール(デフォルトは1)
    legend:
      enabled: true                                        # グラフ内の各アイテムのラベルを表示する(デフォルトはtrue)
      details: true                                        # 各アイテムの現在値,最大値,最小値,差分を表示する(デフォルトはtrue)
    items:                                                 # グラフに表示するアイテムの定義
      - label: 1min                                        # アイテムのラベル
        sample: cut -d ' ' -f 1 /proc/loadavg              # 実行するコマンド
      - label: 5min
        sample: cut -d ' ' -f 2 /proc/loadavg
      - label: 15min
        sample: cut -d ' ' -f 3 /proc/loadavg

作成したコンフィグファイルは,–configオプションでsamplerコマンドに渡します。

コンフィグを指定してsamplerを実行する

$ sampler --config ~/.sampler.config

図2 ロードアベレージをグラフ化した状態

画像

著者プロフィール

水野源(みずのはじめ)

Ubuntu Japanese Teamメンバー。理想のフリーデスクトップ環境を求めて東へ西へ……のはずが,気がついたら北の大地で就職していたインフラ寄りのエンジニア。最近レンズ沼にハマる。