td-agentからデータをBigQueryに入れる

td-agent(fluentd)からテーブルを日付でパーティショニングしてBigQueryに投入します。

まずは、fluent-plugin-bigqueryというプラグインをtd-agentにインストールします。

td-agent-gem install fluent-plugin-bigquery

設定

BigQueryのjsonキーを使用した場合の設定です
その他の設定はこちら

/etc/td-agent/td-agent.conf

<match debug.**>
  @type bigquery

  method insert
  <buffer time>
    flush_interval 1
    timekey 1d
  </buffer>
  auth_method json_key
  json_key /path/to/API_key.json
  auto_create_table true
  project projectname
  dataset datasetname
  table states$%Y%m%d
  schema_path /etc/td-agent/schema.json
</match>

<source>
  @type http
  port 8888
</source>

/etc/td-agent/schema.json

[
  {
    "name": "id",
    "type": "INTEGER"
  },
  {
    "name": "name",
    "type": "STRING"
  },
  {
    "name": "comment",
    "type": "STRING"
  }
]

確認

curlでこのようなコマンドを叩いてみるとBigQueryに値が入っているはずです

curl -X POST -d 'json={"id":1, "name":"tom", "comment": "hello"}' http://localhost:8888/debug.http