MRTGで玄箱を監視する

MRTGのWebによると

The Multi Router Traffic Grapher (MRTG)はネットワークの負荷を監視するツールです。MRTGは現在のネットワークのトラフィックの状態を示すグラフィックイメージを含むHTMLページを生成します。何ができるかについては http://www.stat.ee.ethz.ch/mrtg/をご覧下さい。 MRTGPerlとCで記述されており、UNIXWindows NTで動作します。MRTGはネット上の多くのサイトで使用されています。

というわけで玄箱MRTGを入れてみました。ネットワーク負荷だけでなく、他のツールと連携すればハードディスクの温度や使用量、CPUの負荷やメモリの空き状況などもグラフに表示してくれます。

mrtgのインストール

# apt-get install mrtg
MRTG 設定ファイルが MRTG を動作させているユーザ (大抵 'mrtg' または 'root') 以外のユーザから読み取れるようになっていた場合、このファ イルは SNMP のコミュニティ名を含んでいるので、セキュリティリスクになりえます。
特別な理由がない限り、このファイルを MRTG ユーザの所有にし、このユーザのみが読み取れるようにするのをお勧めします。
/etc/mrtg.conf を MRTG ユーザの所有にして、このユーザだけが読み取れるようにしますか?
 <はい>                                          <いいえ> 

ここでは <はい>を選択して進めます。

CPUやメモリの状態を監視するためにsnmpをインストール

# apt-get install snmp snmpd

/etc/snmp/snmpd.confの編集

com2sec local     localhost       private
com2sec mynetwork 192.168.0.0/24  public

group MyROGroup v1 mynetwork
group MyROGroup v2c mynetwork
group MyROGroup usm mynetwork
group MyRWGroup v1 local
group MyRWGroup v2c local
group MyRWGroup usm local

view all    included  .1                               80

access MyROGroup ""      any       noauth    exact  all    none   none
access MyRWGroup ""      any       noauth    exact  all    all    none

/etc/mrtg.cfgの編集

WorkDir: /mnt/www/mrtg

#CPUの負荷
Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:private@localhost
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
Options[cpu]: gauge,absolute,nopercent,noinfo
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]: 1min
LegendO[cpu]: 5min
Legend1[cpu]: 1min(%)
Legend2[cpu]: 5min(%)
Title[cpu]: CPU Activity Ratio
PageTop[cpu]: <H1>CPU Activity Ratio</H1>

#空きメモリ
Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:private@localhost
# Maximum Memory
MaxBytes1[mem]: 127088
# Maximum Swap
MaxBytes2[mem]: 781312
Unscaled[mem]: dwmy
Options[mem]: gauge,absolute,noinfo
YLegend[mem]: Mem Free(Bytes)
ShortLegend[mem]: Bytes
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
LegendI[mem]: Real
LegendO[mem]: Swap
Legend1[mem]: Availability Memory[MBytes]
Legend2[mem]: Availability Swap[MBytes]
Title[mem]: Memory Free
PageTop[mem]: <H1>Free Memory</H1>

#ネットワーク負荷
Target[network]: 1:public@192.168.0.101:
SetEnv[network]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"
MaxBytes[network]: 1250000
Title[network]: Traffic Analysis -- debikuro
PageTop[network]: <H1>Traffic Analysis -- debikuro</H1>

#ハードディスク温度
Target[hddtemp]: `/usr/sbin/hddtemp /dev/hda | awk '{print $3}'`
MaxBytes[hddtemp]: 100
Title[hddtemp]: HDD Temperature
PageTop[hddtemp]: <h1>HDD Temperature</h1>
Options[hddtemp]: absolute,gauge,nopercent,noinfo
WithPeak[hddtemp]: ymw
YLegend[hddtemp]: Temperature
ShortLegend[hddtemp]: C
LegendI[hddtemp]: Temp:
LegendO[hddtemp]:
Legend1[hddtemp]: HDD Temperature in Degrees Celcius
Legend2[hddtemp]:

#/mntの使用量
Target[hda3]: `/bin/df /dev/hda3 | /bin/grep hda3 |/usr/bin/awk '{print $5}' | /usr/bin/awk -F% '{print $1}'`
MaxBytes[hda3]: 100
Title[hda3]: HDD(hda3) Remaining Amount
PageTop[hda3]: <h1>HDD(hda3) Remaining Amount</h1>
Options[hda3]: absolute,gauge,noo,noinfo
WithPeak[hda3]: ymw
YLegend[hda3]: %
ShortLegend[hda3]: %
LegendI[hda3]: Use
LegendO[hda3]:
Legend1[hda3]: Use
Legend2[hda3]:

最後にIndex.htmlを作る

# indexmaker --columns=1 --addhead="<META HTTP-EQUIV=?"Content-Type?" CONTENT=?"text/html; charset=euc-jp?">" /etc/mrtg.cfg > /mnt/www/mrtg/index.html

設定はまだ見直さないといけないけど、なんとか動いているようです。