

fluentd によって API サーバーのログを AWS S3 に送信しているシステムで  
td-agent 0.12.40 から 1.6.3 にバージョンアップしようと思っています

本体のバージョンアップ自体はおわったのですが  
/etc/td-agent/plugin/ にある以下のようなプラグインが

[code]

    module Fluent
      require 'fluent/plugin/out_s3'
      require 'yajl'
    
      class CustomS3Output < S3Output
    
        Plugin.register_output('custom_s3', self)
    
        def write(chunk)
          :
         (略)
          :
        end
      end
    end
    
[/code]

[code]

    /etc/td-agent/plugin/out_s3.rb:9:in `<module:Fluent>': uninitialized constant Fluent::S3Output (NameError)
    
[/code]

というエラーをはくようになりました

Fluent::S3Output というのは  
<https://github.com/fluent/fluent-plugin-s3>  
の  
<https://github.com/fluent/fluent-
plugin-s3/blob/master/lib/fluent/plugin/out_s3.rb>  
のことだと思うのですが

[code]

    /opt/td-agent/embedded/bin/fluent-gem install fluent-plugin-s3
    
[/code]

を行ってジェムのインストールには成功したんですがエラーは変わりません

バージョンアップ前はこのままのコードで動作していたので  
バージョンアップによってジェムのインストール方法や認識方法がかわったのでしょうか

サイトの最後の方に

[code]

    module Fluent # Since fluent-plugin-s3 v1.0.0 or later, use Fluent::Plugin instead of Fluent
    
[/code]

とかいてあるので１行目を

[code]

    module Fluent::Plugin
    
[/code]

と変更してみたんですが

[code]

    /etc/td-agent/plugin/out_s3.rb:11:in `<class:CustomS3Output>': uninitialized constant Fluent::Plugin::CustomS3Output::Plugin (NameError)
    
[/code]

というエラーになります

原因のわかる方いらっしゃったら助けていただけるとありがたいです  
よろしくお願いいたします


CC BY-SA 4.0
2019-07-30T09:46:22.620
57033
2020-09-22T06:00:30.047
2019-07-30T09:59:56.467
question
rubygems fluentd
fluentd バージョンアップでプラグインが使用している Fluent::S3Output が認識されなくなった


Fluentdとfluent-plugin-s3のバージョンアップでプラグインのnamespaceが変わったため、エラーになっています。

/etc/td-agent/plugin/ にある custom_s3 を以下のようにすると動くと思います。

[code]

    module Fluent
      module Plugin
        class CustomS3Output < Fluent::Plugin::S3Output
          Fluent::Plugin.register_output(self, "custom_s3")
          # ...
        end
      end
    end
    
[/code]

プラグインのAPIが変わっているので、これだけだと動かない可能性があります。  
その場合は、[ドキュメント](https://docs.fluentd.org/plugin-development/plugin-update-
from-v0.12)を参考にcustom_s3もv1のAPIを使うようにしてください。  
あと、改造内容によっては新しいバージョンのfluent-plugin-s3でそのまま対応できるかもしれないので、調べてみてください。


CC BY-SA 4.0
2019-09-12T05:17:39.470
59008
2019-09-12T05:17:39.470
19333
57033
answer