So here it is. The external latency script and the mrtg.cfg fragment that you would add. This script is also a good example of how MRTG wants the output of its external programs.
You can check out the live graphs and see how my provider is doing.
mrtgping.pl...
#!/usr/local/bin/perl $ipaddr = "NULL"; $ipaddr = $ARGV[0]; $numpings = 5; $mrtgpinglog = ">> /usr/local/etc/mrtg/mrtgping.log"; if ($ipaddr eq "NULL"){ print "Usage mrtgping.pl [ipaddress]\n"; exit; } open(MRTGPINGLOG, $mrtgpinglog); $date = `date +%Y%m%d%H%M%S`; chop ($date); $result = `/sbin/ping -c $numpings -n -q $ipaddr | /usr/bin/tail -1`; chop($result); # Ping result will look like... # round-trip min/avg/max/stddev = 18.707/91.234/325.268/118.491 ms ($descp1,$descp2,$equal,$data) = split(/ /,$result); ($min,$avg,$max,$stddev) = split(/\//,$data); ($avgint,$avgdec) = split(/\./,$avg); ($stddevint,$stddevdec) = split(/\./,$stddev); print MRTGPINGLOG "$date: "; print MRTGPINGLOG "$avgint "; print MRTGPINGLOG "$stddevint "; print MRTGPINGLOG "0 "; print MRTGPINGLOG "$ipaddr\n"; print "$avgint\n"; print "$stddevint\n"; print "0\n"; print "$ipaddr\n";
mrtg.cfg snippet...
Target[sdsllat1]: `/usr/local/etc/mrtg/mrtgping.pl 209.152.183.1` MaxBytes[sdsllat1]: 1250000 Title[sdsllat1]: SDSL Latency # remember not to define "bits" globally or here as everything will be multiplied by 8... Options[sdsllat1]: gauge noinfo, nopercent YLegend[sdsllat1]: mS ShortLegend[sdsllat1]: mS LegendI[sdsllat1]: Avg.: LegendO[sdsllat1]: Stddev: Legend1[sdsllat1]: Average Round Trip Time in ms Legend2[sdsllat1]: StdDev Round Trip Time in ms