トレジャーデータでは、クラウドサービスに継続的にデータをアップロードするためのデーモンとしてTreasure Agent(td-agent)を開発しました。td-agentの一部はFluentdとしてオープンソース化されており、様々な企業で使われています。
この記事では、td-agentを用いてトレジャーデータにデータをアップロードする方法を紹介します。こちらの3分ビデオチュートリアルでも実際の設定方法を見ることができます。
Step0: 事前準備
事前準備として、こちらのドキュメントに従ってNTPとファイルディスクリプタ最大数の設定を行って下さい。最悪の場合、ログの消失に繋がります。
Step1: td-agentのインストール
Mac / Linux向けのパッケージが提供されていますので、ダウンロードしてインストールします。
RHEL/CentOS 5,6
$ curl -L http://toolbelt.treasuredata.com/sh/install-redhat.sh | sh
Ubuntu 10.04,12.04
# 10.04 Lucid
$ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-lucid.sh | sh
# 12.04 Precise
$ curl -L http://toolbelt.treasuredata.com/sh/install-ubuntu-precise.sh | sh
MacOS X 10.8,10.9
$ open 'http://packages.treasuredata.com/2/macosx/td-agent-2.0.3-0.dmg'
Step2: td-agent.confの編集
/etc/td-agent/td-agent.confを以下のように編集します。APIキーはトレジャーデータにサインアップしたあと、Webコンソールから取得します。Write Only APIキーを使うのに注意して下さい。
# HTTP input
<source>
type http
port 8888
</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
use_ssl true
</match>
編集後、再起動を行います。
# Linux
$ sudo /etc/init.d/td-agent restart
# MacOS X
$ sudo launchctl unload /Library/LaunchDaemons/td-agent.plist
$ sudo launchctl load /Library/LaunchDaemons/td-agent.plist
Step3: データの投入
最後にデータを投入してみます。今回はHTTT POSTにてJSONをローカルのtd-agentに送信します。
$ curl -X POST -d 'json={"action":"login","user":2}' \
http://localhost:8888/td.testdb.www_access
通常は5分に1回データのアップロードが行われます。以下のコマンドで強制的にバッファをフラッシュする事も可能です。
# Linux
$ kill -USR1 `cat /var/run/td-agent/td-agent.pid`
# MacOS X
$ sudo kill -USR1 `sudo launchctl list | grep td-agent | cut -f 1`
その後、Webコンソールのデータベースタブからデータが投入された事を確認できます。
まとめ
以上で完了です。何か問題が起こった場合は、/var/log/td-agent/td-agent.logを参照するか、support@treasure-data.comまで問い合わせて下さい。
HTTPの他にも各種言語からログをPOSTする事が出来ます。Java, Ruby, Python, Perl, PHP, Node.js, Scala, .NET等がサポートされています。
td-agentのトレジャーデータへの書き出しプラグインにはその他にも様々なオプションがあります。詳しい情報に関しては以下の記事を参考にして下さい。
大規模環境での設定は以下のドキュメントを参考にして下さい。弊社では約5000台にtd-agentをインストールし、リアルタイムにログを1分間隔で収集されているお客様もいます。