fluentd 0.12.15 の話です。
結論から言うとFluentdのfilter_grepが、keyの後にスペース1個しか許容してくれません。 なので、下記のようにそろえるために、スペースを余分に入れると、意図しない正規表現になってしまいます。
<filter fluent.info> type grep exclude1 message (?:^out_forest plants new output|adding rewrite_tag_filter rule) </filter>
正しくはこう。
<filter fluent.info> type grep exclude1 message (?:^out_forest plants new output|adding rewrite_tag_filter rule) </filter>
ソース的にはこのあたりで、スペース一個でsplitしてるので、2個目以降のスペースはregexに含まれてしまうという。
key, regexp = conf["regexp#{i}"].split(/ /, 2)
out_rewrite_tag_filterと同じ感覚で設定すると自分のようにはまるのが請け合いという話でした。
<match static.access.**> type rewrite_tag_filter rewriterule1 vhost (?:hogehoge.jp|fugafuga.jp) ignore rewriterule2 uri (?:/favicon.ico|/robots.txt) ignore rewriterule3 vhost (.*) static.access.site.$1 </match>
以上です。今日1時間くらいはまってた話でした。
あー、fluentdのfilter_grepって、keyの後にスペース1個しか許容しないなこれ。
`conf["exclude#{i}"].split(/ /, 2)`
`exclude1 message hogehoge`とか書いててはまってた。。。
— masasuzu? (@masasuz) August 10, 2015