Armadillo-IoTにはfluentdがプリインストールされているので、
簡単にTreasureDataなどのデータベースに計測データやログなどを入れることができます。
今回は、FluentdプロジェクトのスポンサーであるTreasureDataにデータを溜める方法を紹介します。
TreasureDataにアカウント作成
まずは、TreasureDataを利用するのに必要なアカウントを作成します。
14日間無償で利用できるので、評価や使い方を学ぶ程度であれば問題ないと思います。
TreasureDataのWebサイトで「今すぐ試す」をクリックして、サインアップします。
メールアドレスのみでアカウントを作成できます。
ATDE5にTreasureData toolbeltをインストールしAPIキーを確認
APIキーについては、TreasureDataのWebサイトからログインすることで「My profile」から確認することもできますが、
ここでは、toolbeltをインストールして確認してみます。
atmark@atde5:~$ gem install td atmark@atde5:~$ td account Enter your Treasure Data credentials. Email: nakai-****@atmark-techno.com Password (typing will be hidden): Authenticated successfully. Use 'td db:create <db_name>' to create a database. atmark@atde5:~$ td apikey:show 5803/24bc6e98c957e56d4538f16cceaa295faaca****
上記で「td apikey:show」を実行した場合に表示されるのがAPIキーとなります。
以降でこのAPIキーをfluentdの設定ファイルに記述します。
Armadilloでfluentdを起動
まずは、fluentd用の設定ファイルを作成します。
[root@armadillo-iotg (ttymxc1) ~]# fluentd --setup /etc/config/ Installed /etc/config/fluent.conf.
fluent.confのテンプレートからコピーされた設定ファイルが作成されました。
この設定ファイルにTreasureDataにデータを入力する「tdlog」プラグインの設定を記述します。
/etc/config/fluent.confに次のように追記します。
<match td.*.*> type tdlog apikey 5803/24bc6e98c957e56d4538f16cceaa295faaca**** buffer_type memory flush_interval 5s use_ssl false </match>
システム時刻をタイムサーバ(ntp.nict.jp)と同期させた後にfluentdを起動します。
[root@armadillo-iotg (ttymxc1) ~]# ntpclient -h ntp.nict.jp -s [root@armadillo-iotg (ttymxc1) ~]# start-stop-daemon -S -x fluentd -- -d /var/run/fluentd.pid -c /etc/config/fluent.conf
TreasureDataにデータを入力
fluent-catを用いてTreasureDataにデータを入力してみます。ここでは、
- database名: test_db
- table名: test_table
のようにしてみます。
tableのカラムには、仮に次のように取り決めます。
- type: イベント名
- data: データ
[root@armadillo-iotg (ttymxc1) ~]# echo '{"type":"manual","data":"abcde"}' | fluent-cat td.test_db.test_table
toolbeltでデータが入力されたことを確認する
toolbeltからは、次のようにクエリーを発行することが出来ます。
atmark@atde5:~$ td query -d test_db -w "select * from test_table" -T presto Job 21414889 is queued. Use 'td job:show 21414889' to show the status. queued... started at 2015-02-23T05:56:11Z executing query: select * from test_table Query plan: - Stage-0 OutputPartitioning: none DistributedExecution: -> Output[5] Columns: data = data:varchar, type = type:varchar, time = time:bigint -> (NilClass) - Stage-1 OutputPartitioning: none DistributedExecution: data source -> TableScan[0] Table: test_db.test_table Columns: data:varchar = data:"data", type:varchar = type:"type", time:bigint = time:"time" Started fetching results. 2015-02-23 05:56:12: rows pending running done / total Stage-0: 1 0 0 1 / 1 Stage-1: 1 0 0 1 / 1 1 rows. finished at 2015-02-23T05:56:12Z Status : success Result : WARNING: the job result is being downloaded...: 49 B / 100.0% +-------+--------+------------+ | data | type | time | +-------+--------+------------+ | abcde | manual | 1424668203 | +-------+--------+------------+ 1 rows in set
CSV形式でデータをダウンロード
先ほど実行したクエリーの結果をCSV形式でダウンロードしてみます。
クエリーを実行した場合Jobが発行されるので、そのJobIDを指定します。
atmark@atde5:~$ td job:show 21414889 -f csv -o 21414889.csv --column-header JobID : 21414889 Status : success Type : presto Database : test_db Priority : NORMAL Retry limit : 0 Output : Query : select * from test_table Result size : 49 B Result : written to 21414889.csv in csv format Use '-v' option to show detailed messages. atmark@atde5:~$ cat 21414889.csv data,type,time abcde,manual,1424668203
SSL通信を有効にする
SSL通信で必要となる認証局証明書をダウンロードします。
[root@armadillo-iotg (ttymxc1) ~]# wget http://curl.haxx.se/ca/cacert.pem -O /etc/config/cacert.pem [root@armadillo-iotg (ttymxc1) ~]# mkdir -p /usr/lib/ssl [root@armadillo-iotg (ttymxc1) ~]# ln -s /etc/config/cacert.pem /usr/lib/ssl/cert.pem
fluentdを停止させ、/etc/config/fluent.confを下記のように修正します。(diff形式で示します)
[root@armadillo-iotg (ttymxc1) /etc/config]# diff -urN fluent.conf.orig fluent.conf --- fluent.conf.orig +++ fluent.conf @@ -114,6 +114,5 @@ apikey 5803/24bc6e98c957e56d4538f16cceaa295faaca9a87 buffer_type memory flush_interval 5s - use_ssl false </match>
fluentdを起動しデータを入力させようとすると、SSLで暗号化されます。