SNMP+MRTG 再設定

MRTGを設定したはいいんですが、CPU使用率、トラフィック、HDD温度の3つを記録してるはずなのに・・・

というわけの分からない事態に・・・


MRTGの動作ログを見てみる限りでは、SNMPのレスポンスがないとか云々。


・・・ここからが地獄の再設定でした_| ̄|○


とりあえず、非常に汚いログになってしまったので、うまくいった方法だけを抜粋。


まずは何はともあれ、SNMPの消去。
設定ファイルなども全くない、クリーンな状態を復元。

# apt-get --purge remove snmpd snmp

次に、SNMPソースコードから全部新規にインストール。
というわけで、必要パッケージは

  • zlib
  • libpng
  • GD

を順に入れた上で(依存関係上)、

とインストールします。


流石にzlibぐらい入ってるだろうと思ったら、結果だけをいうなら入ってなかったという始末・・・
わけわかんねぇよ_| ̄|○

zlib Home Site - zlib-1.2.3

# tar zxvf zlib-1.2.3.tar.gz # cd zlib-1.2.3 # ./configure # make # make install

続いてlibpngのインストール

libpng Home Page - libpng-1.2.15.tar.gz

# tar zxvf libpng-1.2.15.tar.gz # cd libpng-1.2.15 # ./configure # make # make install

更に、GDのインストール

Main Page - LibGD(GD Graphics Library) - gd-2.0.33.tar.gz

# tar zxvf gd-2.0.33.tar.gz # cd gd-2.0.33 # ./configure # make # make install


これだけやって、やっとSNMPのインストールに入れます・・・
道のりが長すぎる・・・(;´Д`)
SNMPの最新版は Net-SNMP と呼ばれるやつですが、どうもウチの環境ではうまくインストールされないようで、一昔前のバージョンの、 ucd-snmp というやつを入れました。

Net-SNMP - ucd-snmp-4.2.7.tar.gz

# tar zxvf ucd-snmp-4.2.7.tar.gz # cd ucd-snmp-4.2.7 # ./configure # make # make install

これがまたconfigureからmakeから、とんでもなく時間がかかったわけで。。。_| ̄|○
とりあえず何とかインストール完了したので、あとは最期にMRTGのインストール。

MRTG - Tobi Oetiker's MRTG - The Multi Router Traffic Grapher - mrtg-2.15.0.tar.gz

# tar zxvf mrtg-2.15.0.tar.gz # cd mrtg-2.15.0 # ./configure # make # make install

全体としても、作業は単純、落として解凍してコンフィグしてコンパイルしてインストールするだけ。
ただ、とてつもなく時間はかかりました_| ̄|○


で、あとは、SNMPMRTGの設定。
SNMPアーカイブの中から EXAMPLE.conf をコピーし、snmpd.confとリネームして設定します。
/usr/local/sbin/snmpd  (←snmpdデーモン本体)
/usr/local/share/snmpd.conf  (←設定ファイル、EXAMPLE.confをここにコピーする)
.confファイルは中を読めば大体分かると思うんで、ある程度省略。
とりあえず、ウチの設定は

#       sec.name  source          community
com2sec local localhost KURO-BOX


#             	sec.model  sec.name
group localgroup	v1         local
group localgroup	v2c        local
group localgroup	usm        local


#           incl/excl subtree                          mask
view all    included  .1                               80


#                context sec.model sec.level match  read   write  notif
access localgroup ""      any       noauth    exact  all    none   none
access localgroup ""      any       noauth    exact  all    all    none


disk / 10000
disk /mnt 10000

とりあえず最低限にこれだけ。
これがセキュリティ上いいのか悪いのかはもうあまりこだわってません(;´Д`)
というか、これ以上こんがらがらせるのがしんどいです_| ̄|○


で、あとはこれを起動に登録。

#!/bin/sh
# ucp-snmp

RunningPids=`/bin/ps -e | /usr/bin/awk '$4~/^snmpd/ {print $1}'`
OPTIONS="-Lsd -Lf /var/log/snmpd.log -p /usr/local/sbin/snmpd -a"

case "$1" in
'start')
    echo "Starting the snmpd daemon."
    /usr/local/sbin/snmpd
        ;;
