この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
はじめに
今回はタイトル通り、Treasure Dataにレコードを登録する方法についてです。前回とは異なり、一件ずつデータを登録します。ログのように一件ずつ発生するが大量になるようなデータを、Treasure Dataに登録する場合などに使う事になるかと思います。
事前準備
Treasure Data command line toolと、td-agentをインストールします。
1.td-agent
下記のサイトを参考に、td-agentをインストールします。(MacOS Xの場合です)
Installing Fluentd using .dmg Installer (MacOS X)
インストール後、以下のコマンドを実行するのを忘れないでください(私はこれを忘れて、しばらく立ち往生しました・・・)。
$ sudo launchctl load /Library/LaunchDaemons/td-agent.plist
$ less /var/log/td-agent/td-agent.log
2.APIキーの登録
以前の記事で書いた方法で、キーの取得します。「/etc/td-agent/td-agent.conf」を開き、取得したキーを含め、以下のように記述します。この時、「match td.*.*」タグはユニークになるよう余計な定義はコメントアウトしたほうが良さそうです。
$ sudo vi /etc/td-agent/td-agent.conf
/etc/td-agent/td-agent.conf
<match td.*.*>
type tdlog
apikey 取得したAPIキー
auto_create_table
buffer_type file
buffer_path /var/log/td-agent/buffer/td
use_ssl true
flush_interval 30s
</match>
<source>
type forward
port 24224
</source>
3.Treasure Data command line tool
Treasure Data command line toolはgemとして公開されているので、以下のコマンドでインストールします。
$ gem install td
サンプルソース
では、Railsでのサンプルソースです。予めTreasure Data上にデータベース、テーブルが作成されていることが前提となります。
1.Gemfile
以下をGemfileに記述し、bundle install します。
gem 'td'
2.treasure_data.yml
/config/treasure_data.ymlを作成し、以下のように定義します。今回はデータベース名を「sample_db」としました。
/config/treasure_data.yml
production:
agent: "localhost:24224"
tag: td.sample_db
debug_mode: false
development:
agent: "localhost:24224"
tag: td.sample_db
debug_mode: false
test:
agent: "localhost:24224"
tag: td.sample_db
debug_mode: false
3.レコードの登録
最後にレコード登録についてです。今回は「persons」テーブルにデータを登録しました。
class Person
def self.create(name, age)
value = {'name' => name, 'age' => age, 'time' => Time.now}
TD.event.post('persons', value)
end
end
TD.event.post()メソッドを呼び出し、登録対象のテーブル名、登録するデータのjsonを引数として渡します。Treasure Dataのテーブルにはデフォルトでtime列があるため、忘れずに登録値を設定するようにします。
まとめ
Treasure Dataにログ等を格納する際の参考になれば幸いです。