InfluxDB と fluentd を組み合わせを試してみた

  • 51
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

InfluxDB が面白そうなので、本番投入前に fluentd と組み合わせて使うとどうなるのか検証してみました。主に fluent-plugin-influxdb の仕様の確認。検証なので、Mac OS X での手順のみ。

ソースだけ見たいという人は github に置いてあります。

https://github.com/hakobera/fluent-influxdb-test

InfluxDB のインストールと起動

$ brew install influxdb
$ ln -sfv /usr/local/opt/influxdb/*.plist ~/Library/LaunchAgents
$ brew services start influxdb

テスト用DBの作成

$ curl -X POST 'http://localhost:8086/db?u=root&p=root' -d '{"name": "test"}'

サンプルプロジェクトの取得

$ git clone https://github.com/hakobera/fluent-influxdb-test
$ cd fluent-influxdb-test
$ bundle install

Fluentd の起動

$ bundle exec fluentd -c conf/fluent.conf

fluent.conf は以下のようになっています。

<source>
  type tail
  path temp/dummy.log
  pos_file temp/dummy.log.pos
  tag dummy.test
  format ltsv
</source>

<match dummy.*>
  type influxdb
  host localhost
  port 8086
  dbname test
  user root
  password root
  time_precision s
</match>

dummer でダミーデータの投入

別のコンソールを開き、dummer でダミーデータを投入します。

$ mkdir temp
$ bundle exec dummer -c conf/dummer.conf

これで、Fluentd 経由で、influxdb にデータが溜まっていきます。

クエリを投げてみる

URLごとのリクエスト回数を10秒毎に集計するクエリを書いてみます。

SELECT uri, COUNT(id) FROM dummy.test GROUP BY uri, time(10s)

クエリは HTTP API 経由で、/db/test/series?u=root&p=root&q=QUERY という形式で投げます。curl の場合は、こんな感じ。

$ curl "http://localhost:8086/db/test/series?u=root&p=root&q=SELECT%20uri%2C%20COUNT(id)%20FROM%20dummy.test%20GROUP%20BY%20uri%2C%20time(10s)"

GUI (http://localhost:8083) で確認するとこんな感じ。

スクリーンショット 2014-04-07 11.47.36.png

わかったこと

今後検証すること

参考