Skip to content
Last updated

Fluentd 継続的データインポートインテグレーション

Fluentdを使用してTreasure Dataにデータを継続的にインポートできます。

Fluentdは、Rubyで書かれたデーモンで、ログをJSONストリームとして収集し、ログをバッファリングし、MySQL、MongoDB、あるいは他のFluentdインスタンスなどの他のシステムにログを送信します。

Treasure Agent(td-agent)ロギングデーモンにはFluentdが含まれています。しかし、多くのユーザーはRuby gemsを介してFluentdをインストールしています。既存のFluentdインストールをTreasure Dataに接続できます。詳細については、サーバーサイドエージェントとしてのtd-agentをお読みください。

前提条件

  • Fluentdとそのインストールに関する基本的な知識。

fluent-plugin-tdのインストール

以下のようにfluentdとfluent-plugin-td gemsをインストールします。

$ gem install fluentd
$ gem install fluent-plugin-td

設定ファイルに以下の行を追加します。fluent-plugin-tdにはtdlog出力タイプが含まれており、これはTreasure Dataにデータをアップロードするために使用されます。

# HTTP input
source
  type http
  port 8888
</source>

# TCP input
source
  type forward
  port 24224
</source>

# Treasure Data output
<match td.*.*>
  type tdlog
  endpoint api.treasuredata.com
  apikey ...
  auto_create_table
  buffer_type file
  buffer_path /path/to/buffer/td
  use_ssl true
</match>

APIキーは、アカウントを認証するための秘密鍵です。APIキーは、TDコンソールのプロファイルから取得できます。

データアップロードの確認

Fluentdサーバーを起動します。

$ ./bin/fluentd --config fluentd.conf

HTTPを使用してJSON形式でログを追加します。

$ curl -X POST -d 'json={"action":"login","user":2}' \
  http://localhost:8888/td.testdb.www_access

Fluentdは継続的にログをアップロードし、毎分データを送信します。SIGUSR1シグナルを送信すると、Fluentdはバッファリングされたログを即座にクラウドにフラッシュします。

$ kill -USR1 pid_of_fluentd

td tablesコマンドを実行して、データが正常にインポートされたことを確認します。

$ td tables
+------------+------------+------+-----------+
| Database   | Table      | Type | Count     |
+------------+------------+------+-----------+
| testdb     | www_access | log  | 1         |
+------------+------------+------+-----------+

問題が発生した場合は、Fluentdのログがトラブルシューティングの良い出発点です。