この特集のトップページへ
この回のトップページへ

disk

 disk行を設定すると,特定のパス以下の空き容量が,指定されたキロバイト数以下になるもしくは指定されたパーセント以下になったときにエラー扱いとすることができる。disk行の設定書式は次の通りだ。

disk 調査するパス名最小容量またはパーセンテージ

 調査するパス名の部分には,調査したいディレクトリパスを指定する。そして,空白(またはタブ)で区切って,エラー扱いとしたい容量またはパーセンテージを指定する。容量の場合には,キロバイト単位で,パーセント値の場合には,“80%”とか“90%”といったように数字の後ろに“%”記号を伴って指定する。

 デフォルトのsnmpd.confファイルでは,次の指定となっており,/ディレクトリの空き容量が10000キロバイト――すなわち10Mバイト――以下にになったならば,それをエラー扱いとする設定になっている。

disk / 10000

 disk行にて指定したディスクの調査結果は,dskTableサブツリー(1.3.6.1.4.1.2021.9)以下に,配列の形で格納される(Table 12)。

Table 12 dskTableサブツリー(1.3.6.1.4.1.2021.9
OID 1.3.6.1.4.1.2021.9.1
サブツリー名 dskEntry
用途 配下にディスク情報を含むための階層ツリー。値はない
OID 1.3.6.1.4.1.2021.9.1.i
サブツリー名 dskIndex
用途 インデックス番号。disk行の登場順に,先頭から1,2,3,…というインデックス番号が振られる。iの値と同じ
OID 1.3.6.1.4.1.2021.9.2.i
サブツリー名 dskPath
用途 調査対象となるパス名。disk行の調査するパス名に指定した値
OID 1.3.6.1.4.1.2021.9.3.i
サブツリー名 dskDevice
用途 dskPathが含まれるデバイス名。/dev/hda1など
OID 1.3.6.1.4.1.2021.9.4.i
サブツリー名 dskMinimum
用途 disk行で指定したエラー扱いとする最小容量。パーセント設定されているときには-1
OID 1.3.6.1.4.1.2021.9.5.i
サブツリー名 dskMinPercent
用途 disk行で指定したエラー扱いとする最小容量のパーセンテージ。キロバイト単位で設定されているときには-1
OID 1.3.6.1.4.1.2021.9.6.i
サブツリー名 dskTotal
用途 dskDeviceで指定されるデバイスが格納できる最大容量。キロバイト単位
OID 1.3.6.1.4.1.2021.9.7.i
サブツリー名 dskAvail
用途 dskDeviceで指定されるデバイスの現在の空き容量。キロバイト単位
OID 1.3.6.1.4.1.2021.9.8.i
サブツリー名 dskUsed
用途 dskDeviceで指定されるデバイスの現在の利用容量。キロバイト単位
OID 1.3.6.1.4.1.2021.9.9.i
サブツリー名 dskPercent
用途 dskDeviceで指定されているディスクの使用率を百分率で示した値
OID 1.3.6.1.4.1.2021.9.10.i
サブツリー名 dskPercentNode
用途 dskDeviceで指定されているディスクのiノードの使用率を百分率で示した値
OID 1.3.6.1.4.1.2021.9.100.i
サブツリー名 dskErrorFlag
用途 空き容量がdisk行で指定された容量以下になったかどうかのエラーフラグ。1のときに容量以下になったことを,0のときにまだその空き容量以上空いていることを示す
OID 1.3.6.1.4.1.2021.9.101.i
サブツリー名 dskErrorMsg
用途 dskErrorFlagが1になっているとき,そのエラーメッセージ
iはインデックス番号。snmpd.confファイル中に出てきたdisk行の登場順に,先頭から1,2,3,…という値。

 デフォルトの設定では,/ディレクトリの空き容量が10MB以下になったときにエラー扱いとなるように設定されている。snmpd.confファイルにはそれ以外にdisk行はなく,この項目にはインデックス番号として1が割り当てられる。よって,/ディレクトリの空き容量が10MB以下になったとき,1.3.6.1.4.1.2021.9.100.1の値が1に設定される。SNMPマネージャを使ってこの値を監視すれば,ディスクの空き容量不足を調べることができるというわけだ。snmpwalkコマンドを使ってdskTableサブツリー(1.3.6.1.4.1.2021.9)を参照した例を以下に示す。

$ snmpwalk localhost private .1.3.6.1.4.1.2021.9
enterprises.ucdavis.dskTable.dskEntry.dskIndex.1 = 1
enterprises.ucdavis.dskTable.dskEntry.dskPath.1 = /
enterprises.ucdavis.dskTable.dskEntry.dskDevice.1 = /dev/hda1
enterprises.ucdavis.dskTable.dskEntry.dskMinimum.1 = 10000
enterprises.ucdavis.dskTable.dskEntry.dskMinPercent.1 = -1
enterprises.ucdavis.dskTable.dskEntry.dskTotal.1 = 128812
enterprises.ucdavis.dskTable.dskEntry.dskAvail.1 = 72437
enterprises.ucdavis.dskTable.dskEntry.dskUsed.1 = 49724
enterprises.ucdavis.dskTable.dskEntry.dskPercent.1 = 41
enterprises.ucdavis.dskTable.dskEntry.dskPercentNode.1 = 23
enterprises.ucdavis.dskTable.dskEntry.dskErrorFlag.1 = 0
enterprises.ucdavis.dskTable.dskEntry.dskErrorMsg.1 =

 参考までに,このホストの現在のディスク使用状況を知るべく,dfコマンドを実行したときの結果を以下に示す。

$ df
Filesystem 1k-blocks Used Available Use% Mounted on
/dev/hda1 128812 49724 72437 41% /
/dev/hda3 378743 53262 305926 15% /home
/dev/hda6 1277792 736196 476684 61% /usr

 dfコマンドの出力結果とdskTableサブツリー内のオブジェクトに格納されている値とを比べると,どれとどれが対応するのかがわかるだろう。

 disk行は,もちろん必要なだけ追加することができる。disk行を追加するのであれば,パーティション単位に設定項目を追加しておくとよいだろう。たとえば,//home/varの3つのパーティションを使っているのであれば,そのそれぞれを監視するよう,たとえば,次の設定をすればよい。

disk / 20%
disk /home 10%
disk /var 30%

 snmpd.confdisk行を上記のようにしておくと,先頭の項目から順にインデックス番号が1,2,3と割り当てられる。よって,次のような動作になる。

  • /ディレクトリの空き容量が20%を切ったとき
    1.3.6.1.4.1.2021.9.1.100.1が1になる。
  • /homeディレクトリの空き容量が10%を切ったとき
    1.3.6.1.4.1.2021.9.1.100.2が1になる。
  • /homeディレクトリの空き容量が30%を切ったとき
    1.3.6.1.4.1.2021.9.1.100.3が1になる。

disk行は最大50個まで指定できる。それ以上設定したいときには,ucd-snmpのソースファイルであるconfig.hファイルのMAXDISKS定数を書き換え,再度makeしなければならない。

PREV 22/36 NEXT