# 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)が存在します。 ![](/assets/logtash-td.3c9a41c1e020ed11569ac4a2873a1951219c2ac01bd125e726091791f45b9d62.8c2a6faf.png) ## パラメータ ログはテーブルに保存されます。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)