td-agent まとめ
やること
- 概要
- td-agentのインストール
- 設定ファイル
- td-agentの起動
概要
概要図
ハマったところ
- 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