1. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
InfluxDB の概要
June 27th, 2014
!
Naotoshi Seo @sonots
DeNA Co., Ltd.
2. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
2
自己紹介
・瀬尾 直利 @sonots
・DeNA Co., Ltd
・インフラのDev
・Rubyist
・OSS 活動家
・Fluentd コミッタ
3. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ ログを処理するアプリケーション(or フレームワーク)
⁃ Ruby プラグインの仕組みが強力 (+250 plugins)
⁃ InfluxDB との連携もできます!(fluent-plugin-influxdb)
4. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
⁃ グラフツール
⁃ HTTP POST するだけ
⁃ ストレージは RRDtool
http://kazeburo.github.io/GrowthForecast/
GrowthForecast
5. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
http://blog.livedoor.jp/sonots/archives/29646713.html
Yohoushi
!
分散 GrowthForecast グラフツール
24. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
複数Seriesへの問い合わせを
Mergeする
24
[
{
"columns": ["time","sequence_number","reqtime","url","_orig_series"],
"name": "web9999.httpd_merge_web0001.httpd",
"points": [
["1392030886","60706000001","1.09","/view/entry","web0001.httpd"],
["1392030886","60703580001","0.21","/view/entry","web9999.httpd"],
["1392030885","60705980001","1.53","/login/error","web0001.httpd"],
...
]
}
]
select reqtime, url from web9999.httpd
merge web0001.httpd;
25. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
group by (ダウンサンプリング)
25
select mean(sys) from web9999.cpu
group by time(15m);
15分ごとの平均値!
╭( ・ㅂ・)و ̑̑
26. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使える Statement
26
!
• Group by
• Merge (series を複数指定して結果をマージする機能)
• Limit
• Join
• Order (time フィールド専用の Order by)
• Explain
╭( ・ㅂ・)و ̑̑
27. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使えない Statement
27
!
• Having
• サブクエリ
• Order by (今はまだカラムにインデックス利かないので...)
!
( ・᷄д・᷅ )
28. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使える集約関数
28
!
• Count, Min, Max, Mean, Mode, Median
• Distinct
• Percentile, Histogram, Derivative
• Sum, Stddev, First/Last
• DIfference, Top/Bottom (v0.6)
!
Derivative (時間微分) とか便利
╭( ・ㅂ・)و ̑̑
29. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
使えない集約関数
29
!
• 豊富な Built-In 集約関数
• ユーザ定義できない (UDFの仕組みがない)
( ・᷄д・᷅ )
31. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Continuous Query
31
select percentile(value, 95) from
response_times group by time(5m)
into response_times.percentiles.5m.95;
!
select count(type) from events
group by time(10m), type
into events.count_per_type.10m;
クエリをあらかじめ仕込んでおくと、 逐次
的にデータを別のSeriesに格納してくれる
32. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Fanout Continuous Query
32
select * from events into events.[page_id];
• 格納先 Series の名前が動的に定まる
• Seriesを分けてインデックス代わりにす
るための機能
※ group by, join, merge, where と一緒に使えません
33. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Administration
33
• 3つのロール
• Cluster Admin
• データベースを追加削除できる
• Database admin と user を追加削除できる
• クエリは投げれない
• Database Admin
• Database admin と user を追加削除できる
• write/read パーミッションを変更できる
• Database User
• カレントデータベースを読み書きできる
46. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Merging Many Series into One
46
!
• select * from merge /stats.*/
• 正規表現で指定できるようにしたいらしい
!
※ 下のような merge はすでにできる
select * from series1 merge series2
47. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
(ついでに)
ダッシュボード紹介
47
Elasticsearch に対する Kibana のような
48. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Built-In Interface
48
※おもちゃです
49. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Grafana
49
Kibana の fork。元は Graphite 用
50. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
Influga
50
@hakobera 氏が作ってる便利そうなやつ :D
51. Copyright (C) 2014 DeNA Co.,Ltd. All Rights Reserved.
まとめ
51
• InfluxDB の概要を説明しました
• Input Plugin の仕組みが出来て、HTTP API だけ
ではなく、Graphite, UDP でもデータ投入できる
• group by, join は使えるが、having, サブクエリ,
order by などはまだ使えない
• 抽象ストレージレイヤーができたのでストレージによっ
てはカラムにインデックスが利くようになるかも
• Future に期待