ステップ1-監視サーバーをセットアップする

他のすべてのサーバーへの接続に使用されるCentOS6.3×64ドロップレットを起動します。

この例では、この監視サーバーのIPは198.211.117.251です。 今後のすべての構成スニペットはこのIPを参照するため、必ず独自の値に変更してください。

ステップ2-監視対象のホストにパッケージをインストールする

yum -y install net-snmp && chkconfig snmpd on && :> /etc/snmp/snmpd.conf

次の行を/etc/snmp/snmpd.confに追加します。

com2sec mynetwork 198.211.117.251   DigitalOcean
group MyROGroup v1      mynetwork
view all   included .1  80
access MyROGroup ""      any       noauth    exact all    none  none

私たちのクライアントサーバーはcloudmail.tk(198.211.107.218)とemailocean.tk(198.211.112.99)です。

サーバーにファイアウォールルールがある場合は、監視ドロップレットからポート161へのUDP接続を許可し、他のすべてのユーザーをドロップしてください。

iptables -I INPUT -s 198.211.117.251 -p udp --dport 161 -j ACCEPT
iptables -A INPUT -s 0/0 -p udp --dport 161 -j DROP

これで、監視するすべてのサーバーでSNMPデーモンを起動できます。

service snmpd start

ステップ3-監視サーバーを構成する

yum -y install net-snmp-utils rrdtool httpd && chkconfig httpd on

クライアントごとにRRDデータベースファイルを作成します。 これを実行する必要があるのは1回だけです。

rrdtool create /root/cloudmail.tk.rrd -s 60 DS:in:COUNTER:300:U:U DS:out:COUNTER:300:U:U RRA:AVERAGE:0.5:1:10080
rrdtool create /root/emailocean.tk.rrd -s 60 DS:in:COUNTER:300:U:U DS:out:COUNTER:300:U:U RRA:AVERAGE:0.5:1:10080

グラフを更新するスクリプトを作成します。 最初のコマンドセットはデータファイルを作成および更新し、2番目のコマンドセットはこのデータをPNGファイルにプロットし、ApacheのDocumentRootパスに保存します。

このファイルを/root/rrdupdate.shおよびとして保存します。これはすべて単一行であり、複数に分割されているため、’\’の後にスペースがないことを確認してください。

#!/bin/bash
rrdupdate /root/cloudmail.tk.rrd N:`snmpget -v 1 -c DigitalOcean -Oqv 198.211.107.218 \
IF-MIB::ifInOctets.1`:`snmpget -v 1 -c DigitalOcean -Oqv 198.211.107.218 IF-MIB::ifOutOctets.1`

rrdtool graph /var/www/html/cloudmail.tk.png \
-a PNG -h 125 -s -43200 --title "cloudmail.tk (198.211.107.218)" \
-v "Data Throughput" \
'DEF:in=/root/cloudmail.tk.rrd:in:AVERAGE' \
'DEF:out=/root/cloudmail.tk.rrd:out:AVERAGE' \
'CDEF:kbin=in,1024,/' \
'CDEF:kbout=out,1024,/' \
'AREA:in#00FF00:Bandwidth In' \
'LINE1:out#0000FF:Bandwidth Out\j' \
'GPRINT:kbin:LAST:Last Bandwidth In\:    %3.2lf KBps' \
'GPRINT:kbout:LAST:Last Bandwidth Out\:   %3.2lf KBps\j' \
'GPRINT:kbin:AVERAGE:Average Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:AVERAGE:Average Bandwidth Out\:%3.2lf KBps\j'

rrdupdate /root/emailocean.tk.rrd N:`snmpget -v 1 -c DigitalOcean -Oqv 198.211.112.99 \
IF-MIB::ifInOctets.1`:`snmpget -v 1 -c DigitalOcean -Oqv 198.211.112.99 IF-MIB::ifOutOctets.1`

rrdtool graph /var/www/html/emailocean.tk.png \
-a PNG -h 125 -s -43200 --title "emailocean.tk (198.211.112.99)" \
-v "Data Throughput" \
'DEF:in=/root/emailocean.tk.rrd:in:AVERAGE' \
'DEF:out=/root/emailocean.tk.rrd:out:AVERAGE' \
'CDEF:kbin=in,1024,/' \
'CDEF:kbout=out,1024,/' \
'AREA:in#00FF00:Bandwidth In' \
'LINE1:out#0000FF:Bandwidth Out\j' \
'GPRINT:kbin:LAST:Last Bandwidth In\:    %3.2lf KBps' \
'GPRINT:kbout:LAST:Last Bandwidth Out\:   %3.2lf KBps\j' \
'GPRINT:kbin:AVERAGE:Average Bandwidth In\: %3.2lf KBps' \
'GPRINT:kbout:AVERAGE:Average Bandwidth Out\:%3.2lf KBps\j'

スクリプトを実行して、エラーがなく、グラフが生成されることを確認します。

bash /root/rrdupdate.sh
ls -lah /var/www/html/*.png

ここで、5分ごとにグラフを更新するcrontabエントリを追加し、Apacheを起動します。

echo "*/5 * * * * bash /root/rrdupdate.sh" > /var/spool/cron/root
service httpd start

これらのグラフを自分のWebサイトに含めるか、新しい/var/www/html/index.htmlを追加できます。

データが数時間入力されるのを待って、監視ドロップレットのIPアドレスに移動します。

そして、あなたはすべて完了です!

BulatKhamitov著