概要
- fluentd(td-agent) がバージョンアップしたので確認した
バージョンアップについて
- Change Log
- 幾つかの修正等に合わせて、個人的に注目したのは
td-agent
の起動スクリプトでconfigtest
オプションが利用出来るようになったこと configtest
に関しては、改めて Change Log を確認すると0.10.36
から利用出来るようになった--dry-run
オプションを利用している(後述)
バージョンアップ
環境
- OS は Debian 6.0.7
- td-agent は既に
0.10.35
が稼働している状態(下図)
バージョンアップ後
- こちらから
deb
パッケージをダウンロードしてdpkg -i
でサクッとインストール - 下図のようにバージョンが
0.10.38
となった
個人的目玉な機能を試す
configtest
td-agent
の起動スクリプトを見ると新たに configtest
が加わっており、td-agent.conf
の内容を td-agent
起動前にチェックすることが出来るようなので、色々と試してみる。
td-agent.conf の設定を記述漏れ
td-agent.conf
の設定を書き間違えたというシチュエーションで...
カッコの閉じ忘れのまま...configtest
を行うと...
ちゃんとチェックしてくれる。
format の正規表現を記述漏れ(1)
複雑な正規表現、どうしても記述漏れしがち...。
上記のように、正規表現の [
を書き忘れてしまった場合。
一瞬、アレッと思ったが parser.rb
で warning
として検知される。
format の正規表現を記述漏れ(2)
さらに記述漏れが続く。
同じく、正規表現で ]
を書き忘れてしまった場合。
検知してくれる。但し、今度は Dry run
で...
同じ正規表現の記述漏れなのに前方のチェックは parser.rb
の warning
となり(ruby 自体が出力するエラー)、後方のチェックは --dry-run
になる点がちょっとおもしろい。
どっちもやらかした場合(1)
設定も format の正規表現も間違ってまうオッチョコチョイの場合にどうなるやろーって思ったら...
正規表現の [
と設定の <
を記述漏れ。
正規表現のエラーはスルーされているみたい。設定の記述漏れのみのエラーが出る。
どっちもやらかした場合(2)
設定 2 箇所も間違ってまうオッチョコチョイの場合。
記載漏れと typo してます。
どうやら最初の記載漏れのチェックで止まっている。二箇所のミスまでは指摘してくれないみたい。
--dry-run
今回の configtest
を実現しているのが fluentd
の --dry-run
というオプションのようで、/etc/init.d/td-agent
では以下のように記載されている。
ソースを追っていくと ./lib/fluent/supervisor.rb
の dry_run
メソッドに辿りついた(ソースを一部抜粋させて頂きました)
上記の通り、dry_run
からさらに個々のメソッドを呼び出している...
さらにそれを自分なりに読み解くと...
run_configure
からengine.rb
(Engin クラス)のparse_config
メソッドが呼び出されるparse_config
メソッド の中でconfigure
メソッドを呼び出していてこのメソッド内で設定ファイルを解析しているengine.rb
からconfig.rb
(Config クラス) のparse
メソッドも require されていてので記述ミスに対してもparse error
を出すことが出来る
という風に読み解いてみた。どうだろう...。
ということで
やったこと
- バージョンアップによって追加された configtest を試してみた
- --dry-run の挙動についてソースを追ってみた
気づいたこと
正規表現のチェックで挙動が少し違う
[]
の前と後ろの記述漏れで[
だったらruby
の Warning が出るが]
だと fluentd のエラーとなる
ミスが複数あった場合には最初のチェックのみがチェックされる
- 行頭からチェックしてエラーだったら exit しているようなので仕方がないのかもしれない