fluent-plugin-postgres の key_names の設定でハマった話

fluent-plugin-postgres

Fluentd の plugin にfluent-plugin-postgresという PostgreSQL 用の plugin があります。こいつの設定(conf ファイルでの記述)でハマった話です。

正常に動作しない記述

以下のような conf を書くと正しく動作しません。

<match mysql_replicator>
  @type postgres
  host hostname
  port 5432
  database hogehoge
  username foo
  password bar
  key_names id, name, age, gender
  sql INSERT INTO fugafuga.members (id, name, age, gender) VALUES ($1, $2, $3, $4)
</match>

なぜか。それはkey_namesのキーの区切りにおいて、カンマの後に空白があるからです。したがって次のように書けば正しく動作します。

正常に動作する記述

<match mysql_replicator>
  @type postgres
  host hostname
  port 5432
  database hogehoge
  username foo
  password bar
  key_names id,name,age,gender
  sql INSERT INTO fugafuga.members (id, name, age, gender) VALUES ($1, $2, $3, $4)
</match>

所感

このkey_namesの部分はプラグインがパースしている部分なので、カンマの後にスペースがあると正しくパースできないというのは当然だとは思います。一般的な言語でのコードを書く感覚でカンマの後にスペースを入れているとハマってしまいますね。

Powered by はてなブログ