2010年8月18日水曜日

ローカルネットワーク内のサーバ状況を外部のサーバでMRTG監視する

どうも、俺@連投です。

監視サーバから直接接続できないローカルサーバの状況をMRTGで監視したい場合、ありますよね。
その場合の対処方法についてメモです。

イメージ的には
【監視サーバ】→→インターネット→→【システムWEBサーバ(192.168.0.1)】→→ローカル→→【システムDBサーバ(192.168.0.2)】
のような感じの場合です。
今回は例としてローカル内のDBサーバのロードアベレージを取得するとします。

まずDBサーバから定期的にLoadavg情報をWEBサーバへ転送するようにします。
【DBサーバ】192.168.0.2
# vim catch_loadavg.sh
-----------------------
awk '{ print $1"\n"$2 }' /proc/loadavg > db_loadavg # loadavg情報取得
rsync /path/to/db_loadavg 192.168.0.1::module_name/path/to/savedir # rsyncでWEBサーバへ転送
これをcronにて5分毎に実行させます。

# crontab -e
*/5 * * * * /path/to/catch_loadavg.sh
これでDB側は準備完了です。
おそらくdb_loadavgというファイルには
0.24
0.18
のように、1行目は1分平均、2行目が5分平均のロードアベレージデータがあるはずです。

次はWEBサーバ側です。
まずrsyncの設定を
# vim /etc/xinetd.d/rsync
-------------------------------
# default: off
# description: The rsync server is a good addition to an ftp server, as it \
# allows crc checksumming etc.

service rsync
{
disable = no
socket_type = stream
wait = no
user = root
server = /usr/bin/rsync
server_args = --daemon
log_on_failure += USERID
}


# vim /etc/rsyncd.conf
--------------------------
hosts allow = 192.168.0.0/24
use chroot = false
read only = false
[module_name]
uid = root
gid = root
path = /
comment = some comment
こんな感じでしょう。xinetdを再起動します。
# service xinetd restart
これで、DBサーバからロードアベレージデータファイルをrsyncにて受け取れるようになりました。

次にsnmpdの設定です。
まずはDBサーバのロードアベレージを表示するプログラムを作成します。1分平均のものと5分平均のもの2つ用意します。
# vim /etc/snmp/db_loadavg_1avg.sh // pathは適当です
-------------------------------
#!/bin/sh

cd /etc/snmp
cat /path/to/db_loadavg | awk 'NR==1 { print $1*100 }'

# vim /etc/snmp/db_loadavg_5avg.sh
-------------------------------
#!/bin/sh

cd /etc/snmp
cat /path/to/db_loadavg | awk 'NR==2 { print $1*100 }'
これで2つ出来ました。

次はsnmpd.confの設定です。
# vim snmpd.conf
---------------------------
# 以下を追加
exec db_loadavg_1avg /etc/snmp/db_loadavg_1avg.sh
exec db_loadavg_5avg /etc/snmp/db_loadavg_5avg.sh
でsnmpdを再起動します。
# service snmpd restart
これでとりあえずWEB側の設定も完了です。


では監視サーバからデータが取得できるかどうか確認です。
監視サーバ側から
# snmpwalk -v 1 -c community_name webserver_host .1.3.6.1.4.1.2021.8.1.100.1
# snmpwalk -v 1 -c community_name webserver_host .1.3.6.1.4.1.2021.8.1.100.2
これでデータが取得できればOKです。

監視サーバのMRTGの設定ファイルに
# vim /usr/local/mrtg-2/conf/foo.cfg
-----------------------------------------------
Target[webserver_host_db_load]: .1.3.6.1.4.1.2021.8.1.101.1&.1.3.6.1.4.1.2021.8.1.101.2:community_name@webserver_host:
MaxBytes[webserver_host_db_load]: 10000
Options[webserver_host_db_load]: gauge, absolute
YLegend[webserver_host_db_load]: DB/LoadAvg
ShortLegend[webserver_host_db_load]: %
Legend1[webserver_host_db_load]: 1min CPU load avg
Legend2[webserver_host_db_load]: 5min CPU load avg
LegendI[webserver_host_db_load]: 1min CPU load avg
LegendO[webserver_host_db_load]: 5min CPU load avg
KMG[webserver_host_db_load]: %
Title[webserver_host_db_load]: DB/Load Average
と、まぁこんな感じで、、

あとはグラフが出てくれるのを気長に待つべし。

以上でぇぇぇす。

0 件のコメント:

amazon