td-agent まとめ

やること

  1. 概要
  2. td-agentのインストール
  3. 設定ファイル
  4. td-agentの起動

概要

概要図

f:id:jigsaw_coltd:20140106221248p:plain

ハマったところ
  • Sourceディレクティブから直でTreasure Data(以下TD)にデータを送るものと勘違いしていた。
  • Sourceディレクティブで受けて、Matchディレクティブで(Matchディレクティブで一致するものがあれば。詳しくは設定ファイルの段落で)TDへデータを送信する。

td-agentのインストール

以下のシェルスクリプトを設置サーバで実行すると、.repoへのレポジトリ追加と、インストールを自動で行ってくれる
http://toolbelt.treasuredata.com/sh/install-redhat.sh

設定ファイル

設定ファイルの場所
/etc/td-agent/td-agent.conf
設定ファイルの書き方 - Sourceディレクティブ(httpの場合)
<source>
  type http #Sourceのタイプを指定
  port 8888 #リッスンポートを指定
  bind 0.0.0.0 #IP制限。0.0.0.0で何処からでも受け付ける設定に
  tag: td.hoge.hage #Matchディレクティブのマッチ条件に使用する
  record: {"name":"TreasureData","gender":"data"} #JSONのスキーマを指定する
</source>

上記のSourceディレクティブへのデータプッシュは、以下のとおり

$ curl -X POST -d 'json={"name":"Jigsaw","gender":"unknow"}' http://localhost:8888/td.hoge.hage

もしくは、ブラウザ等から、

http://localhost:8888:td.hoge.hage?json={"name":"Jigsaw","gender":"unknow"}
設定ファイルの書き方 - Matchディレクティブ(TDへデータ送信)
<match td.hoge.hage> #Sourceディレクティブの"tag"で指定した文字列をここで指定する
  type tdlog #タイプを指定する。TDへ送信。
  apikey xxxxxxxxxx #ターミナルから"$ td apikey:show"で確認したAPI KEYを指定する
  flush_interval 30s #送信するタイミング
  buffer_type file #bufferの持ち方の指定
  buffer_path /var/log/td-agent/buffer/td #bufferファイルの保存先で、TDへデータが送信されると消える
</match>

Matchディレクティブでマッチングをワイルドカード指定することもできる。
以下の設定では、存在しないテーブルを指定すると自動でテーブルを生成(スキーマも自動)を行うようにした。
データベース名まで指定しておき、最後のテーブル名をワイルドカードにすることで、日付別テーブル生成なども可能。

<match td.hoge.*> #.*とすることで、ワイルドカードでマッチングする
  type tdlog #タイプを指定する。TDへ送信。
  apikey xxxxxxxxxx #ターミナルから"$ td apikey:show"で確認したAPI KEYを指定する
  flush_interval 30s #送信するタイミング
  auto_create_table #tagで指定されたテーブルが存在しない場合、自動でテーブルを作成する
  buffer_type file #bufferの持ち方の指定
  buffer_path /var/log/td-agent/buffer/td #bufferファイルの保存先で、TDへデータがプッシュされると消える
</match>

td-agentの起動

/etc/init.d/start