LoginSignup
2
1

More than 5 years have passed since last update.

out_exec_filterでRubyの外部モジュールが動かなかったけどディレクトリ変えたら動いたよ

Last updated at Posted at 2016-03-16

前置き

前回、fluentdプラグインを作ろうと思ったけど、 out_exec_filterで十分目的達成できるじゃんって気付いたので、Rubyで外部モジュール作ってそっちで処理するようにしました。

事象

自身のホームディレクトリに作ったRubyの外部モジュールを out_exec_filter で呼び出すように /etc/td-agent/td-agent.conf に記述して再起動を実行するとログにエラーが出力されて正しく動作しない。

td-agent.conf
・・・
<match xxx.log>
    type exec_filter
    command /opt/td-agent/embedded/bin/ruby /home/bashishi/td-agent/exec/hogehoge.rb
    in_format json
    out_format msgpack
    tag xxx.log.parse
</match>
・・・

エラー
2016-03-16 12:43:17 +0900 [error]: exec_filter process unexpectedly exited. command="/opt/td-agent/embedded/bin/ruby /home/bashishi/td-agent/exec/hogehoge.rb" ecode=256

解決方法

hogehoge.rb を /etc/td-agent 配下に配置した。自分の場合は /etc/td-agent/exec/ ディレクトを作り、そこに配置しました。

td-agent.conf
・・・
<match xxx.log>
    type exec_filter
    command /opt/td-agent/embedded/bin/ruby /etc/td-agent/exec/hogehoge.rb
    in_format json
    out_format msgpack
    tag xxx.log.parse
</match>
・・・

注意

/etc/td-agent/ の下ならどこでもいいだろうって思って /etc/td-agent/plugin/ に置くと td-agent が起動も停止もできなくなることがあります。
/etc/td-agent/plugin/ ディレクトリは起動時に読み込むプラグイン類を配置する場所の一つらしいので、ここに標準入力からの入力待ちで無限ループしているようなモジュールを置くとプラグイン読み込み処理のところで固まります。というか固まった。
そして、モジュールも消さず、/etc/td-agent/td-agent.conf も書き換えずにサーバーの再起動をして・・・。

原因

そのうち調べます。
パーミッションの設定の問題ではない感じ。

2
1
0

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
2
1