LoginSignup
0
0

More than 5 years have passed since last update.

td-logger-rubyを利用してTreasureDataにログをアップロードする

Last updated at Posted at 2016-01-28

概要

td-logger-rubyからforwardしたJSONレコードをtd-agentで受け付け、TreasureDataへアップロードする。
方法についてはtreasuredataのドキュメントを参考にした。

環境構築

CentOS 6.6に以下をインストール

  • ruby
  • gem
  • td-agent

インストール方法は下記の通り

## rubyインストール(今回は現在の最新バージョンを利用)
$ wget https://cache.ruby-lang.org/pub/ruby/2.3/ruby-2.3.0.tar.gz
$ tar xvzf ruby-2.3.0.tar.gz
$ cd ruby-2.3.0
$ ./configure
$ make
$ make install

## gemインストール(今回は現在の最新バージョンを利用)
$ wget https://rubygems.org/rubygems/rubygems-2.5.1.tgz
$ tar xvzf rubygems-2.5.1.tgz
$ cd rubygems-2.5.1
$ ruby setup.rb
$ gem install td

## td-agentインストール
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent2.sh | sh

td-agent.confの編集

/etc/td-agent/td-agent.confを編集する。
DBやテーブルの指定はforwardするクライアント側(td-logger)で設定する。
td-agentはforwardされたログを受け取りtreasuredataにアップロードするだけなので、td-agent使わなくてもアップロードは可能。ただし、td-agentではbufferの管理やリトライ処理等が実装されているため、td-agentを利用した方法が推奨されている。

td-agent.conf
# Input from Logging Libraries
<source>
  type forward
  port 24224
</source>

# Treasure Data Output
<match td.*.*>
  type tdlog
  endpoint api.treasuredata.com
  apikey YOUR_API_KEY
  auto_create_table
  buffer_type file
  buffer_path /var/log/td-agent/buffer/td
  buffer_chunk_limit 16m
  buffer_queue_limit 1000
  use_ssl true
</match>

動作確認

以下のスクリプトを作成する。
(DB名、テーブル名は書き換える)

test.rb
# Initialize
require 'td'
TreasureData::Logger.open_agent('td.<DB名>', :host=>'localhost', :port=>24224)

# Example1: login event
TD.event.post('<table名>', {:uid=>123})

# Example2: follow event
TD.event.post('<table名>', {:uid=>123, :from=>'TD', :to=>'Heroku'})

# Example3: pay event
TD.event.post('<table名>',
              {:uid=>123, :item_name=>'Stone of Jordan',
               :category=>'ring', :price=>100, :count=>1})

test.rbを実行する。td-agentの待ち受けポートにJSON形式のログがforwardされる。

$ ruby test.rb

この時点でbufferファイルが出来上がるが、アップロード開始されるまで時間がかかるので
以下コマンドでbufferをflushする。

kill -USR1 `cat /var/run/td-agent/td-agent.pid`

以上で、指定したtreasuredataのテーブルにレコードがインポートされる。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0