Part2はTreasure Data Service
へtdコマンドから簡単なクエリを実行しました。
DashingはSinatraアプリなのでRubyでTreasure Data Service
にクエリするプログラムを書きます。
ちょっとしたDBアクセス用のライブラリも用意してみました。
Dockerコンテナ起動
-eオプションで環境変数を指定してコンテナを起動します。TD_API_KEYには、td apikey:show
で確認した値を使います。
$ ~/docker_apps/phusion/ |
環境変数の確認
コンテナに環境変数がセットされていることを確認します。
SSH接続すると-eオプション
で指定した環境変数が反映されないので、コンテナを起動した/bin/bash
のまま作業します。
root@67413c80299f:/# echo $TD_API_KEY |
byobu
サーバーアプリを開発する場合、Emacsのmulti-termだけを使うよりも、
マルチプレクサでEmacsとサーバーで別ウィンドウで作業すると便利なのでbyobuを起動します。
$ byobu |
Gemfile
このコンテナでも-vオプション
を使い、Dockerホストの共有ディレクトリをマウントして作業します。
プロジェクトのディレクトリに移動して確認します。
$ cd /root/sinatra_apps/cloud_td |
Gemfileにtd-client
を追加します。
gem 'td-client' |
bundle install
します。
$ bundle install |
Dashingの起動確認
とりあえずDashingサーバーを起動して確認します。
$ dashing server |
デフォルトで同梱されているsampleダッシュボードの表示を確認します。-vオプション
と-eオプション
を使って、少しずつDisposable Infrastructure
らしくなってきました。
http://{Dockerホスト}:3030/sample
lib/db_client.rb
Treasure Data
に接続するコードを、lib
ディレクトリに書きました。
API_KEYは、docker run
の環境変数のオプションに渡している値を使います。一応initializeでオーバーライドできるようにしています。
# -*- coding: utf-8 -*- |
job
前回にTreasure Data Toolbelt
で使ったのと同じSQLをヒアドキュメントに書きます。さきほど書いたlibディレクトリ下のコードをrequre_relativeします。
確認用に、取得したデータは、sampleダッシュボードの右側にあるdata-id="buzzwords"
のウィジェットを使って表
示してみます。data-view="List"
でwidgets/list
ウィジェットを使っているので、リスト表示のサンプルにちょうど良いです。
send_event
の引数でdata-id
にIDとしてlist
を使います。SCHEDULER.every '1d'
は、rufus-schedulerを使って、1日1回ジョブを実行する定義です。:first_in => 0
とすることで、初回のジョブがDashing起動後すぐに実行されるようにします。
|
sampleダッシュボードのbuzzwordsのdata-idで、ウィジェットを定義している箇所を確認します。
<li data-row="1" data-col="1" data-sizex="1" data-sizey="2"> |
確認
デフォルトのsampleダッシュボードの右側に、Treasure Data
から取得したデータがリスト形式で表示されることを確認します。
http://{Dockerホスト}:3030/sample
git push
Dockerホストから別のシェルを起動して、SSH接続するためにIPアドレスを確認します。
$ docker inspect 67413c80299f | jq -r '.[0] | .NetworkSettings | .IPAddress' |
Dockerコンテナには鍵をコピーしていないので、
Gitのリモートリポジトリに使っている鍵を、ssh-agentに追加して、コンテナにSSHで接続します。
Dockerホストと同じVLAN上に配置している、リモートリポジトリにコンテナ内部からpushします。
$ eval `ssh-agent` |
まとめ
今回はデフォルトのsampleダッシュボードを使って、Treasure Data Service
からデータを取得して表示してみました。
簡単なDB接続用コードを書いて、複数のジョブからrequireして簡単にSQLを実行できるようにしました。
sample.rbを参考にしながら、ウィジェットを定義する自分のダッシュボードを作っていくと簡単にカスタマイズできます。
次回は、fluentdの安定版であるtd-agentを使って、ApacheやTomcatのログをストリームでインポートしてみます。