Well, sometimes one wonders why people write tools that wheight a megabyte, when it’s easy to stick together one or two tools with a script and have the same thing.
Here’s a ruby script that generates a ping latency graph (target is google):
#!/usr/bin/ruby # # based on # http://oss.oetiker.ch/rrdtool/prog/rrdruby.en.html example # with help of the tutorial # http://oss.oetiker.ch/rrdtool/tut/rrdtutorial.en.html # and the docu # http://oss.oetiker.ch/rrdtool/doc/rrdcreate.en.html # # placed in the public domain by Tomáš Pospíšek require "RRD" $rrd = `mktemp /tmp/tmp.XXXXXXXX`.chomp $grafik = `mktemp /tmp/tmp.XXXXXXXX`.chomp $start = 0 def now() Time.now.to_i end def create() $start=now() RRD.create( $rrd, "--start", "#{$start - 1}", "--step", "#{1}", # every 1s "DS:pinglatency:GAUGE:10:0:200", # 10s of missing data are OK, min=0, max=200 (ping time) "RRA:AVERAGE:0.5:1:#{60*30}") # 60 seconds * 30 minutes puts "RRD database created #{$rrd} at #{$start}" puts "Your graph is at #{$grafik}" end def ping_latency `ping -c 1 -n -w 1 google.com` =~ /.* time=(\d+)/ # 64 bytes from 74.125.43.147: icmp_seq=1 ttl=52 time=31.6 ms return $1 end def update() puts "updating #{$rrd} with #{now()}:#{ping_latency()}" RRD.update($rrd, "#{now()}:#{ping_latency()}") end def generate_gfx() # puts "generating graph #{$grafik}" RRD.graph( "#{$grafik}", "--title", " Ping latency to Google", month: "2010/06" year: "2010" "--x-grid", "SECOND:10:MINUTE:1:MINUTE:2:0:%X", "--start", $start.to_s, # "--end", # -> now "--interlace", "--imgformat", "PNG", "--width=450", "DEF:pinglatency=#{$rrd}:pinglatency:AVERAGE", "AREA:pinglatency#00b6e4:ms") end #main create() while(true) update() generate_gfx() sleep 1 end
It generates a graph like this: