mrtgでサーバーへのpingの応答時間を記録する

監視対象のサーバーにpingを投げてその応答時間(ミリ秒)をMRTGで測定する時のメモ。このデータは瞬間値でルーターの負荷などローカル環境の状態にも依存してしまう事からあまり信頼性の高いデータとは言えませんので参考程度の記録しかできません。

# ping_ftp_server #
Target[ping_ftp_server]: ping -c 2 XXX.XXX.XXX.XXX | grep time= | sed -e "s/^.*time\=\([0-9]\+\).*$/\1/"
MaxBytes1[ping_ftp_server]: 500
MaxBytes2[ping_ftp_server]: 500
Unscaled[ping_ftp_server]: dwmy
Options[ping_ftp_server]: gauge,absolute,noinfo,nopercent,unknaszero
YLegend[ping_ftp_server]: ms
ShortLegend[ping_ftp_server]: ms
LegendI[ping_ftp_server]: ms
LegendO[ping_ftp_server]: ms
Legend1[ping_ftp_server]: ms
Legend2[ping_ftp_server]: ms
Title[ping_ftp_server]: ping to ftp server
PageTop[ping_ftp_server]: <h1>ping to ftp server</h1>

XXX.XXX.XXX.XXXの所に監視対象のサーバーのIPアドレスを入れます。ホスト名でも大丈夫です。MaxBytesは応答時間(ミリ秒)の上限値です。ここではだいたい100msで帰ってくるサーバーを想定してますので上限を500に設定しています。1000ぐらいに設定して自動スケールを入れてもいいかもしれません。

ちなみにこれ(Targetの所に指定したコマンド)がやっている事は次のような感じです。改造する場合の参考になればと思います。

  • pingを2回投げる
  • 帰ってきたデータのうちtime=を含む行をgrep
  • time=([0-9]+)をsedで抽出。(この時小数点以下は捨てられる)