# Logstash Import Integration
[Logstash](https://www.elastic.co/products/logstash)は、ログ管理用のオープンソースソフトウェアであり、ELKスタックの一部として広く使用されています。
Logstashには、多くのソースからデータを収集、フィルタリング、保存し、多くの宛先に送信するための多数のプラグインが存在します。Treasure Dataプラグインを作成することで、LogstashからTreasure Dataにデータを取り込むことができます。
## Treasure Data Logstashプラグインのインストールと設定
Logstash用のTreasure Dataプラグインをインストールできます。以下の例では、Logstashがすでにインストールおよび設定されていることを前提としています。
```bash
$ cd /path/of/logstash
$ bin/plugin install logstash-output-treasure_data
Validating logstash-output-treasure_data
Installing logstash-output-treasure_data
Installation successful
```
LogstashをTreasure Dataサービスで設定します。Logstashデータのインポート先となるdatabaseとtableの名前を指定する必要があります。APIキーは、TD Consoleのプロファイルから取得できます。write-onlyキーを使用してください。
```conf
input {
# ...
}
output {
treasure_data {
apikey => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
database => "dbname"
table => "tablename"
endpoint => "api-import.treasuredata.com"
}
}
```
設定ファイルを使用してLogstashを起動します。
```bash
$ bin/logstash -f your.conf
```
TD Consoleでデータの行を確認できます。ログメッセージテキストはmessageカラムに保存され、追加のカラム(例: time、host、version)が存在します。

## パラメータ
ログはテーブルに保存されます。2つ以上のテーブルにデータを挿入する場合は、設定ファイルに2つ以上のセクションを作成してください。
Logstash設定では、以下のオプションを指定できます:
- apikey(必須)
- database(必須)
- table(必須)
- auto_create_table [true]: テーブルが存在しない場合にテーブルを作成します
- endpoint [[api.treasuredata.com](http://api.treasuredata.com)]
- use_ssl [true]
- http_proxy [none]
- connect_timeout [60s]
- read_timeout [600s]
- send_timeout [600s]
プラグインはほとんどの場合、デフォルト値で動作しますが、一部のパラメータは不安定なネットワーク環境で役立つ場合があります。
このプラグインは、データを最大5分間メモリバッファにバッファリングします。Logstashプロセスがクラッシュすると、バッファリングされたデータは失われます。インポート中のデータ損失を回避するには、Logstashプラグインと共にtd-agentを使用することをお勧めします。
## td-agentと組み合わせたLogstashプラグイン
Logstashプラグインは、バッファリング、保存されたテーブル仕様、およびパフォーマンスの面で制限されています。
より柔軟で高性能なデータ転送には、Treasure Agent([td-agent](https://docs.treasuredata.com/smart/project-product-documentation/about-treasure-data-s-server-side-agent))を使用できます。これを行うには、logstash-output-fluentdを使用します。
```
[host a]
-> (logstash-output-fluentd) -+
[host b] |
-> (logstash-output-fluentd) -+- [Treasure Agent] -> [Treasure Data]
[host c] |
-> (logstash-output-fluentd) -+
```
Logstashをtd-agentノードにログを送信するように設定でき、そのtd-agentがすべてのデータをTreasure Dataに保存します。
```conf
# Configuration for Logastash
input {
# ...
}
output {
fluentd {
host => "your.host.name.example.com"
port => 24224 # default
tag => "td.database.tablename"
}
}
# Configuration for Fluentd
@type forward
port 24224
type tdlog
endpoint api-import.treasuredata.com
apikey YOUR_API_KEY
auto_create_table
buffer_type file
buffer_path /var/log/td-agent/buffer/td
use_ssl true
num_threads 8
```
Fluentd tdlogプラグインは、td.dbname.tablenameを解析することで、多くのdatabase-tableの組み合わせにデータを保存できます。Logstash設定ファイルで任意のdatabaseとtableのペアを設定できます。
## 詳細情報
- [github.com/tagomoris/logstash-output-treasure_data](https://github.com/tagomoris/logstash-output-treasure_data)
- [github.com/tagomoris/logstash-output-fluentd](https://github.com/tagomoris/logstash-output-fluentd)