Fluentdプラグインを作ってRubyGems.orgに公開するまでの手順をまとめた

投稿者: | 2016/09/10

Fluentdプラグイン作りました

ohsawa0515/fluent-plugin-grepcount-filter

どういうプラグインかというと、正規表現でマッチしたログが閾値以上になった場合のみ通すというものでfluent-plugin-grepcounterfluent-plugin-datacounterを合わせたようなプラグインです。作る際にこの2つのプラグインを大変参考にさせていただきました。ありがとうございます。

なぜ作ったのか

「○○というエラーが一定時間内に一定回数以上流れてきたログのみを収集したい」という要望があったためです。当初はfluent-plugin-grepcounterだけを使えばできるじゃん!と思ったのですが、フィルタしたい条件が複数(AND)になった場合にログの中身(message)を出力しないことがわかり採用できませんでした。PRを送ろうかと考えましたが、ユースケースが限定的だなと思ったのと、ログをほとんど加工しないようにしたかったため新規で作ることにしました。

本題

本記事ではFluentdプラグインを作ってからRubyGems.orgに公開するまでの手順をメモしたので公開します。

実行環境

  • CentOS 7.2
  • td-agent v2.2.0 (Fluentd v0.12.7)

準備

Fluentdの実行環境を用意する

td-agentをインストールします。ラベル機能を使い勝ったので、Fluentd v0.12以上が入っているバージョンにします。
ここから好きなバージョンのRPMを選びます。

gem listでv0.12以上のFluentdがインストールされていればOKです。

td-agentを起動します。

ディレクトリ、ファイルの準備

Bundlerをインストールします。
gemコマンドはtd-agentをインストールすると同梱されていますが、すでにgemがインストールされていればそれを使っても良いです。

Fluentdプラグインの雛形を作成します。

ディレクトリやファイルなどを作成します。

実装&動作確認

プラグインの実装ができたら動作確認します。

test.confというファイルを用意してダミー用のデータを流してフィルタされた結果が出力されるかを検証します。
ダミー用データはin_dummpyプラグインを使います。

以下のようなデータがログに出力されればOKです。

gemspecを編集

gemライブラリの依存関係などをgemspecに記載します。
fluent-plugin-grepcount-filter.gemspec
ラベル機能を使いたいため、Fluentd v0.12以上を対象としているため "fluentd", ">= 0.12" としました。

RubyGems.orgにアップロード

プラグインが完成したらRubyGems.orgにアップロードして公開します。RubyGems.orgに予めサインアップしておいてください。

アップロードが完了すると、RubyGemsに公開されます。
https://rubygems.org/gems/fluent-plugin-grepcount-filter

試しにgem installでインストールできるかを確認します。

インストールできました!

最後に

Fluentdプラグインを作ってRubyGemsに公開してみました。お世辞にもRubyが書けると言えるわけでもなく、とりあえず動くものを作ろうと思い、テストもREADMEも書けていないお粗末なプラグインですが、Total Downloadが400を超えているので誰かしらが使ってくれているのだと思うと嬉しいものです。今後はちゃんとメンテナンスもしていきます。

参考URL

コメントを残す

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

*