hidemium's blog

日々学んだことをアウトプットする。

KibanaでDockerコンテナのメトリクスを可視化する

前回、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"

他のクエリの設定を含めると以下のようになりました。

f:id:hidemium:20140718135507p:plain

histogram

データの棒グラフや折れ線グラフをプロットするには、「histogram」というパネルを使用します。PanelタブのChart valueを「max」、Value Fieldを「value」に変更します。また、QueriesタブのQueriesを「seletcted」に変更し、上記で設定したクエリを選択します。
以下はhistogramの設定画面になります。

f:id:hidemium:20140718140234p:plain

histogramでプロットした画面が以下になります。
各リソースごとに、3つのDockerコンテナのリアルタイム24hデータをプロットしてみましたが、コンテナ内から取得したため、全てほぼ同じ値になっていることが分かります。

f:id:hidemium:20140718141153p:plain

設定の保存

パネルの設定は、ブラウザを閉じると消えてしまうので、ある程度パネルの設定ができたところで、右上のフロッピーアイコンをクリックしてセーブします。

パネルの紹介

他にも面白そうなパネルがあったので、いくつか紹介してみます。

table

データの内容を表示するパネルです。データの中身を確認することができます。

f:id:hidemium:20140718142654p:plain

terms

データ数をカウントしてくれるパネルです。円グラフ、表、棒グラフで表示することができます。

f:id:hidemium:20140718143616p:plain

sparklines

クエリごとの傾向をプロットしてくれるパネルです。全体をぱっと俯瞰したいときに便利かもしれません。

f:id:hidemium:20140718144120p:plain

stats

データの総数、最大値、最小値を表示するパネルです。リソースの最大値、最小値を見るのにいいかもしれません。

f:id:hidemium:20140718144852p:plain

おわりに

KibanaでSensuから取得したDockerコンテナのメトリクスを可視化することができました。
後は、ホストのcgroupからコンテナごとのリソース情報の取得ができれば、Dockerコンテナの監視の可視化が出来上がるかと思います。
また、Elasticsearchにメトリクスを転送できたので、現在リソースの負荷が高いコンテナだけを自動的にKibanaで表示することができれば便利そうだなと思っています。(できる方法ありましたら、どなたか教えてください。)