Personal tools
You are here: Home サーバ設定 MRTG MRTGでディスク監視(linux)
Document Actions

MRTGでディスク監視(linux)

by tamohiko last modified 2007-08-20 22:23

MRTGでディスク容量の管理をする用法

前提条件

MRTGの導入が完了していること。
導入方法は以下を参照ねがいます。
MRTGインストール

net-snmpd設定変更

ディスクの使用状況をsnmpで取得するためには、若干設定を追加する必要があります。 なので、net-snmpdの設定ファイルであるsnmpd.confの編集を行っていきます。

追加設定

念のため設定ファイルのバックアップを行ってから、編集作業を行っていきます。

# cp -p /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf_yyyymmdd
# vi /etc/snmp/snmpd.conf
追加設定項目

監視したいパーティションを記述します。
今回は 「/」 「/var」 「/export」 「/boot」の4つを設定してみました。
(太字部分が今回追加した項目です)

###############################################################################
# disk checks
#

# The agent can check the amount of available disk space, and make
# sure it is above a set limit.

# disk PATH [MIN=100000]
#
# PATH: mount path to the disk in question.
# MIN: Disks with space below this value will have the Mib's errorFlag set.
# Default value = 100000.

# Check the / partition and make sure it contains at least 10 megs.

#disk / 10000
disk / disk /boot disk /export disk /var

空き容量で正常値の監視する場合は、以下のように設定することで 閾値を設定することができます。

disk /      10%
disk /var 100000
設定反映

設定が完了しましたら、snmpdを再起動し設定の反映を行います。

# /etc/init.d/snmpd restart

snmpd動作確認(ディスク使用率の確認)

設定が完了しましたら、実際に「snmpwalk」コマンド使用してディスクの使用状況を取得してみます。
ディスク使用量を取得するためのmib値は「.1.3.6.1.4.1.2021.9.1.9」となります。

snmpwalk書式
snmpwalk -v [バージョン] -c [コミュニティ名] [ホスト名] [検索範囲]

※下記の実行結果はsnmpのコミュニティ名が「public」で、localhost上のディスク使用率を取得しています。

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.9
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 33 (使用%が表示されます。) UCD-SNMP-MIB::dskPercent.2 = INTEGER: 82 UCD-SNMP-MIB::dskPercent.3 = INTEGER: 2 UCD-SNMP-MIB::dskPercent.4 = INTEGER: 7

「UCD-SNMP-MIB::dskPercent」=「.1.3.6.1.4.1.2021.9.1.9」となります。

ディスクの使用状況が%で表示されます。dfコマンドと比較することで、 どのパーティションがどのMIB値と対応しているか確認できます。
※snmpd.confに設定した順番に表示されているはずです。

# df -h
Filesystem サイズ 使用 残り 使用% マウント位置
/dev/hda5 20G 6.1G 13G 33% /
/dev/hda3 99M 77M 18M 82% /boot
tmpfs 471M 0 471M 0% /dev/shm
/dev/hda8 20G 294M 19G 2% /export
/dev/hda7 2.0G 131M 1.8G 7% /var

「snmpwalk」と「df」の結果からディスク使用率とMIB値は、以下のように対応していうことが分ります。
ですので、実際にmrtgで収集するmib値はそれぞれ以下の値となることが分ります。

/       .1.3.6.1.4.1.2021.9.1.9.1
/boot .1.3.6.1.4.1.2021.9.1.9.2
/export .1.3.6.1.4.1.2021.9.1.9.3
/var .1.3.6.1.4.1.2021.9.1.9.4

mrtg.cfg 設定追加

「/」「/boot」「/export」「/var」の領域をMRTGで監視するため /etc/mrtg/mrtg.cfgに以下の設定を追加します。

# cp -p /etc/mrtg/mrtg.cfg  /etc/mrtg/mrtg.cfg_yyyymmdd
# vi /etc/mrtg/mrtg.cfg
追加項目

※MRTGで情報を取得する際は、2つのデータを取ってこないといけないので Target項目で、同じmib値を2個指定しています。
※html部分はお好みで変更してください。 ※html部分は頭に必ずスペースを入れてください。入れないとエラーとなります。

# Disk Space Watch

Target[disk]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.1:public@localhost
MaxBytes[disk]: 100
Unscaled[disk]: dwmy
Options[disk]: gauge,absolute,nopercent,noinfo
YLegend[disk]: Disk Used(%)
ShortLegend[disk]: (%)
LegendI[disk]: / Disk used
LegendO[disk]: / Disk Used
Legend1[disk]: / Disk used
Legend2[disk]: / Disk used
Title[disk]: Disk Used /
PageTop[disk]: <h1>Disk Used /</h1>
<div id="sysdetails">
<table>
<tr>
<td>System:</td>
<td>webserver</td>
</tr>
<tr>
<td>Maintainer:</td>
<td>Root <root@localhost> </td>
</tr>
<tr>
<td>Capacity of disk</td>
<td>20GB</td>
</tr>
</table>
</div>


