Posted on Apr 20
time series database(時系列データベース)の一つleveldb というエンジンが動いているgoHTTP でデータの登録や検索可能SQL ライクなクエリWeb UI が同梱されているRDBMS で言うところのデータベースのことは同じくデータベースと呼ぶseries と呼ぶようだInfluxDB の構造等については上記の参考文献等に頼るとしてこれをどのように利用出来る(したい)かを考えてみた。
各種ログ等のデータを収集する基盤としてデファクトになっている(と思っている)fluentd との連携がすぐに思いつく。既に fluentd のプラグインとして fluent-plugin-influxdb というものがあり fluentd でかき集めてきたデータを蓄積する為の基盤として InfluxDB を利用しようとされている方がいらっしゃるようだ。
自分自身は実際に試せていないが監視メトリクスデータのストレージ基盤として Elasticsearch から InfluxDB に移行された方の事例はある。
おおっ!て感じだ。
個人的な最近のトレンドである sensu という監視ツール(monitoring router)との組み合わせてみたいなと考えている。
自分が調べた限りだと sensu 監視イベントデータは Redis に保存されてはいるが、例えば Load Average 等の推移についてはデフォルトの状態だと sensu-server.log という sensu-server 自身のログが出力されるファイルに書かれるのみとなっているはずなので、これを handler プラグイン等を使って InfluxDB に保存出来るのではないかと考えている…と探していたら既にプラグインがありました…。
きっと誰かが作っているよねっ。
以下はその妄想図。

InfluxDB は時系列データベースということもあり上記のような用途は得意分野ではないだろうか…。
ドキュメントを読んだりして色々と気づいた事など。
Date time strings have the format YYYY-MM-DD HH:MM:SS.mmm where mmm are the milliseconds within the second.
上記のように時間は mmm のようにミリ秒まで登録出来るようだ。
You can specify timestamp in epoch time, which is defined as the number of nanoseconds that have elapsed since 00:00:00 Coordinated Universal Time (UTC), Thursday, 1 January 1970. You can use the same suffixes from the previous section if you don’t want to specify timestamp in nanoseconds.
UNIX タイムでの指定も出来るようだ。InfluxDB を標準でサポートする grafana ではミリ秒込みでの UNIX タイムで InfluxDB にデータを登録必要があるようだ。
for(var i = 0; i < series.points.length; i++) {
var t = Math.floor(series.points[i][timeCol] / 1000);
var v = series.points[i][index];
datapoints[i] = [v,t];
}
ちなみに grafana の services/influxdb/influxdbDatasource.js に上記のように書かれている。
InfluxDB は面白そうsensu との連携や grafana について書いてみたい2014 かっぱのほげふが