Fluentdを使用してTreasure Dataにデータを継続的にインポートできます。
Fluentdは、Rubyで書かれたデーモンで、ログをJSONストリームとして収集し、ログをバッファリングし、MySQL、MongoDB、あるいは他のFluentdインスタンスなどの他のシステムにログを送信します。
Treasure Agent(td-agent)ロギングデーモンにはFluentdが含まれています。しかし、多くのユーザーはRuby gemsを介してFluentdをインストールしています。既存のFluentdインストールをTreasure Dataに接続できます。詳細については、サーバーサイドエージェントとしてのtd-agentをお読みください。
- Fluentdとそのインストールに関する基本的な知識。
以下のようにfluentdとfluent-plugin-td gemsをインストールします。
$ gem install fluentd
$ gem install fluent-plugin-td設定ファイルに以下の行を追加します。fluent-plugin-tdにはtdlog出力タイプが含まれており、これはTreasure Dataにデータをアップロードするために使用されます。
# HTTP input
source
type http
port 8888
</source>
# TCP input
source
type forward
port 24224
</source>
# Treasure Data output
<match td.*.*>
type tdlog
endpoint api.treasuredata.com
apikey ...
auto_create_table
buffer_type file
buffer_path /path/to/buffer/td
use_ssl true
</match>APIキーは、アカウントを認証するための秘密鍵です。APIキーは、TDコンソールのプロファイルから取得できます。
Fluentdサーバーを起動します。
$ ./bin/fluentd --config fluentd.confHTTPを使用してJSON形式でログを追加します。
$ curl -X POST -d 'json={"action":"login","user":2}' \
http://localhost:8888/td.testdb.www_accessFluentdは継続的にログをアップロードし、毎分データを送信します。SIGUSR1シグナルを送信すると、Fluentdはバッファリングされたログを即座にクラウドにフラッシュします。
$ kill -USR1 pid_of_fluentdtd tablesコマンドを実行して、データが正常にインポートされたことを確認します。
$ td tables
+------------+------------+------+-----------+
| Database | Table | Type | Count |
+------------+------------+------+-----------+
| testdb | www_access | log | 1 |
+------------+------------+------+-----------+問題が発生した場合は、Fluentdのログがトラブルシューティングの良い出発点です。