Target[disk2]: .1.3.6.1.4.1.2021.9.1.9.2&.1.3.6.1.4.1.2021.9.1.9.2:public@localhost
MaxBytes[disk2]: 100
Unscaled[disk2]: dwmy
Options[disk2]: gauge,absolute,nopercent,noinfo
YLegend[disk2]: Disk Used(%)
ShortLegend[disk2]: (%)
LegendI[disk2]: /boot Disk used
LegendO[disk2]: /boot Disk Used
Legend1[disk2]: /boot Disk used
Legend2[disk2]: /boot Disk used
Title[disk2]: Disk Used /boot
PageTop[disk2]: <h1>Disk Used /boot</h1>
<div id="sysdetails">
<table>
<tr>
<td>System:</td>
<td>webserver</td>
</tr>
<tr>
<td>Maintainer:</td>
<td>Root <root@localhost> </td>
</tr>
<tr>
<td>Capacity of disk</td>
<td>100MB</td>
</tr>
</table>
</div>


Target[disk3]: .1.3.6.1.4.1.2021.9.1.9.3&.1.3.6.1.4.1.2021.9.1.9.3:public@localhost
MaxBytes[disk3]: 100
Unscaled[disk3]: dwmy
Options[disk3]: gauge,absolute,nopercent,noinfo
YLegend[disk3]: Disk Used(%)
ShortLegend[disk3]: (%)
LegendI[disk3]: /export Disk used
LegendO[disk3]: /export Disk Used
Legend1[disk3]: /export Disk used
Legend2[disk3]: /export Disk used
Title[disk3]: Disk Used /export
PageTop[disk3]: <h1>Disk Used /export</h1>
<div id="sysdetails">
<table>
<tr>
<td>System:</td>
<td>webserver</td>
</tr>
<tr>
<td>Maintainer:</td>
<td>Root <root@localhost> </td>
</tr>
<tr>
<td>Capacity of disk</td>
<td>20GB</td>
</tr>
</table>
</div>


Target[disk4]: .1.3.6.1.4.1.2021.9.1.9.4&.1.3.6.1.4.1.2021.9.1.9.4:public@localhost
MaxBytes[disk4]: 100
Unscaled[disk4]: dwmy
Options[disk4]: gauge,absolute,nopercent,noinfo
YLegend[disk4]: Disk Used(%)
ShortLegend[disk4]: (%)
LegendI[disk4]: /var Disk used
LegendO[disk4]: /var Disk Used
Legend1[disk4]: /var Disk used
Legend2[disk4]: /var Disk used
Title[disk4]: Disk Used /var
PageTop[disk4]: <h1>Disk Used /var</h1>
<div id="sysdetails">
<table>
<tr>
<td>System:</td>
<td>webserver</td>
</tr>
<tr>
<td>Maintainer:</td>
<td>Root <root@localhost> </td>
</tr>
<tr>
<td>Capacity of disk</td>
<td>2.0GB</td>
</tr>
</table>
</div>

mrtgの実行

mrtg.cfgの設定が終わったら、実際にmrtgを実行してデータを取得します。
最初2回はエラー出ますが、気にしないでください。

# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup The backup log file for disk was invalid as well
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't rename disk.log to disk.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk2
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup The backup log file for disk2 was invalid as well
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't remove disk2.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't rename disk2.log to disk2.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk3
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup The backup log file for disk3 was invalid as well
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't remove disk3.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't rename disk3.log to disk3.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup could not read the primary log file for disk4
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup The backup log file for disk4 was invalid as well
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't remove disk4.old updating log file
02-08-2007 10:00:35, Rateup WARNING: /usr/bin/rateup Can't rename disk4.log to disk4.old updating log file

# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg
02-08-2007 10:00:40, Rateup WARNING: /usr/bin/rateup Can't remove disk.old updating log file
02-08-2007 10:00:40, Rateup WARNING: /usr/bin/rateup Can't remove disk2.old updating log file
02-08-2007 10:00:40, Rateup WARNING: /usr/bin/rateup Can't remove disk3.old updating log file
02-08-2007 10:00:41, Rateup WARNING: /usr/bin/rateup Can't remove disk4.old updating log file
# env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg

MRTG index再作成

MRTGでの監視項目が追加されたので、indexページにも「indexmaker」コマンドを使用して項目を追加します。

# indexmaker /etc/mrtg/mrtg.cfg --addhead="<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; charset=euc-jp\">" \
--output /var/www/mrtg/index.html

※output先はサーバの設定に合わせて適宜変更してください。

動作確認

webブラウザでMRTGのindex画面にアクセスしてみてください、無事にグラフが表示されているはずです。

おまけ

