ふり返る暇なんて無いね

日々のメモ書きをつらつらと

Fluentdのfilter_grepの設定で少しはまった。

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時間くらいはまってた話でした。