Symfoware

Symfowareについての考察blog

Elasticsearch + kibana 3 複数軸の折れ線グラフを描画する

kibanaで折れ線グラフを描画してみました。
Elasticsearch + kibana ダッシュボードの設定

複数の折れ線グラフを重ねて表示する方法を調べてみます。



サンプルデータ



日付:date
商品種類:item_type
売り上げ:amount

というフィールドを持つデータをダミーデータとして登録しました。


  1. # -*- coding:utf-8 -*-
  2. from elasticsearch import Elasticsearch
  3. from elasticsearch import helpers
  4. def main():
  5.     
  6.     import datetime
  7.     import random
  8.     
  9.     d = datetime.datetime(2014, 1, 1)
  10.     today = datetime.datetime.now().strftime('%Y-%m-%d')
  11.     
  12.     
  13.     mapping = {
  14.         "sales-daily": {
  15.             "properties": {
  16.                 "day": {
  17.                     "type": "date",
  18.                     "index" : "not_analyzed"
  19.                 },
  20.                 "item_type": {
  21.                     "type": "integer",
  22.                     "index" : "not_analyzed"
  23.                 },
  24.                 "amount": {
  25.                     "type": "integer",
  26.                     "index" : "not_analyzed"
  27.                 }
  28.             }
  29.         }
  30.     }
  31.     
  32.     
  33.     # コネクション確立
  34.     es = Elasticsearch(host='192.168.1.103', port=9200)
  35.     
  36.     es.indices.delete(index='sales-index')
  37.     
  38.     # 登録用のインデックス作成
  39.     es.indices.create(index='sales-index')
  40.     
  41.     # 作成したインデックスのマッピングを指定
  42.     es.indices.put_mapping(index='sales-index', doc_type='sales-daily', body=mapping)
  43.     
  44.     
  45.     # 適当にダミーデータを設定
  46.     while True:
  47.         
  48.         for i in xrange(1, 4):
  49.             doc = {
  50.                 'day' : d,
  51.                 'item_type' : i,
  52.                 'amount' : random.randint(1, 1000)
  53.             }
  54.         
  55.             es.index(index="sales-index", doc_type='sales-daily', body=doc)
  56.             
  57.         
  58.         if d.strftime('%Y-%m-%d') == today:
  59.             break
  60.         
  61.         d += datetime.timedelta(days=1)
  62.         
  63. if __name__ == '__main__':
  64.     main()





グラフはtotalで表示しているので、3種類の軸の合算になっています。

508_01.png





QUERY



こちらがヒントになりました。
How do I create a stacked graph of HTTP codes in Kibana?

QUERYを定義していきます。

まずitem_type:1を指定して、item_typeが1のデータを絞り込むよう指定。
「+」をクリックして保存します。

508_02.png


同様に、item_type:2、item_type:3も追加。
追加したらグラフの設定を開きます。

508_03.png


Styleタブを選択します。
このままだと積み上げグラフになっているので、「Stack」のチェックを外します。

508_04.png


Queriesタブを選択します。
Queriesを「selected」に変更して保存します。

508_05.png


狙い通りのグラフになりました。

508_06.png


関連記事

テーマ:サーバ - ジャンル:コンピュータ

  1. 2014/11/09(日) 22:52:40|
  2. 備忘録
  3. | トラックバック:0
  4. | コメント:0
  5. | 編集
<<Elasticsearch + kibana 3 円グラフを描画する | ホーム | Elasticsearch + kibana ダッシュボードの設定>>

コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://symfoware.blog68.fc2.com/tb.php/1547-f80a0940
この記事にトラックバックする(FC2ブログユーザー)