ディスクの使用率以外の値でディスク監視を行いたい場合は、以下のような情報を取得することが 出来るのでお好みに合わせて使用してください。

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.1
UCD-SNMP-MIB::dskIndex.1 = INTEGER: 1
UCD-SNMP-MIB::dskIndex.2 = INTEGER: 2
UCD-SNMP-MIB::dskIndex.3 = INTEGER: 3
UCD-SNMP-MIB::dskIndex.4 = INTEGER: 4

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.2
UCD-SNMP-MIB::dskPath.1 = STRING: /
UCD-SNMP-MIB::dskPath.2 = STRING: /boot
UCD-SNMP-MIB::dskPath.3 = STRING: /export
UCD-SNMP-MIB::dskPath.4 = STRING: /var

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.3
UCD-SNMP-MIB::dskDevice.1 = STRING: /dev/hda5
UCD-SNMP-MIB::dskDevice.2 = STRING: /dev/hda3
UCD-SNMP-MIB::dskDevice.3 = STRING: /dev/hda8
UCD-SNMP-MIB::dskDevice.4 = STRING: /dev/hda7

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.4
UCD-SNMP-MIB::dskMinimum.1 = INTEGER: 100000
UCD-SNMP-MIB::dskMinimum.2 = INTEGER: 100000
UCD-SNMP-MIB::dskMinimum.3 = INTEGER: -1
UCD-SNMP-MIB::dskMinimum.4 = INTEGER: 100000

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.5
UCD-SNMP-MIB::dskMinPercent.1 = INTEGER: -1
UCD-SNMP-MIB::dskMinPercent.2 = INTEGER: -1
UCD-SNMP-MIB::dskMinPercent.3 = INTEGER: 10
UCD-SNMP-MIB::dskMinPercent.4 = INTEGER: -1

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.6
UCD-SNMP-MIB::dskTotal.1 = INTEGER: 20315812
UCD-SNMP-MIB::dskTotal.2 = INTEGER: 101105
UCD-SNMP-MIB::dskTotal.3 = INTEGER: 20751424
UCD-SNMP-MIB::dskTotal.4 = INTEGER: 2030736

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.7
UCD-SNMP-MIB::dskAvail.1 = INTEGER: 12926940
UCD-SNMP-MIB::dskAvail.2 = INTEGER: 17669
UCD-SNMP-MIB::dskAvail.3 = INTEGER: 19379576
UCD-SNMP-MIB::dskAvail.4 = INTEGER: 1776428

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.8
UCD-SNMP-MIB::dskUsed.1 = INTEGER: 6340232
UCD-SNMP-MIB::dskUsed.2 = INTEGER: 78215
UCD-SNMP-MIB::dskUsed.3 = INTEGER: 300716
UCD-SNMP-MIB::dskUsed.4 = INTEGER: 149488

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.9
UCD-SNMP-MIB::dskPercent.1 = INTEGER: 33
UCD-SNMP-MIB::dskPercent.2 = INTEGER: 82
UCD-SNMP-MIB::dskPercent.3 = INTEGER: 2
UCD-SNMP-MIB::dskPercent.4 = INTEGER: 8

# snmpwalk -v 2c -c public localhost .1.3.6.1.4.1.2021.9.1.10
UCD-SNMP-MIB::dskPercentNode.1 = INTEGER: 4
UCD-SNMP-MIB::dskPercentNode.2 = INTEGER: 0
UCD-SNMP-MIB::dskPercentNode.3 = INTEGER: 0
UCD-SNMP-MIB::dskPercentNode.4 = INTEGER: 0

こんなときには?

「env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg」を実行すると、「does not make sense」エラーが表示される

ERROR: Line 555 (<div id="sysdetails">) in CFG file (/etc/mrtg/mrtg.cfg)  does not make sense

mrtg.cfgファイルのhtml記述箇所で、タグの前にスペースが入っていますか? htmlタグの前には必ずスペースが必要となります。

Target[disk4]: .1.3.6.1.4.1.2021.9.1.9.4&.1.3.6.1.4.1.2021.9.1.9.4:public@localhost
MaxBytes[disk4]: 100
Unscaled[disk4]: dwmy
Options[disk4]: gauge,absolute,nopercent,noinfo
YLegend[disk4]: Disk Used(%)
ShortLegend[disk4]: (%)
LegendI[disk4]: /var Disk used
LegendO[disk4]: /var Disk Used
Legend1[disk4]: /var Disk used
Legend2[disk4]: /var Disk used
Title[disk4]: Disk Used /var
PageTop[disk4]: <h1>Disk Used /var</h1>
<div id="sysdetails"> <-- htmlを記述するときは必ずタグの頭にスペースが要ります!!
<table>
<tr>
<td>System:</td>
<td>webserver</td>
</tr>
<tr>
<td>Maintainer:</td>
<td>Root <root@localhost> </td>
</tr>
<tr>
<td>Capacity of disk</td>
<td>2.0GB</td>
</tr>
</table>
</div>
Related content
 

Powered by Plone CMS, the Open Source Content Management System

This site conforms to the following standards: