【ISSUE】ディスク空き容量を取得するFluentdのプラグイン作った

0

2024年12月23日 17:28

プラグイン作りました

fluentdという様々なデータ収集を統一できるオープンソースのソフトウェアがありますが、プラグインを入れることによって様々で種類のデータを取得したり、加工したりすることができるようになります。

今回は、fluentdを動かしているPCのディスク容量を取得したかったのですが、よさげなプラグインがなかったので作ってみました。RubyGemにも公開済みです。OSSなのでPR, issue歓迎です🙇‍♂

https://github.com/nomunomu0504/fluent-plugin-diskfree

https://rubygems.org/gems/fluent-plugin-diskfree

使い方

プラグインをGemでインストールします。

img

これでプラグインが利用できるようになるので、fluentdの設定ファイルに追記します。

img

それぞれの設定値は以下の通りです。

オプションデフォルト値説明
optionstring-kdfコマンドに渡すオプション。
デフォルトはblock-sizeを1Kとして
表示するオプションが設定されています。
refresh_intervalinteger5dfコマンドを実行する間隔。
デフォルトは5秒です。
mounted_pathstring/チェック対象のマウントパスを指定します。
デフォルトはルートディレクトリとなっています。
trim_percentbooltruedfコマンド結果に現れる%を削除します。
trueの場合、返却される値の型はint
falseの場合は、返却される値の型はstringになります。
replace_separatorbooltruemounted_pathで指定したパスの/_に変換してから返却します。
tag_prefixstringdiskfreefluentdのタグに接頭語を追加します。

上記のfluent.confの状態で、fluentdを実行すると以下のようなログを取得することができます。

img

実装解説

fluentd公式サイトに、プラグインの作成方法が掲載されています。基本的にはその方法に従って作成します。
(※ 今回のプラグインを作るときには、fluentd公式の方法を見つけていなくて普通のGemを作る方法で実装してました...🥺)

このプラグインの主要な部分だけ軽く解説しておきます。ソース全体はGithub上に公開されています。

img

@execute_command には実行する df コマンドを指定します。@execute_command の定義はこんな感じです。

img

fluent.conf で指定した option や mounted_path を展開して実行する df コマンド作りあげます。上記のconf設定だと、このような df コマンドが実行されます。

img

このコマンドを実行すると以下のような結果が返ってきます。それを result の中に格納します。
(※ 表示内容は実行している端末によって異なります。)

img

そして result.shift を実行することで、df コマンドのヘッダー部分を削除して、必要な情報だけが result の中に残るようにします。

img

ヘッダーを削除した状態で、データを分割して配列化します。
結果を出力するために必要なデータを取得できなかった場合には、エラーログを出力するようにしておきます。

img

あとは必要なデータから、出力するデータを生成して終了です。

img
[cv:issue_marketplace_engineer]

0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。