'stop')
    echo "Stopping snmpd daemon."
    kill $RunningPids
        ;;
  *)
        echo "Usage: sh $0 { start | stop }"
        ;;
esac
exit 0

私の環境の場合、webminからやったんでどこに入ったか詳しく知りませんが、恐らく
/etc/rc5.d/
あたりに入ってるはずです。
これで、

# /etc/init.d/snmpd start
# /etc/init.d/snmpd stop

で、それぞれ起動と停止をすることが出来るようになりました。
そして動作チェック。

# snmpwalk -v 1 localhost KURO-BOX system

下にずらずらーっと大量の情報が出てこれば成功。


そしてようやく本当に最後の設定項目、MRTGのcfgファイルの設定。
/usr/local/mrtg-2/bin/mrtg  (←MRTG本体)
/usr/local/mrtg-2/bin/cfgmaker  (←.cfgファイルを作ってくれる)
/usr/local/mrtg-2/bin/indexmaker  (←indexページを作ってくれる)

# /usr/local/mrtg-2/bin/cfgmaker --output="./mrtg.cfg" KURO-BOX@localhost

とやって、最初のcfgファイルの生成。
KURO-BOX@localhost のところは、snmpd.confの環境次第で変わるので、
コミュニティ名@ホスト名 となるように設定します。
で、できた mrtg.cfg のファイルを編集。
最終的にウチの環境で作れたファイルは以下のとおり。

### Global Config Options
#  for UNIX
# WorkDir: /home/http/mrtg
WorkDir: /usr/local/apache/htdocs/mrtg

### Global Defaults
#  to get bits instead of bytes and graphs growing to the right
# Options[_]: growright, bits
Options[_]:growright, bits

Interval: 5
Refresh: 300
WriteExpires: Yes
EnableIPv6: no
Language: eucjp

######################################################################
# System: KURO-BOX
# Description: Linux KURO-BOX 2.4.17_mvl21 #24 2004年 10月 19日 火曜日 17:17:03 JST ppc
# Contact: Me <me@somewhere.org>
# Location: Right here, right now.
######################################################################

#-----------------------------------------------------------------
# トラフィック状況
#-----------------------------------------------------------------

Target[traffic]: 2:KURO-BOX@localhost
Directory[traffic]: traffic
SetEnv[traffic]: MRTG_INT_IP="192.168.1.150" MRTG_INT_DESCR="eth0"
MaxBytes[traffic]: 1250000
Title[traffic]: Traffic Analysis for eth0 -- KURO-BOX
PageTop[traffic]: <h1>Traffic Analysis for eth0 -- KURO-BOX</h1>
#<div id="sysdetails">
	<table>
		<tr><td>System:</td><td>KURO-BOX in Right here, right now.</td></tr>
		<tr><td>Maintainer:</td><td>webmaster@localhost</td></tr>
		<tr><td>Description:</td><td>eth0  </td></tr>
		<tr><td>ifType:</td><td>ethernetCsmacd (6)</td></tr>
		<tr><td>ifName:</td><td></td></tr>
		<tr><td>Max Speed:</td><td>1250.0 kBytes/s</td></tr>
		<tr><td>Ip:</td><td>192.168.1.150 (KURO-BOX)</td></tr>
	</table>
#</div>

#-----------------------------------------------------------------
# CPUのロードアベレージ
#-----------------------------------------------------------------
Options[_]: gauge,absolute,growright,nopercent

Target[cpu]: .1.3.6.1.4.1.2021.10.1.5.2&.1.3.6.1.4.1.2021.10.1.5.3:KURO-BOX@localhost
Directory[cpu]: cpu
MaxBytes[cpu]: 100
Unscaled[cpu]: dwmy
WithPeak[cpu]: mw
YLegend[cpu]: CPU Load (%)
ShortLegend[cpu]: %
LegendI[cpu]: 5分平均
LegendO[cpu]: 15分平均
Legend1[cpu]: 負荷 5分平均 (%)
Legend2[cpu]: 負荷 15分平均 (%)
Title[cpu]: CPU使用率
PageTop[cpu]: <H1>CPU使用率</H1>

#-----------------------------------------------------------------
# メモリ空き容量
#-----------------------------------------------------------------
Options[mem]: gauge,absolute,growright

