ほっしーの技術ネタ備忘録

技術ネタの備忘録です。基本的に私が忘れないためのものです。他の人の役にも立つといいなぁ。

mrtg で rtt をグラフ化する

サーバのネットワークの安定性を見たくて、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回たたいて放置。