Fluentdのプラグインを自作する機会があったので公開してみることにした。
fluent-plugin-num-comparison
この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投げてもらえると。