Target[mem]: .1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:KURO-BOX@localhost
Directory[mem]: mem
# 実メモリの最大容量
MaxBytes1[mem]: 127088
# スワップメモリの最大容量
MaxBytes2[mem]: 257032
kilo[mem]: 1024
kMG[mem]: k,M,G,T,P
YLegend[mem]: Mem Free (MB)
ShortLegend[mem]: Bytes
LegendI[mem]: 物理空き
LegendO[mem]: スワップ空き
Legend1[mem]: 空き物理メモリ(MBytes)
Legend2[mem]: 空きスワップメモリ(MBytes)
Title[mem]: メモリ空き容量
PageTop[mem]: <H1>メモリ空き容量</H1>

#-----------------------------------------------------------------
# ハードディスク温度
#-----------------------------------------------------------------
Options[hddtemp]: growright,absolute,gauge,nopercent,noinfo

Target[hddtemp]: `/usr/sbin/hddtemp -n /dev/hda`
Directory[hddtemp]: hddtemp
MaxBytes[hddtemp]: 100
WithPeak[hddtemp]: ymw
YLegend[hddtemp]: Temperature
ShortLegend[hddtemp]: C
LegendI[hddtemp]: 温度
LegendO[hddtemp]:
Legend1[hddtemp]: 温度 (℃)
Legend2[hddtemp]:
Title[hddtemp]: KURO-BOX : ハードディスク温度
PageTop[hddtemp]: <h1>ハードディスク温度 for KURO-BOX</h1>


#-----------------------------------------------------------------
# ディスク使用量
#-----------------------------------------------------------------
Options[disk1]: gauge,absolute,growright

# ディスク使用量
Target[disk1]: .1.3.6.1.4.1.2021.9.1.8.1&.1.3.6.1.4.1.2021.9.1.8.2:KURO-BOX@localhost
Directory[disk1]: disk1
# hda1の最大容量
MaxBytes1[disk1]: 2063504
# hda3の最大容量
MaxBytes2[disk1]: 155992804
kilo[disk1]: 1024
kMG[disk1]: k,M,G,T,P
YLegend[disk1]: Disk Usage (MB)
ShortLegend[disk1]: Bytes
LegendI[disk1]: hda1
LegendO[disk1]: hda3
Legend1[disk1]: hda1 使用量 (MB)
Legend2[disk1]: hda3 使用量 (MB)
Title[disk1]: ディスク使用量
PageTop[disk1]: <H1>ディスク使用量</H1>

#-----------------------------------------------------------------
# ディスク使用率
#-----------------------------------------------------------------
Options[disk2]: gauge,absolute,growright

# ディスク使用率
Target[disk2]: .1.3.6.1.4.1.2021.9.1.9.1&.1.3.6.1.4.1.2021.9.1.9.2:KURO-BOX@localhost
Directory[disk2]: disk2
MaxBytes[disk2]: 100
Unscaled[disk2]: dwmy
YLegend[disk2]: Disk Usage (%)
ShortLegend[disk2]: %
LegendI[disk2]: hda1
LegendO[disk2]: hda3
Legend1[disk2]: hda1 使用率 (%)
Legend2[disk2]: hda3 使用率 (%)
Title[disk2]: ディスク使用率
PageTop[disk2]: <H1>ディスク使用率</H1>

そして動作チェック。

# /usr/local/mrtg-2/bin/mrtg ./mrtg.cfg

初回はログファイルが無いなどといったエラーが出てくるので、3回ほど繰り返せば、エラーは消えます。
ただ、ウチの設定上、HDDの温度を取る分での指定と、メモリ空き容量の指定の箇所が若干だけエラーを吐いてます。
後日でもまた修正してみます。
今はちゃんと動いてるのでもう放置で。


そしてインデックスページを作って完成。

# /usr/local/mrtg-2/bin/indexmaker --columns=1 ./mrtg.cfg > ./index.html

最後に、自動登録をして終了。

# crontab -e

0,5,10,15,20,25,30,35,40,45,50,55 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/apache/htdocs/mrtg/mrtg.cfg


これだけの道のりを経て、やっとこさ監視環境が完成とのことで。。。
ほんと、一体何日潰れただろ・・・・・・_| ̄|○