LoginSignup
0
0

More than 5 years have passed since last update.

fluent-plugin-monologをfluentd v0.14に対応させました

Posted at

はじめに

fluent-plugin-monologは、monologというPHPのロガーが出力したログをパースするためのfluentd用のプラグインです。

公開した当時の記事はこちらです。

issue#1

v0.1.0を公開したのが2016/7/7なので、1年以上経ってからissue#1が作成されました。

実際のやりとりは、githubのissueを見てもらうとして、流れをざっと説明すると以下のようになります。

fluent-plugin-monolog-example で動作確認 => 特に問題なさそう

bundle exec rake testでは、動作確認としては足りないので、確認用の環境を作っていて、それがfluent-plugin-monolog-exampleなのですが、動作確認しても特に問題ありません。
期待通り動きました。

どうやら、fluentd v0.14で問題あるらしい

正直、今回のissueを見るまでは、fluentd v0.14については何も知りませんでした。
2016年6月には遅くてもアナウンスされていたことを考えると、公開時には考慮しておくべきでした。

上記の記事を見て、「あー。これは確かに動かないだろうな」と思いました。

まずは、fluent-plugin-monolog-examplefluentdv0.14にする

実際のPRはこちらです。

curl -L http://toolbelt.treasuredata.com/sh/install-redhat-td-agent3.sh | sh

で、v0.14がインストールされます。

現象確認

試しにfluentd v0.14環境で、fluent-plugin-monolog v0.1.8をインストールし、ログを出力すると、下記のエラーが出ます。

# php example/fluent_handler.php 
Fluent\Logger\FluentLogger stream_socket_client(): unable to connect to tcp://127.0.0.1:24224 (Connection refused) example.fluent: {"message":"foo bar","level":"DEBUG"}

fluentdのログを確認すると、下記のようにエラーメッセージが出力されていることが分かります。

$ cat /var/log/td-agent/td-agent.log | grep error

...
#0 unexpected error error_class=NameError error="uninitialized constant Fluent::TextParser::Parser"
...

尚、fluent-plugin-monolog v0.1.8は下記のようにインストールします。

$ td-agent-gem install fluent-plugin-monolog -v 0.1.8

コードとテストの修正

fluentdの公式ガイドを見ながらコードを修正します。

  • “fluent/parser”の代わりに、“fluent/plugin/parser”をrequireする
  • スーパークラスをFluent::ParserからFluent::Plugin::Parserに変更

コード的には、この2つで大丈夫で、あとは、テストコードを一部、変更するだけでした。

  • Fluent::TextParserFluent::Plugin::TextParserに変更

依存するfluentdのバージョンを指定

fluentd v0.14以上に対応していることを明示します。
ただ、色々試しましたが、インストールでエラーになるようなことはなかったので、正直、ドキュメント的な意味合いなのかと思ってます(ご存知の方ご指摘を)。

fluent-plugin-monolog v0.2.0をリリース

こうして、fluent-plugin-monolog v0.2.0をリリースしました。

おわりに

fluentdPluginsページでも紹介されていますので、fluentdmonolog使っている方は、fluent-plugin-monolog、ぜひお試しください。

ではでは。

0
0
4

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
0
0