例えば、ZabbixでWindowsのCドライブの使用率を監視する際、アイテムキーのパラメーターで監視対象(Cドライブ)を指定する方法もありますが、複数のホストでテンプレートを使い回したい場合、他のホストのドライブ数や割り当て方(D、E、Fドライブ等)もそれぞれ異なると、1つ1つパラメーターでドライブを指定することはとても面倒になります。
そこで、ディスクを自動で検出して監視してくれる機能がLLD(ローレベルディスカバリ)です!
LLDでディスク使用率監視
ディスク使用率監視で設定するLLD(ローレベルディスカバリ)は、マウントされたディスクを自動で検出するディスカバリルールと、検出されたそれぞれのディスクを監視するためのアイテムとトリガーのプロトタイプの設定を行います。
- ディスカバリルール
- アイテムのプロトタイプ
- トリガーのプロトタイプ
その他にも、グラフやホストのプロトタイプもありますが、今回は使用しませんので割愛させていただきます。
自動でホストを検出するディスカバリもありますので便利ですよ!
ディスカバリルールの作成
初めに、自動でディスクを検出するためのディスカバリルールを作成します。
ここで設定した内容に従って、Zabbixが自動的にディスクを検出します。
- [設定] → [テンプレート(またはホスト)]に移動します
- テンプレートの行のディスカバリをクリックします
- 画面の右上隅にある[ディスカバリールールの作成]をクリックします
- フォームにディスカバリルールのパラメーターを入力します
設定内容は以下の通りです。
記載のない設定に関しては自身の環境に置き換えて設定してください。(デフォルトで問題ないです)
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <マウントされたファイルシステムの検出> | (任意の名前) |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | vfs.fs.discovery | (任意のキー) |
監視間隔 | <1h> | 滅多に変更しないので長くてOK |
設定項目の「タイプ」以外は任意になりますね。。
こちらはLinuxもWindowsも共通設計になりますが、次項の「フィルタ」はご注意ください。
フィルタ
ディスカバリルールでは、フィルタがとても重要になってきます。
例えば、何もフィルタをかけずにディスクを検出すると、監視不要なものまで全て検出してしまい、視認性が悪くなってしまうと共に、それを複数のホストで監視しようものなら、Zabbixの負荷も高くなってしまいます。
幸い、既に標準のテンプレートでも用意されていますので、そちらを拝借しましょう!
マクロ | 条件 | 正規表現 | 正規表現マクロの内容 |
---|---|---|---|
{#FSNAME} | 一致する | {$VFS.FS.FSNAME.MATCHES} | .+ |
{#FSNAME} | 一致しない | {$VFS.FS.FSNAME.NOT_MATCHES} | ^(/dev|/sys|/run|/proc|.+/shm$) |
{#FSTYPE} | 一致する | {$VFS.FS.FSTYPE.MATCHES} | ^(btrfs|ext2|ext3|ext4|reiser|xfs|ffs|ufs|jfs|jfs2|vxfs|hfs|apfs|refs|ntfs|fat32|zfs)$ |
{#FSTYPE} | 一致しない | {$VFS.FS.FSTYPE.NOT_MATCHES} | ^\s$ |
上記はLinuxのディスクを検出するためのフィルタになります。
Windowsの場合は、上記に加え、以下のフィルタも追加してください。
マクロ | 条件 | 正規表現 | 正規表現マクロの内容 |
---|---|---|---|
{#FSDRIVETYPE} | 一致する | {$VFS.FS.FSDRIVETYPE.MATCHES} | fixed |
{#FSDRIVETYPE} | 一致しない | {$VFS.FS.FSDRIVETYPE.NOT_MATCHES} | ^\s$ |
以上でディスカバリルールの設定は完了です!
次に、検出したディスクを監視をするために「アイテムのプロトタイプ」と「トリガーのプロトタイプ」を作成していきましょう。
アイテムのプロトタイプの作成
アイテムのプロトタイプでは、Zabbixで自動的に検出した全てのディスクの監視設定を共通的に行うことができます。
冒頭でも少し触れましたが、例えば、ディスクが複数ある場合、LLDを利用しなければディスクの数だけアイテムを設定しなければなりませんが、アイテムのプロトタイプを使えば、それぞれのLLDで検出したディスクのアイテムもZabbixが自動で作成します!
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <{#FSNAME}:ディスクの使用率> | (任意の名前)※LLDマクロを使うと尚良し |
タイプ | Zabbixエージェント | Zabbixエージェント(アクティブ)も可 |
キー | vfs.fs.size[{#FSNAME},pused] | LLDマクロ{#FSNAME}とpusedオプションを使用する |
データ型 | 数値(浮動小数) | ○○率の場合は浮動小数 |
単位 | % | ○○率なので%(監視データを参照する際に付く) |
監視間隔 | <1m> | (任意の間隔。トリガーも考慮する) |
アイテムのプロトタイプはディスカバリルールとは違って、OSの種類に関係なくこちらの監視設定で問題ありません。
トリガーのプロトタイプの作成
トリガーのプロトタイプもアイテムのプロトタイプと同じように、1つ設定していたら、Zabbixが検出したディスク全てに自動で設定されます。
Zabbixの標準テンプレートで設定されているトリガーのプロトタイプでは、ディスク使用率の他に、ディスクの空き容量や未来を予測して障害通知するような設定をしていますが、ここでは単純に一般的な監視設定だけ紹介します。
設定項目 | 設定値 | 説明・注意点 |
---|---|---|
名前 | <{#FSNAME}: ディスク容量が非常に少ない (使用率 > {$VFS.FS.PUSED.MAX.CRIT:”{#FSNAME}”}%)> | LLDマクロを利用して、どのディスクかでわかる名前にしましょう |
深刻度 | <軽度の障害> | (任意の深刻度) |
条件式 | last(/Template Resource/vfs.fs.size[{#FSNAME},pused])>{$VFS.FS.PUSED.MAX.CRIT:”{#FSNAME}”} | 最新の値の最小値が90%以上なら障害イベントを発生 |
トリガーのプロトタイプで使用しているユーザーマクロは、閾値用のマクロだけです。
マクロ | 値 | 説明 |
---|---|---|
{$VFS.FS.PUSED.MAX.CRIT} | 90 | 閾値(90%以上で検知させる場合に使用) |
もし、ディスク毎に別々の閾値を設定したいと考えているなら、コンテキストユーザーマクロが便利ですよ!
ディスク使用率監視の設定は以上で完了です!
あとは設定した通りにディスクが検出されて、監視データが取得できるか確認してみてくださいね!
また、LLDを利用するとネットワークのトラフィック監視も楽になります。
こちらもぜひ参考にしてみてください!
コメント
コメント一覧 (1件)
特命君さん、コメントありがとうございます。
まだグラフを試したことはありませんが、文章から察するに、/(ルート)だからではないでしょうか?
つまりそれ以外のディスク(パーティション)が、/(ルート)配下にあるものなので、円グラフ全体が、/(ルート)なのではないかと思います。
※間違ってたらすみません。訂正をお願いします。