Posted at

Raspberry Pi の温度センサーデータを fluentd で Treasure Data に集める

More than 3 years have passed since last update.

温度データがとれたので fluentd で Treasure Data に入れてみたときのメモ。


fluent-plugin-td インストール

以前インストールした fluentd は gem 版なので、Treasure Data のプラグインをインストールする。


Console

$ sudo fluent-gem install fluent-plugin-td



Treasure Data の API キーを確認する


アカウント作成

ここからサインアップしてアカウントを作成する。


API キー確認

Treasure Data のコンソールMy profile にいってパスワードを入れて API キーを確認する。


fluentd 設定

以前 Raspberry Pi につけた温度センサー(DS18B20)は 1 エントリ 2 行出力される。

今回は in-exec でやってみた。


/etc/fluent/fluentd.conf

<source>

type exec
command tail -1 /sys/bus/w1/devices/28-00000xxxxxxx/w1_slave | awk '{print substr($10,3)}'
tag td.myapp.temp
format tsv
keys temp
run_interval 10s
</source>

<match td.*.*>
type tdlog
apikey YOUR_API_KEY
auto_create_table
buffer_type file
buffer_path /var/log/td-agent/buffer/td
flush_interval 1m
use_ssl true
</match>



  • in-exec で {"temp":"24500"} といったデータを取り込む。

  • 温度計測タイミングは run_interval で、Treasure Data への送信は flush_interval でコントロールする。


  • auto_create_table によりタグ名から Treasure Data 上にデータベースとテーブルを自動的に作成してくれる。上記の場合、データベースは myapp、テーブルは temp となる。

反映には fluentd を再起動する。

buffer 出力先のディレクトリを作成する。また、オーナを fluentd 実行ユーザにする。


Pi

$ sudo mkdir /var/log/td-agent/buffer

$ sudo chown -R fluentd:fluentd /var/log/td-agent


動作確認

しばらくすると(flush_intervalの設定時間) Treasure Data コンソールの Databases にデータベースが追加されている。

テーブルの中にデータが書き込まれていればOK。


参考