Treasure Dataは、サーバーサイドのログとイベントを収集し、JavaアプリケーションからデータをシームレスにインポートするためのTreasure Agent(td-agent)を提供しています。
- Javaの基本的な知識
- Mavenの基本的な知識
- Treasure Dataの基本的な知識
- Java 6以上(ローカルテスト用)
アプリケーションサーバーにtd-agentをインストールします。td-agentはアプリケーションサーバー内に常駐し、アプリケーションログをクラウドにアップロードすることに専念します。 
td-logger-javaライブラリを使用すると、Javaアプリケーションがローカルのtd-agentにレコードを送信できるようになります。td-agentは、これらのレコードを受信し、バッファリングし、5分ごとにデータをクラウドにアップロードします。デーモンがローカルノードで実行されるため、ログ記録のレイテンシはごくわずかです。
td-agentは、fluentdの安定版ディストリビューションパッケージであり、rpm/deb/dmgなどの各プラットフォームのパッケージ管理ソフトウェアを使用すると自動的にインストールされます。各プラットフォームの詳細な手順については、td-agentのインストールを参照してください。
/etc/td-agent/td-agent.confファイルでAPIキーオプションを設定して、APIキーを指定します。
# Input from Logger Libraries
source
type forward
port 24224
</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>YOUR_API_KEYは実際のAPIキー文字列に置き換える必要があります。APIキーはTD Consoleのプロフィールから取得できます。書き込み専用APIキーの使用を推奨します。
以下の行が配置されたら、エージェントを再起動します。
# 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.plisttd-agentはポート24224を介してデータを受け取り、バッファリングし(var/log/td-agent/buffer/td)、自動的にクラウドにアップロードします。
オールインワンのJARファイルが必要な場合は、https://search.maven.org/artifact/com.treasuredata/td-loggerを参照してください。td-logger-{version_number}-jar-with-dependencies.jarファイルの最新バージョンをダウンロードしてください。
Mavenを使用している場合は、Mavenプロジェクトのpom.xmlに以下の行を追加します。
dependencies
...
dependency
groupIdcom.treasuredata</groupId>
artifactIdtd-logger</artifactId>
version${logger.version}</version>
</dependency>
...
</dependencies>次のコマンドを使用してtreasure-data.propertiesファイルを設定します。
td.logger.agentmode=true
td.logger.agent.host=localhost
td.logger.agent.port=24224
td.logger.agent.tag=tdtreasure-data.propertiesファイルがJavaクラスパスから参照できることを確認する必要があります。
アプリケーションに以下の行を挿入します。APIの詳細については、こちらを参照してください。
import com.treasure_data.logger.TreasureDataLogger;
public class Main {
private static TreasureDataLogger LOG;
static {
try {
Properties props = System.getProperties();
props.load(Main.class.getClassLoader().getResourceAsStream("treasure-data.properties"));
LOG = TreasureDataLogger.getLogger("test_db");
} catch (IOException e) {
// do something
}
}
public void doApp() {
Map<String, Object> data = new HashMap<String, Object>();
data.put("from", "userA");
data.put("to", "userB");
LOG.log("follow", data);
}
}プログラムを実行します。
# Post a record
$ java -jar test.jarSIGUSR1シグナルを送信すると、td-agentのバッファがフラッシュされます。アップロードが即座に開始されます。
# 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ブラウザからデータセットを確認します。
または、td CLIクライアントがある場合は、td tablesコマンドを実行します。
$ td tables
+------------+------------+------+-----------+
| Database | Table | Type | Count |
+------------+------------+------+-----------+
| test_db | follow | log | 1 |
+------------+------------+------+-----------+高トラフィックのウェブサイト(5つ以上のアプリケーションノード)では、td-agentの高可用性構成を使用して、データ転送の信頼性とクエリパフォーマンスを向上させます。
td-agent自体の監視も重要です。td-agentの一般的な監視方法については、td-agentの監視を参照してください。
td-agentはFluentdプロジェクトの下で完全にオープンソース化されています。