前回、Sensuで取得したDockerコンテナのメトリクスをElasticsearchに転送することができたので、今回はメトリクスを可視化するためにKibanaの設定を行ってみました。なお、Dockerコンテナ内からはコンテナごとのリソース情報は見えず、ホスト全体のリソース情報しか見えないので、あくまで可視化の試みとなります。
構成
Ubuntu 12.04: Sensu Server、Sensu Client
Ubuntu 12.04: Elasticsearch
※上記はDocker 1.0.0上で動作しています。
Kibanaの設定
「http://<サーバのIPアドレス>:<ポート番号>」からKibanaにアクセスし、トップページの「Blank Dashboard」をクリックすると、まっさらダッシュボードが表示されるので、ここからスタートします。もちろん「Sample Dashboard」をベースに設定するのもよいかと思います。
QUERY
ダッシュボードの上部には「QUERY」というものが表示されています。ここにプロットしたいデータの抽出条件を定義します。
Sensuで取得したメトリクスは以下の形式となっていました。
Field | Value |
---|---|
@timestamp | 2014-07-15T17:03:20+00:00 |
_id | a7f9a093d4945aab2be5b0d912193491 |
_index | vmstat_metrics |
_type | vmstat_metrics |
address | 127.0.0.1 |
check_name | vmstat_metrics |
client | elasticsearch |
command | /etc/sensu/plugins/system/vmstat-metrics.rb |
key | 62b7f582ef86.vmstat.cpu.system |
occurrences | 1 |
status | 0 |
value | 1 |
そこで、各コンテナのリソースごとのデータが見たかったので、以下のようにクエリを設定しました。
key:"62b7f582ef86.vmstat.cpu.system"
他のクエリの設定を含めると以下のようになりました。
histogram
データの棒グラフや折れ線グラフをプロットするには、「histogram」というパネルを使用します。PanelタブのChart valueを「max」、Value Fieldを「value」に変更します。また、QueriesタブのQueriesを「seletcted」に変更し、上記で設定したクエリを選択します。
以下はhistogramの設定画面になります。
histogramでプロットした画面が以下になります。
各リソースごとに、3つのDockerコンテナのリアルタイム24hデータをプロットしてみましたが、コンテナ内から取得したため、全てほぼ同じ値になっていることが分かります。
設定の保存
パネルの設定は、ブラウザを閉じると消えてしまうので、ある程度パネルの設定ができたところで、右上のフロッピーアイコンをクリックしてセーブします。
パネルの紹介
他にも面白そうなパネルがあったので、いくつか紹介してみます。
table
データの内容を表示するパネルです。データの中身を確認することができます。
terms
データ数をカウントしてくれるパネルです。円グラフ、表、棒グラフで表示することができます。
sparklines
クエリごとの傾向をプロットしてくれるパネルです。全体をぱっと俯瞰したいときに便利かもしれません。
stats
データの総数、最大値、最小値を表示するパネルです。リソースの最大値、最小値を見るのにいいかもしれません。
おわりに
KibanaでSensuから取得したDockerコンテナのメトリクスを可視化することができました。
後は、ホストのcgroupからコンテナごとのリソース情報の取得ができれば、Dockerコンテナの監視の可視化が出来上がるかと思います。
また、Elasticsearchにメトリクスを転送できたので、現在リソースの負荷が高いコンテナだけを自動的にKibanaで表示することができれば便利そうだなと思っています。(できる方法ありましたら、どなたか教えてください。)