サーバに搭載されているハードディスクなど、記録媒体の使用率を監視するためのテンプレートを作成します。データの増加傾向を見ることによって、ハードディスクが満杯になる前に増設をするなどの対応を施すことができます。
ハードディスクの使用率は df コマンド等で確認することができます「-h」オプションを付けると容量をMBやGB単位で表示してくれます。
$ df -h Filesystem Size Used Avail Use% Mounted on /dev/mapper/vg_centos66-lv_root 6.5G 1.6G 4.7G 25% / tmpfs 499M 0 499M 0% /dev/shm /dev/sda1 477M 28M 424M 7% /boot
テンプレートの作成
[設定]→[テンプレート]→[テンプレートの作成]をクリックします。
[テンプレート]タブを選択 下記を入力し「追加」をクリックすればテンプレートが作成されます。
テンプレート名:A_Template_Discovery_Disk グループ:A_Templates グループを作成する
アプリケーションの作成
[設定]→[テンプレート] 「A_Template_Discovery_Disk」行の「アプリケーション」をクリックします。
名前に「disk」を入力し「追加」をクリックすればアプリケーションが作成されます。
ローレベルディスカバリ
サーバに搭載されているハードディスクの数やマウントポイントの名前はサーバによって異なるため、ハードディスク(ファイルシステム)監視のテンプレート化はなかなか難しい面があります。そこで今回は Zabbix のローレベルディスカバリという仕組みを使ってテンプレートを作成します。
このローレベルディスカバリを使ってテンプレートを作成すると、Zabbixがサーバに搭載されているハードディスクを探してくれて、自動的にアイテムやトリガー、グラフを追加してくれます。
ローレベルディスカバリの設定は、Zabbixがどのような条件でハードディスクを探すかをディスカバリルールで定義し、どういったアイテムやトリガー、グラフを自動追加するかを設定するプロトタイプから構成されます。
ローレベルディスカバリについての詳細は公式マニュアルをご参照ください。
3 ローレベルディスカバリ | Zabbix Documentation 2.2
https://www.zabbix.com/documentation/2.2/jp/manual/discovery/low_level_discovery
ディスカバリルールの作成
[設定]→[テンプレート] 「A_Template_Discovery_Disk」行の「ディスカバリ」をクリックします。
---(設定箇所)---------------------------
名前:ディスクディスカバリ
キー:vfs.fs.discovery
更新間隔(秒):3600
------------------------------
続いて「フィルター」タブを選択して下記を入力し「追加」をクリックすればディスカバリルールが作成されます。
---(設定箇所)---------------------------
マクロ:{#FSTYPE}
正規表現:@File systems for discovery
------------------------------
マクロ
マクロの「{#FSTYPE}」はファイルシステムのタイプを取得しています。zabbix_get コマンドで「vfs.fs.discovery」キーを取得すると「{#FSTYPE}」が ext4 などになっているかと思います。もう一つのマクロ「{#FSNAME}」はマウントポイントを取得しています。
$ zabbix_get -s 172.16.1.20 -k vfs.fs.discovery (略){"{#FSNAME}":"/","{#FSTYPE}":"ext4"}(略)
正規表現
正規表現の「@File systems for discovery」は、[管理]→[一般設定]→[正規表現] で確認することができます。
今回作成したディスカバリルールは「{#FSNAME}」が正規表現の「@File systems for discovery」に一致すれば、これから作成するプロトタイプに従ってアイテムやトリガー、グラフを追加します。
▽ 11. 正規表現 | Zabbix Documentation 2.2
https://www.zabbix.com/documentation/2.2/jp/manual/regular_expressions
アイテムのプロトタイプの作成
キーや名前にディスカバリルールのマクロを使える以外は通常のアイテムの作成と同じです。
[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「ディスカバリ」→「アイテムのプロトタイプ」をクリックします。
下記を設定し「追加」をクリックすればアイテムのプロトタイプが作成されます。
---(設定箇所)---------------------------
名前:1050_ディスク使用率 $1
キー:vfs.fs.size[{#FSNAME},pused]
データ型:数値(浮動小数)
単位:%
更新間隔(秒):60
アプリケーション:disk
------------------------------
名前の「$1」は、キーの第一引数を表示します。キーの第一引数のマクロ「{#FSNAME}」は、「/」や「/boot」などマウントポイント名が入ります。
アイテムキー vfs.fs.size のパラメータ
vfs.fs.size[fs,<mode>]
fs - ファイルシステム
mode - -total(デフォルト)、free、used、pfree(空き、パーセンテージ)、pused(使用中、パーセンテージ)のうち1つ
詳細は公式マニュアル 1 Zabbixエージェント | Zabbix Documentaion 2.2 を参照してください。
トリガーのプロトタイプの作成
[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「ディスカバリ」→「トリガーのプロトタイプ」をクリックします。
下記を設定し「追加」をクリックすればトリガーのプロトタイプが作成されます。
---(設定箇所)---------------------------
名前:{HOST.NAME} disk {#FSNAME}
条件式:{A_Template_Discovery_Disk:vfs.fs.size[{#FSNAME},pused].last()}>80
深刻度:警告
------------------------------
トリガーの名前にはマクロが使用できます。上の設定 {HOST.NAME} はホストの表示名がトリガー名に表示されます。
条件式は、{<テンプレート名>:<アイテムキー>.<トリガー関数>}=<値> の形式です。手入力してもかまいませんが、なかなか複雑な書式ですので、条件式の「追加」ボタンをクリックして対象のプロトタイプを選択し、関数を選択して「挿入」ボタンをクリックすれば条件式を生成してくれます。
今回設定したトリガー条件式は、ディスク使用率が80%を超えたらトリガーが発生します。
▽ サポートされているトリガー関数 | Zabbix Documentaion 2.2
https://www.zabbix.com/documentation/2.2/jp/manual/appendix/triggers/functions
グラフのプロトタイプの作成
[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「ディスカバリ」→「グラフのプロトタイプ」をクリックします。
「グラフのプロトタイプ」タブを選択し、アイテムの「プロトタイプを追加」をクリックします。
グラフに表示したいアイテムのプロトタイプを選択し「選択」をクリックします。
下記を設定してアイテムのプロトタイプが追加されていることを確認し「追加」をクリックすればグラフのプロトタイプが作成されます。
---(設定箇所)---------------------------
名前:disk {#FSNAME}
Y軸の最小値:固定:0
Y軸の最大値:固定:100
グラフの形式:グラデーションライン
色:C80000
------------------------------
スクリーンの作成
Zabbix2.4からLLDで作成されるグラフもスクリーンに追加できるようになりました。便利になったものです(^^)
[設定]→[テンプレート] 「A_Template_Discovery_Disk」行の「スクリーン」をクリックします。
---(設定箇所)---------------------------
名前:disk
列:1
行:1
----------------------------
スクリーンセルの設定が開きますので、リソース「グラフのプロトタイプ」を選択し、グラフ名の「選択」をクリックします。
グラフのプロトタイプの名前「disk {#FSNAME}」をクリックします。
グラフ名が「A_Template_Discovery_Disk: disk {#FSNAME}」になっていることを確認して「追加」をクリックすれば登録終了です。他の値は特に変更する必要はありませんがお好みで調整してください。
動作確認
ディスカバリルールの更新間隔を3600秒(1時間)に設定していますので、動作確認の時だけ更新間隔を短く設定しておくとよいでしょう。
更新間隔の設定は、[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「ディスカバリ」→「ディスクディスカバリ」をクリックします。
最後に作成した監視テンプレートの動作確認をして作業完了です。
ディスカバリルール「ディスクディスカバリ」によってアイテムなどが追加されているのが確認できるかと思います。
動作確認が終了したらディスカバリルールの更新間隔を3600秒に戻しておきましょう。
コメント
Zabbix3.0で、同じ設定を行ってますがグラフが表示されません。
ディスク使用量の値も出てきません。
ディスカバリルールの更新間隔は30秒にしています。
グラフは、[設定]→[テンプレート]→「A_Template_Discovery_Disk」
→「アプリケーション」→「disk」のアイテム数が0の場合、
何も出てこないような気がするのですが、認識違いでしょうか。
>ドズルさん
コメントありがとうございます。
ディスカバリルールのややこしいところなのですが
ディスカバリルールの場合のアイテムは
[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「ディスカバリ」→「アイテムのプロトタイプ」で設定しますので
[設定]→[テンプレート]→「A_Template_Discovery_Disk」行の「アイテム」数は0で構いません。
ホストにテンプレート「A_Template_Discovery_Disk」を適用すると、ディスクが検出され、
検出されたディスクパテーションの数だけ、アイテム/トリガー/グラフが自動的に追加されます。
返答ありがとうございます。
実際には、サイトの記載通り、「アイテムのプロトタイプ」に設定しており、
「アイテム」は、数字なしの状態ですが、diskのグラフや、「監視データ→概要」に
ディスクの値が表示されません。
ディスクディスカバリ更新間隔は60秒です。
アイテムのプロトタイプ(1050_ディスク使用率 $1)も60秒です。
各ホストにもテンプレートを適用しているのですが、なぜか反映されません。
>ドズルさん
そうでしたか、ディスクディスカバリがうまくいっていないようですね。
ディスカバリルールの「フィルター」の設定を確認してみてください。
ご返答ありがとうございます。
ディスカバリルールの「フィルター」は以下のようになっています。
もちろん、正規表現で「File systems for discovery」ルールは追加しています。
> 計算のタイプ:And/Or
> フィルターA:{#FSTYPE} 一致する@File systems for discovery
記載忘れてたんですが、設定当初は正常に値が取れてたんですが、
気づいたら値が取れなくなっていました。
サーバ側のzabbixサービスの再起動などが必要でしょうか。
>ドズルさん
設定は大丈夫なようですね。
サーバ側の zabbix-server の再起動と、
監視ホストの zabbix-agent も再起動してみてください。