weblog of key_amb

主にIT関連の技術メモ

時系列DBって結局どれがいいんだっけ #TSDB

※4/6 その後調べた情報などを記事末尾に追記

前提となるニーズ

  • サーバの負荷情報とか、アクセス状況のような KPI を取得・保存し、可視化(参照してグラフ化)したい。
  • リアルタイム性が要求される。5分以上前のデータしか見れませんみたいなのはお呼びでない。
  • 古いデータはそんなに精度は気にしないけど、ロングスパンで俯瞰して見れたら便利。

最近はビッグデータ環境の時系列データ解析もビジネスではけっこうニーズがありそうだけど、そっちはもう少し要求が多そう。
ここでは考えないことにする。

選択肢になりそうなもの

  1. 古きよき RRDtool
  2. Elasticsearch + Kibana
  3. Graphite + Grafana
  4. InfluxDB + Grafana 等
  5. Zabbix

他に、現実的には SaaS に任せるという手段もあるだろうけど、そう言うと話が終わってしまいそうなので、ここでは考えないことにする。

以下、順に所感を。

1. RRDtool

枯れてる。
一昔前のデファクトスタンダードの位置にあると思う。

Munin や Cacti などの監視ソフトウェアの多くで採用されているものでもある。

枯れているがゆえに目新しい話題はないが、自前でサーバメトリクス等を可視化する上では、まあまあ妥当な選択肢ではないだろうか。

各種開発言語のライブラリもあるし、GrowthForecast や CloudForecast のような RRDtool をラップしたツールもある。

2. Elasticsearch + Kibana

最近よく聞く組合せ。
Fluentd からデータを流して Elasticsearch + Kibana で可視化する、という例は枚挙に暇がない。
ログデータの可視化ではよく使われていそう。

やりようによってはその他のサーバメトリクスを載せることも可能だろう。

もともと検索エンジンであり、高機能なので、今回のニーズに対してはリッチ過ぎるという感もなくはない。

3. Graphite + Grafana

はてなや Y! で採用されている。

覚えている記事や発表の情報だと、「大規模だとつらそう」という印象。

4. InfluxDB + Grafana 等

一時期盛り上がったのだけど、最近あまり新しい話題を聞かない。
どうなったんだろう、という感じ。

オフィシャルページなど見たところ、開発は活発に続いている様子。
v0.9 でバックエンドの DB が LevelDB から BoltDB になったみたい。

※記事末尾に追記有り。

5. Zabbix

監視で取得したデータをかんたんにグラフ化できる機能があるようだ。
Zabbix は RRDtool ではないらしい。

全体的な補足

職場の Slack の #infra チャンネルでこの辺りのモヤモヤした疑問について、ふわっとつぶやいてみたところ、グラフツールを作ったりチューニングしていた人から、下のようなコメントを頂いた。

InfluxDB に期待したこともありましたが、なかなか難しいですね
描画部分も問題で、Kibana (or Grafana) は表示の時に頑張るので、グラフたくさん並べると遅いとかあったり、
ユースケースで選ぶ必要があると思っています。

その他

"timeseries db" や「時系列 DB」などで検索すると、他のプロダクトもちらほらヒットします。
OpenTSDB なんかは Hadoop と HBase をバックエンドにした大規模分析環境に向いてそうな時系列DBです。

雑なまとめ

決定版はいま無いのかなぁというところです。
ユースケースによる」と言ってしまえばそれまでですが。

NewRelic 等の監視 SaaSAWS の CloudWatch を使っているところもそれなりにあるでしょうし、「ツールが乱立している」とも言えるのかもしれませんね。

SaaS に頼らず自前でやるとして、正直、サーバメトリクス程度なら、そんなに大量になることは(たぶん、ふつう)ないので、どのツールでも工夫次第でなんとかできそうな気もしないでもないです。

使っている監視ソフトウェアが制約条件になるというケースもあるでしょう。
たとえば Zabbix を使っているなら、Zabbix で可視化するのが理に適っていると思います。

監視は監視でやっているけど、別途メトリクスも取りたいような場合は、どれを使うか迷う状況がしばらく続くかもしれません。

求む、決定版。

参考

4/6 追記

その後調べたりして得た情報を追記しておきます。

RRDtool 2.x

RRDtool の作者 Tobias Oetiker が、次の15年も陳腐化しないことを見据えて RRDtool のリニューアルを計画している(していた?)ようです。

こちらは3年前の記事:

イシューで要求を募って、設計をドキュメントに書いている段階のようですが、イシューの最終更新は去年の7月なので、止まっていないか心配です。

InfluxDB のニュース

クラスタリング機能は将来的に Enterprise プランでのみの提供になるとのこと。
スタンドアローン版は OSS としての開発が継続されます。

その他