Skip to content
Last updated

Java Apps Import Integration

Treasure Dataは、サーバーサイドのログとイベントを収集し、JavaアプリケーションからデータをシームレスにインポートするためのTreasure Agent(td-agent)を提供しています。

前提条件

  • Javaの基本的な知識
  • Mavenの基本的な知識
  • Treasure Dataの基本的な知識
  • Java 6以上(ローカルテスト用)

td-agentのインストール

アプリケーションサーバーに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の変更

/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.plist

td-agentはポート24224を介してデータを受け取り、バッファリングし(var/log/td-agent/buffer/td)、自動的にクラウドにアップロードします。

td-logger-javaの使用

オールインワンの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=td

treasure-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.jar

SIGUSR1シグナルを送信すると、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`

TD Consoleから

データが正常にアップロードされたことを確認するには、Webブラウザからデータセットを確認します。

CLIから

または、td CLIクライアントがある場合は、td tablesコマンドを実行します。

$ td tables
+------------+------------+------+-----------+
| Database   | Table      | Type | Count     |
+------------+------------+------+-----------+
| test_db    | follow     | log  | 1         |
+------------+------------+------+-----------+

本番環境へのデプロイメント

td-agentの高可用性構成

高トラフィックのウェブサイト(5つ以上のアプリケーションノード)では、td-agentの高可用性構成を使用して、データ転送の信頼性とクエリパフォーマンスを向上させます。

td-agentの監視

td-agent自体の監視も重要です。td-agentの一般的な監視方法については、td-agentの監視を参照してください。

td-agentはFluentdプロジェクトの下で完全にオープンソース化されています。