Fluentdで閾値と大小比較して抽出するFilterPluginを書いた

Fluentdのプラグインを自作する機会があったので公開してみることにした。

fluent-plugin-num-comparison

homirun/fluent-plugin-num-comparison - GitHub

このFilterプラグインを使うことで事前に指定した閾値とrecordのキーの値を比較して大きい、もしくは小さいものだけを抽出できるようになる。

自分の調査不足の可能性もあるが、意外とこういう挙動をするプラグインが見当たらなかった。

(そもそもFluentdにやらせることではないのかもしれないが。)

Installation

$ gem install fluent-plugin-num-comparison

Example

Input

{"access_count": 29}
{"access_count": 30}
{"access_count": 31}

Config

record_keyには比較したい値のKey、thresholdには閾値、inequalityには閾値より大きいもの(larger)か小さいもの(smaller)のどちらを抽出したいかを指定する。

<filter test>
  @type num_comparison
  record_key access_count
  threshold 30
  inequality larger
</filter>

Output

この例では閾値である30よりも大きいものを抽出するという条件だったためaccess_countが29、30だったrecordは削除され、31のrecordだけが出力される。

{"access_count": 31}

さいごに

今回、初めてのFluentdPlugin作成 and gem作成をしてみた。

途中、テストコードの雛形として生成されたのがminitestでもRSpecでも無くてtest-unitというもので困惑したり、自分の個人リポジトリでは初のGitHubActionsも導入したくなったりしたが、新卒研修などのおかげで案外シュッとできた。

RubyもFluentdも英語も(DeepLにぶん投げた)初心者なのでコードやREADMEがおかしかったらぜひPR投げてもらえると。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA