CentOS on X40:Net-SNMP+MRTGでサーバ監視

Vine3.2版はこちら
あります。

Net-SNMP+MRTGは昔からある定番サーバ監視ツールです。前にHotSaNIC+RRDToolでやっていたのです
が、いまいちうまく取得できていないようなのでこれを試してみようと思います。

参考サイトはこちら:
ネットワークトラ
フィック監視ツール導入(NET-SNMP+MRTG) – CentOSで自宅サーバー構築

KAJUKAJU.net:
Net-SNMP

KAJUKAJU.net: MRTG
MRTG
によるサーバ監視(SuSE編)

備忘録::Naka: MRTGでCPU温度とHDD温度もグラフ化



Net-SNMP+MRTGはNet-SNMPで取得した情報をMRTGでHTML出力してWeb上から見る
ため、今後他の解析ツール(Webalizer等)をまとめてみることができるようサーバ監視専用のユーザを作成しておきます。

#
adduser -s /sbin/nologin monitor
# passwd monitor
# chmod 711
/home/monitor

Net-SNMPは既に以前にインストール済みなので、設定だけ変更します。

ンストールされていない場合は、yum install net-snmpでできます。

# vi
/etc/snmp/snmpd.conf
【42行目あたり】
#com2sec notConfigUser default
public ※コメントアウト
com2sec local localhost private
com2sec
mynetwork 192.168.100.0/24 public
【51行目あたり】
#group
notConfigGroup v1c notConfigUser ※コメントアウト
#group
notConfigGroup v2c notConfigUser ※コメントアウト
group MyROGroup
v1 mynetwork
group MyROGroup v2c
mynetwork
group MyROGroup usm mynetwork
【65行目あたり】
#view
systemview included .1.3.6.1.2.1.1 ※コメントアウト
#view
systemview included .1.3.6.1.2.1.25.1.1 ※コメントアウト
view all
included .1 80
【72行目あたり】
#access
notConfigGroup “” any noauth exact systemview none
none ※コメントアウト
access MyROGroup “” any noauth exact
all none none
access MyROGroup “” any
noauth exact all all none
【324行目あたり】
disk /
10000 ※コメントを外す

snmpdサービスの起動

# service
snmpd start

snmpd動作確認

# snmpwalk -v 1
-c public 192.168.100.202 system
SNMPv2-MIB::sysDescr.0 = STRING:
Linux ホスト名 2.6.9-42.0.8.EL #1 Tue Jan 30 12:10:22 EST 2007 i686
SNMPv2-MIB::sysObjectID.0
= OID: NET-SNMP-MIB::netSnmpAgentOIDs.10
SNMPv2-MIB::sysUpTime.0 =
Timeticks: (9746) 0:01:37.46
SNMPv2-MIB::sysContact.0 = STRING: Root
(configure /etc/snmp/snmp.local.conf)
・・・といった文字がずらずらと出ればOK

MRTG
のインストール

# yum -y install mrtg

MRTG設定
ファイルの雛形を作成

# cfgmaker –ifref=descr –ifdesc=descr
public@192.168.100.202 > /etc/mrtg/mrtg.cfg
–base: Get Device
Info on public@192.168.100.202:
–base: Vendor Id:
–base:
Populating confcache
–snpo: confcache public@192.168.100.202: Descr
lo –> 1
–snpo: confcache public@192.168.100.202: Descr eth0
–> 2
・・・といった文字がずらずらと出ればOK

MRTG設定ファイルの編集

#
vi /etc/mrtg/mrtg.cfg
【9行目あたり】MRTG出力結果を格納するファイルの場所を指定
WorkDir:
/home/monitor/public_html
【18行目あたり】出力グラフの推移を左→右とする
Options[_]:
growright, noinfo
【20行目あたり】使用言語の指定(EUC-JP)
Language:eucjp


いて、監視対象となる部位ごとに設定していきます。あらかじめ設定されている部分はネットワークのみですが、同じファイルに追加でCPUやメモリ等も設定
していきます。

【52行目あたり】eth0(通常ネットワーク)トラフィックモニタ設定
Target[eth0]:
\eth0:public@192.168.100.202:
SetEnv[eth0]:
MRTG_INT_IP=”192.168.100.202″ MRTG_INT_DESCR=”eth0″
MaxBytes[eth0]:
125000000 ※X40の場合は1000BASEなので1,000,000,000/8=125,000,000と計算
Title[eth0]:
ネットワークトラフィック
PageTop[eth0]: <h1>ネットワークトラフィック(eth0)</h1>

これ以降、別インターフェイスに関する記述があった場合、すべて削除しておく(例えばsit0はIPv6の設定なのでいらない)

【58行
目以降追記】CPU使用率モニタ設定
### CPU Load Average ###
Target[cpu]:
.1.3.6.1.4.1.2021.10.1.5.1&.1.3.6.1.4.1.2021.10.1.5.2:public@192.168.100.202
MaxBytes[cpu]:
100
Unscaled[cpu]: dwmy
Options[cpu]: gauge, absolute, growright,
noinfo, nopercent
YLegend[cpu]: CPU Load(%)
ShortLegend[cpu]: (%)
LegendI[cpu]:
1分間平均
LegendO[cpu]: 5分間平均
Legend1[cpu]: 1分間平均(%)
Legend2[cpu]:
5分間平均(%)
Title[cpu]: CPU使用率
PageTop[cpu]:
<h1>CPU使用率</h1>

【71行目あたり追記】メモリ使用率モニタ設定
### Memory
Free ####
Target[mem]:
.1.3.6.1.4.1.2021.4.6.0&.1.3.6.1.4.1.2021.4.4.0:public@192.168.100.202
MaxBytes1[mem]:
506668 ※この値はfreeコマンドのmem値で取得
MaxBytes2[mem]:
1015800 ※この値はfreeコマンドのswap値で取得
Unscaled[mem]: dwmy
Options[mem]:
gauge, absolute, growright, 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]: 空き物理メモリ[MBytes]
Legend2[mem]:
空きスワップメモリ[MBytes]
Title[mem]: 空きメモリ量
PageTop[mem]:
<h1>空きメモリ量</h1>

【88行目あたり追記】HDD容量モニタ設定
### Disk
Used ####
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@192.168.100.202
MaxBytes[disk]:
100
Unscaled[disk]: dwmy
Options[disk]: gauge, absolute,
growright, 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]: ディスク使用率
PageTop[disk]:
<h1>ディスク使用率</h1>

ここまでで一度MRTGが動作するかどうかを試
します。以下のコマンドでmrtg.cfgで指定したWeb用ディレクトリに各モニタの結果を自動に書き込んでくれます。
通常、同じコマンドをエ
ラーがなくなるまで入力する必要があるのですが、1回で完了してしまいました。恐らくRRDToolの際に既に下準備が終わっていたかもしれません。

#
mrtg /etc/mrtg/mrtg.cfg

各種モニタの日間グラフを一括で表示するインデックスページを作成
します。

# indexmaker –columns=1 –addhead=”<meta
http-equiv=\”Content-Type\” content=\”text/html; charset=euc-jp\”>”
/etc/mrtg/mrtg.cfg > /home/monitor/public_html/index.htm

Apache
側の設定で外部からも接続できるようにmrtg.confを編集します。

# vi
/etc/httpd/conf.d/mrtg.conf
【11行目あたり追加】
Allow from all
【12行目あたり
コメントアウト】
#Allow from 127.0.0.1

Apacheの再起動

#
service httpd restart

これでhttp://ホスト名/~monitor/で各モニタ
を見ることができます。

次に、MRTGからHDDの温度を取得する項目も追加してみます。
できればCPU温度やチップセット温
度、電圧とかもモニタしたいのですが、今のところ検出に使用するlm-sensorsが対応していないので保留ということで。
HDDの情報得るに
はsmartmounttools(smartd)を使用します。smartdは既にインストールされていたので、インストール処理は割愛します。
smartd
の動作確認

# smartctl -a /dev/hda
smartctl version 5.33
[i686-redhat-linux-gnu] Copyright (C) 2002-4 Bruce Allen
Home page is
http://smartmontools.sourceforge.net/
=== START OF INFORMATION
SECTION ===
Device Model: HITACHI_DK13FA-40B
Serial Number:
28Z909
Firmware Version: 00MCA0B3
・・・こんな感じのものがずらずら並んで
194
Temperature_Celsius 0x0022 100 080 000 Old_age Always
– 35 (Lifetime Min/Max 13/50) ※この項目があればOK

smartd.conf
編集

# vi /etc/smartd.conf
/dev/hda -H -m root@ホスト名

smartctl
の温度を切り出すシェルスクリプトを作成

# vi /usr/local/bin/gethddtemp.sh
#/bin/sh

/usr/sbin/smartctl
-A /dev/hda | grep Temperature | awk ‘{print $10}’
/usr/sbin/smartctl
-A /dev/hda | grep Temperature | awk ‘{print
$10}’ ※MRTGのルールとして2つ値を要求するため、ダミーとして同じものをもう一つ追加しておく
echo
echo

ghddtemp.sh
に実行権限を付加

# chmod +x /usr/local/bin/gethddtemp.sh

mrtg.cfg
にHDD温度検出の項目を追加

# vi /etc/mrtg/mrtg.cfg
【102行目あたり追加】HDD
温度モニタ設定
### HDD Temperature ###
Target[hddtemp]:
`/usr/local/bin/gethddtemp.sh`
MaxBytes[hddtemp]:100
Unscaled[hddtemp]:dwmy
Options[hddtemp]:
gauge, growright, integer, noinfo, nopercent
YLegend[hddtemp]: HDD
Temperature(Celsius)
ShortLegend[hddtemp]: (Celsius)
LegendI[hddtemp]:
hda
LegendO[hddtemp]: none
Legend1[hddtemp]: hda(Celsius)
Legend2[hddtemp]:
none
Title[hddtemp]: HDD Temperature
PageTop[hddtemp]:
>h1<HDD温度>/h1<

MRTGの起動

# mrtg
/etc/mrtg/mrtg.cfg ※新規項目が追加されているのでエラーが無くなるまで繰り返す

インデックス
ページを再度作成

# indexmaker –columns=1 –addhead=”<meta
http-equiv=\”Content-Type\” content=\”text/html; charset=euc-jp\”>”
/etc/mrtg/mrtg.cfg > /home/monitor/public_html/index.htm


れでHDDの温度監視ができるようになるはずです。大体丸一日置いて傾向を確認してください。
新しいモニタリングの項目が増えた場合、かならず
MRTGの起動とindexmakerの作成を行う必要があります。

あー、CPUの監視もしたいな・・・lm-sensorsが対応する
まで無理っぽいけど。

【20071117追記】
上記の状態では、OSを再起動した後だと自動でsnmpとmrtgが動作せず、
logwatch監視をしているとエラーメールが続々と来てしまうので、OS起動時にsnmpとmrtgが自動で起動するよう設定しておきます。

snmp
の自動起動を有効

# chkconfig snmpd on

mrtgの自動起動スク
リプトを作成(※スクリプトの配置場所はrootのホーム)

# vi mrtg.sh

mrtg.sh
の内容

#!/bin/bash

LOCK=/var/lock/mrtg/mrtg_l
CONFCACHE=/var/lib/mrtg/mrtg.ok

export
LANG=ja_JP.eucJP
mrtg /etc/mrtg/mrtg.cfg –lock-file $LOCK
–confcache-file $CONFCACHE

mrtg.shに実行権限を付加

#
chmod 755 mrtg.sh

cronの編集

# vi
/etc/cron.d/mrtg

mrtgの内容

*/5 * * * * root
/root/mrtg.sh ※以前のmrtg関連の記述は削除

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

Google+ フォト

Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

%s と連携中