# JSON形式を使用したログのインポート Treasure Agent(td-agent)からJSON形式のログをインポートして、アクセスログをクラウドに継続的にインポートできます。 **td-agentはログローテーションを処理します**。td-agentはログの最終位置の記録を保持し、td-agentプロセスがダウンした場合でも、各行が正確に1回だけ読み取られることを保証します。ただし、情報はファイルに保存されるため、ファイルが破損すると「正確に1回」の保証が破られます。 ## 前提条件 `td-agent:td-agent`には、ログを読み取る権限が必要です。 ## td-agentのインストール td-agentは[Fluentdプロジェクト](http://fluentd.org/)の下にあります。td-agentは、Treasure Data用のカスタムプラグインでFluentdを拡張します。 アプリケーションサーバーに'td-agent'をインストールする必要があります。td-agentは、あらゆる種類の時系列データのストリーミングアップロード専用のデーモンプログラムです。td-agentはTreasure Dataによって開発・維持されています。 td-agentをセットアップするには、以下の記事を参照してください。Linuxシステム用のdeb/rpmパッケージを提供しています。 | **環境** | **参照先** | | --- | --- | | MacOS X | [MacOS Xへのtd-agentのインストール](http://docs.fluentd.org/articles/install-by-dmg) | | Ubuntuシステム | [DebianおよびUbuntu用のtd-agentのインストール](http://docs.fluentd.org/articles/install-by-deb) | | RHEL / CentOSシステム | [RedhatおよびCentOS用のtd-agentのインストール](http://docs.fluentd.org/articles/install-by-rpm) | | AWS Elastic Beanstalk | [AWS Elastic Beanstalkへのtd-agentのインストール](https://github.com/treasure-data/elastic-beanstalk-td-agent) | ## td-agent.confの変更 `apikey`オプションを設定して、認証キーを指定します。API keyはTD Consoleから確認できます。 /etc/td-agent/td-agent.confにアクセスして、`apikey`オプションを設定します。 *YOUR_API_KEY*は、あなたのAPI key文字列である必要があります。 ```conf # Tailing the JSON formatted Logs type tail format json tag td.production.foo path /path/to/the/file/foo.json pos_file /var/log/td-agent/foo.pos # Treasure Data Input and 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 ``` 以下の行が設定されたら、agentを再起動します。 ``` $ sudo /etc/init.d/td-agent restart ``` td-agentはファイルをテーリングし、ログをバッファリングし(*var/log/td-agent/buffer/td*)、自動的にログをクラウドにアップロードします。 ## データインポートの確認 以下の例は、サンプルログファイルです。ログファイルに新しい行が追加されるたびに、td-agentはその行を解析し、レコードをバッファに追加します。td-agentは5分ごとにデータをクラウドにアップロードします。データを即座にアップロードするには、SIGUSR1シグナルを送信します。 ```bash $ 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} ``` すべてが正しく設定されていることを確認するには、以下のコマンドを実行します。 ```bash # 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`コマンドを実行します。 ```bash td tables +------------+------------+------+-----------+ | Database | Table | Type | Count | +------------+------------+------+-----------+ | production | foo | log | 3 | +------------+------------+------+-----------+ ``` 正しく動作しない場合は、`/var/log/td-agent.log`を確認してください。`td-agent:td-agent`には、ログを読み取る権限が必要です。 ## 次のステップ 従来のRDBMSよりも柔軟なスキーマメカニズムを提供しています。クエリには、Hive Query Languageを活用します。 - [Schema Management](https://docs.treasuredata.com/articles/project-product-documentation/schema+Management) - [Hive Query Language](https://docs.treasuredata.com/articles/project-product-documentation/hive-reference) - [REST APIとそのバインディングによるプログラマティックアクセス](https://docs.treasuredata.com/articles/project-product-documentation/rest-apis-in-treasure-data)