# Java Apps Import Integration Treasure Dataは、サーバーサイドのログとイベントを収集し、JavaアプリケーションからデータをシームレスにインポートするためのTreasure Agent([td-agent](https://docs.treasuredata.com/smart/project-product-documentation/installing-td-agent))を提供しています。 # 前提条件 - Javaの基本的な知識 - Mavenの基本的な知識 - Treasure Dataの基本的な知識 - Java 6以上(ローカルテスト用) # td-agentのインストール アプリケーションサーバーにtd-agentをインストールします。td-agentはアプリケーションサーバー内に常駐し、アプリケーションログをクラウドにアップロードすることに専念します。 ![](/assets/image2021-4-15_14-42-29.e1f0a3881144362a280b1dabf16baeb3de7e9fc7265ee930c72b1518d9bbaf83.10220609.png) [td-logger-java](http://github.com/treasure-data/td-logger-java)ライブラリを使用すると、Javaアプリケーションがローカルのtd-agentにレコードを送信できるようになります。td-agentは、これらのレコードを受信し、バッファリングし、5分ごとにデータをクラウドにアップロードします。デーモンがローカルノードで実行されるため、ログ記録のレイテンシはごくわずかです。 ## インストールオプション td-agentは、fluentdの安定版ディストリビューションパッケージであり、rpm/deb/dmgなどの各プラットフォームのパッケージ管理ソフトウェアを使用すると自動的にインストールされます。各プラットフォームの詳細な手順については、[td-agentのインストール](https://docs.treasuredata.com/smart/project-product-documentation/installing-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 # Treasure Data Output 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 ``` `YOUR_API_KEY`は実際のAPIキー文字列に置き換える必要があります。APIキーはTD Consoleのプロフィールから取得できます。[書き込み専用APIキー](/products/my-settings/getting-your-api-keys)の使用を推奨します。 以下の行が配置されたら、エージェントを再起動します。 ``` # 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](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 artifactIdtd-logger version${logger.version} ... ``` 次のコマンドを使用して*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の詳細については、[こちら](https://github.com/treasure-data/td-logger-java)を参照してください。 ```java 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 data = new HashMap(); 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ブラウザ](https://console.treasuredata.com/app/databases)からデータセットを確認します。 #### CLIから または、[td CLIクライアント](https://docs.treasuredata.com/smart/project-product-documentation/configuring-authentication-for-td-using-the-td-toolbelt)がある場合は、*td tables*コマンドを実行します。 ``` $ td tables +------------+------------+------+-----------+ | Database | Table | Type | Count | +------------+------------+------+-----------+ | test_db | follow | log | 1 | +------------+------------+------+-----------+ ``` # 本番環境へのデプロイメント ## td-agentの高可用性構成 高トラフィックのウェブサイト(5つ以上のアプリケーションノード)では、td-agentの高可用性構成を使用して、データ転送の信頼性とクエリパフォーマンスを向上させます。 - [td-agentの高可用性構成](https://docs.treasuredata.com/smart/project-product-documentation/configuring-td-agent-for-high-availability) ## td-agentの監視 td-agent自体の監視も重要です。td-agentの一般的な監視方法については、[td-agentの監視](https://docs.treasuredata.com/smart/project-product-documentation/monitoring-td-agent)を参照してください。 td-agentは[Fluentdプロジェクト](https://www.fluentd.org/)の下で完全にオープンソース化されています。