サーバのネットワークの安定性を見たくて、RTT (round-trip time) を
MRTG でグラフ化してみました。
1.ping 結果をロギングする
こんなスクリプトを作って...
#!/bin/sh ping -c 290 8.8.8.8 > /tmp/ping/$$.log /bin/mv /tmp/ping/$$.log /tmp/ping/last.log
5分おきに起動するように cron に登録。
*/5 * * * * root /root/bin/ping.sh
/tmp/ping を作るのを忘れずに。
# mkdir /tmp/ping
2.bsnmpd で取得できるようにする
こんなスクリプトたちを作って...
#!/bin/sh awk -F '[ /]' '$1=="round-trip"{print $8*1000}' /tmp/ping/last.log
#!/bin/sh awk -F '[ /]' '$1=="round-trip"{print $9*1000}' /tmp/ping/last.log
/etc/snmpd.config に追記。
extNames.0 = "ping_avr" extCommand.0 = "/root/bin/ping_avr.sh" extNames.1 = "ping_max" extCommand.1 = "/root/bin/ping_max.sh"
bsnmpwalk で取得してみる。
$ bsnmpwalk -s READ@localhost .1.3.6.1.4.1.2021.8.1.101 1.3.6.1.4.1.2021.8.1.101.0 = 22906 1.3.6.1.4.1.2021.8.1.101.1 = 798968
1000倍して us 単位にしてるのは、MRTG が小数点以下を扱えないので。
3.MRTG でグラフ化する
設定ファイルに追記。
# ICMP RTT Target[ping_rtt]: .1.3.6.1.4.1.2021.8.1.101.0&.1.3.6.1.4.1.2021.8.1.101.1:read@localhost MaxBytes[ping_rtt]: 1000000 WithPeak[ping_rtt]: dwmy YLegend[ping_rtt]: RTT (s) LegendI[ping_rtt]: Average LegendO[ping_rtt]: Maximal Legend1[ping_rtt]: ICMP RTT Average Legend2[ping_rtt]: Maximal ICMP RTT Legend3[ping_rtt]: Peak ICMP RTT Average Legend4[ping_rtt]: Peak ICMP RTT Title[ping_rtt]: ICMP RTT Analysis Options[ping_rtt]: nopercent, noinfo, gauge, absolute, withzeroes, unknaszero kMG[ping_rtt]: u,m,,k ShortLegend[ping_rtt]: sec
あとは、mrtg コマンドを3回たたいて放置。