collectd で ZFS の空き容量をグラフ化

サーバー
スポンサーリンク

Collectd を使って ZFS の空き容量をグラフ化する方法を紹介します.

スポンサーリンク

はじめに

サーバーの状態をモニタするツールはいくつかありますが,今回は Collectd を使います.

Collectd はサーバのデータを手軽に収集することができるソフトです.プラグインアーキテクチャを採用しており,標準で様々なデータに対応した豊富なプラグインが用意されています.特に細かい設定をしなくても,プラグインを読み込んで基本的な設定をするだけで,欲しい情報を一通り収集してくれるのが特長です.

ただ,ディスクの使用量の収集に関しては 1 つ問題があります.具体的には,標準で付属する DF plugin はマウントポイント毎に使用量を取得するため,ZFS のサブボリュームを使っていると意図した値が取得できません.

ZFS 用のプラグイン(Plugin:ZFS ARC)も用意されているのですが,出力対象が ARC (Adaptive Replacement Cache) のステータスを対象にしており,ディスクの使用容量の取得には使えません.

そこで,ZFS のボリューム使用量を取得するプラグインを作成してみました.

プラグイン

作成したのはこちら.実行権限をつけた上で /usr/lib/collectd/zpool_df.py に保存します.

パーミッション設定

zpool による情報取得を root 以外にも行えるように /dev/zfs のパーミッションを変更します.

これによって, sudo グループに入っているユーザも zpool コマンドを実行できるようになります.

動作確認

プラグインを実行して,下記のような出力が得られれば OK です.CTRL-C で終了させます.

collectd の設定

/etc/collectd/collectd.conf に以下を追加します.「kimata」の部分は,sudo グループの適当なユーザに変更してください.

collectd を再起動すればデータの収集が始まります.

/var/log/syslog に変なログがでていなければ,準備完了です.

グラフ化

collectd のデータを Influxdb に突っ込んで,Grafana でグラフ化する場合,次のような設定を行います.
この例の場合,columbia というホストの storage という zpool の使用量をしています.

データが溜まってくると,次のようなグラフが表示されます.

コメント