LoginSignup
6
6

More than 5 years have passed since last update.

fluentdのdocker imageでfluent-plugin-bigqueryを動かす

Posted at

ただfluentdのdocker imageにfluent-plugin-bigqueryをインストールしただけでdocker-compose run fluentd すると以下のエラーが起きてfluentdが起動しません。

2017-02-14 02:06:20 +0000 [info]: starting fluentd-0.12.31
2017-02-14 02:06:21 +0000 [info]: gem 'fluent-mixin-config-placeholders' version '0.4.0'
2017-02-14 02:06:21 +0000 [info]: gem 'fluent-mixin-plaintextformatter' version '0.2.6'
2017-02-14 02:06:21 +0000 [info]: gem 'fluent-plugin-bigquery' version '0.4.0'
2017-02-14 02:06:21 +0000 [info]: gem 'fluent-plugin-buffer-lightening' version '0.0.2'
2017-02-14 02:06:21 +0000 [info]: gem 'fluent-plugin-td' version '0.10.29'
2017-02-14 02:06:21 +0000 [info]: gem 'fluentd' version '0.12.31'
2017-02-14 02:06:21 +0000 [info]: adding match in @mainstream pattern="docker.**" type="stdout"
2017-02-14 02:06:21 +0000 [info]: adding match in @mainstream pattern="**" type="file"
2017-02-14 02:06:21 +0000 [info]: adding match in @mainstream pattern="bigquery.**" type="bigquery"
/usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require': cannot load such file -- bigdecimal/util (LoadError)
    from /usr/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
(中略)
2017-02-14 02:06:21 +0000 [info]: process finished code=256
2017-02-14 02:06:21 +0000 [warn]: process died within 1 second. exit.

cannot load such file -- bigdecimal/util と言われていることより、どうやらbigqueryがいないと思われます。

fluent-plugin-bigqueryのissueを見ると全く同じ症状のものがありました。

結論的には、fluentdのdocker imageで使われているalpineがイメージ容量削減のためruby-bigdecimalを組み込んでいないことが原因のようです。ここでfluentdのdocker imageのリポジトリを見たらこの問題に関連したPRがありました。

これはfluent-plugin-bigqueryを動かそうとしたらbigdecimalで怒られるから追加したよ、というPRですが、closeされています。理由を見たらやはりイメージの容量を増やしたくないそうです。fluent-plugin-bigqueryがActiveSupportに依存しており、これがbigdecimalを使うから必要であって、そもそもActiveSupport依存は良くないのでfluent-plugin-bigquery側の問題である言及されています。

解決方法

fluentdのDockerfileでruby-bigdecimalをインストールするようにします。

ちなみにdocker-compose buildして docker-compose run fluentするとUnknown output plugin 'bigquery'って言われたのは以下より解決しました。
https://github.com/fluent/fluentd-docker-image/issues/21

Dockerfileは以下のようになりました

FROM fluent/fluentd
COPY fluent.conf /fluentd/etc/
USER root
RUN apk --no-cache --update add ruby-bigdecimal
USER fluent
RUN gem install fluent-plugin-bigquery

これで無事に動きました。

6
6
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6