Skip to content
Last updated

Logstash Import Integration

Logstashは、ログ管理用のオープンソースソフトウェアであり、ELKスタックの一部として広く使用されています。

Logstashには、多くのソースからデータを収集、フィルタリング、保存し、多くの宛先に送信するための多数のプラグインが存在します。Treasure Dataプラグインを作成することで、LogstashからTreasure Dataにデータを取り込むことができます。

Treasure Data Logstashプラグインのインストールと設定

Logstash用のTreasure Dataプラグインをインストールできます。以下の例では、Logstashがすでにインストールおよび設定されていることを前提としています。

$ 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キーを使用してください。

input {
  # ...
}
output {
  treasure_data {
    apikey   => "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
    database => "dbname"
    table    => "tablename"
    endpoint => "api-import.treasuredata.com"
  }
}

設定ファイルを使用してLogstashを起動します。

$ 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]
  • 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)を使用できます。これを行うには、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に保存します。

# Configuration for Logastash
input {
  # ...
}
output {
  fluentd {
    host => "your.host.name.example.com"
    port => 24224 # default
    tag  => "td.database.tablename"
  }
}
# Configuration for Fluentd
<source>
  @type forward
  port 24224
</source>
<match td.*.*>
  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
</match>

Fluentd tdlogプラグインは、td.dbname.tablenameを解析することで、多くのdatabase-tableの組み合わせにデータを保存できます。Logstash設定ファイルで任意のdatabaseとtableのペアを設定できます。

詳細情報