Treasure Agent (td-agent) から Apache ログを追跡して、アクセスログをクラウドに継続的にインポートできます。
アプリケーションサーバーに td-agent をインストールします。td-agent は、あらゆる種類の時系列データのストリーミングアップロード専用のデーモンプログラムです。td-agent は、Treasure Data が Fluentd プロジェクトの下で保守しているオープンソースプロジェクトです。td-agent は、Treasure Data 用のカスタムプラグインで Fluentd を拡張しています。
apikey オプションを設定して認証キーを指定します。API キーは TD Console から確認できます。
ファイルを変更するには、/etc/td-agent/td-agent.conf にアクセスします。td-agent.conf ファイルで apikey オプションを設定します。
YOUR_API_KEY は実際の API キー文字列に置き換えてください。
# Tailing the Apache Log
<source>
type tail
path /var/log/httpd-access.log
pos_file /var/log/td-agent/httpd-access.pos
tag td.production.access
format apache2
</source>
# Treasure Data Input and 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>以下の行が設定されたら、エージェントを再起動します。
$ sudo /etc/init.d/td-agent restarttd-agent はログを追跡し続け、ログをバッファリングし (var/log/td-agent/buffer/td)、自動的にログをクラウドにアップロードします。
SIGUSR1 シグナルを送信すると、td-agent のバッファがフラッシュされ、アップロードがすぐに開始されます。
# generate access logs
$ curl http://host:port/
# flush the buffer
$ kill -USR1 `cat /var/run/td-agent/td-agent.pid`データが正常にアップロードされたことを確認するには、次のように td tables コマンドを実行します。
$ td tables
+------------+------------+------+-----------+
| Database | Table | Type | Count |
+------------+------------+------+-----------+
| production | access | log | 1 |
+------------+------------+------+-----------+正しく動作していない場合は、/var/log/td-agent.log を確認してください。td-agent:td-agent にログを読み取る権限が必要です。
td-agent はログローテーションを処理します。td-agent はログの最後の位置を記録し、td-agent プロセスがダウンした場合でも、各行が正確に 1 回だけ読み取られることを保証します。ただし、情報はファイルに保持されるため、ファイルが破損すると「正確に 1 回」の保証は崩れます。
Treasure Data は、従来の RDBMS よりも柔軟なスキーマメカニズムを提供しています。クエリには、Hive Query Language を活用します。