Treasure Agent(td-agent)からJSON形式のログをインポートして、アクセスログをクラウドに継続的にインポートできます。
td-agentはログローテーションを処理します。td-agentはログの最終位置の記録を保持し、td-agentプロセスがダウンした場合でも、各行が正確に1回だけ読み取られることを保証します。ただし、情報はファイルに保存されるため、ファイルが破損すると「正確に1回」の保証が破られます。
td-agent:td-agentには、ログを読み取る権限が必要です。
td-agentはFluentdプロジェクトの下にあります。td-agentは、Treasure Data用のカスタムプラグインでFluentdを拡張します。
アプリケーションサーバーに'td-agent'をインストールする必要があります。td-agentは、あらゆる種類の時系列データのストリーミングアップロード専用のデーモンプログラムです。td-agentはTreasure Dataによって開発・維持されています。
td-agentをセットアップするには、以下の記事を参照してください。Linuxシステム用のdeb/rpmパッケージを提供しています。
| 環境 | 参照先 |
|---|---|
| MacOS X | MacOS Xへのtd-agentのインストール |
| Ubuntuシステム | DebianおよびUbuntu用のtd-agentのインストール |
| RHEL / CentOSシステム | RedhatおよびCentOS用のtd-agentのインストール |
| AWS Elastic Beanstalk | AWS Elastic Beanstalkへのtd-agentのインストール |
apikeyオプションを設定して、認証キーを指定します。API keyはTD Consoleから確認できます。
/etc/td-agent/td-agent.confにアクセスして、apikeyオプションを設定します。
YOUR_API_KEYは、あなたのAPI key文字列である必要があります。
# Tailing the JSON formatted Logs
<source>
type tail
format json
tag td.production.foo
path /path/to/the/file/foo.json
pos_file /var/log/td-agent/foo.pos
</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>以下の行が設定されたら、agentを再起動します。
$ sudo /etc/init.d/td-agent restarttd-agentはファイルをテーリングし、ログをバッファリングし(var/log/td-agent/buffer/td)、自動的にログをクラウドにアップロードします。
以下の例は、サンプルログファイルです。ログファイルに新しい行が追加されるたびに、td-agentはその行を解析し、レコードをバッファに追加します。td-agentは5分ごとにデータをクラウドにアップロードします。データを即座にアップロードするには、SIGUSR1シグナルを送信します。
$ tail -n 5 /path/to/the/file/foo.json
{"a"=>"b", "c"=>"d"}
{"a"=>"b", "c"=>"d", "e"=>1}
{"a"=>"b", "c"=>"d", "e"=>1, "f"=>2.0}
{"a"=>"b", "c"=>"d"}
{"a"=>"b", "c"=>"d", "e"=>1}すべてが正しく設定されていることを確認するには、以下のコマンドを実行します。
# append new entries
$ tail -n 3 /path/to/the/file/foo.json > sample.txt # ログの最後の3行を取得し...
$ cat sample.txt >>/path/to/the/file/foo.json # それらをバッファファイルに追加してtailプラグインをトリガーします。
# flush the buffer
$ kill -USR1 `cat /var/run/td-agent/td-agent.pid`データが正常にアップロードされたことを確認するには、次のようにtd tablesコマンドを実行します。
td tables
+------------+------------+------+-----------+
| Database | Table | Type | Count |
+------------+------------+------+-----------+
| production | foo | log | 3 |
+------------+------------+------+-----------+正しく動作しない場合は、/var/log/td-agent.logを確認してください。td-agent:td-agentには、ログを読み取る権限が必要です。
従来のRDBMSよりも柔軟なスキーマメカニズムを提供しています。クエリには、Hive Query Languageを活用します。