_R_R_D_R_U_B_Y(1)                           rrdtool                          _R_R_D_R_U_B_Y(1)

NNAAMMEE
     rrdruby - About the RRD Ruby bindings

SSYYNNOOPPSSIISS
      require "RRD"
      RRD.create(
         rrd,
         "--step", "300",
         "DS:a:GAUGE:600:U:U",
         "DS:b:GAUGE:600:U:U",
         "RRA:AVERAGE:0.5:1:300")

DDEESSCCRRIIPPTTIIOONN
     The  rrrrddttooooll  functions are directly callable via the Ruby programming lan‐
     guage. This wrapper implementation has been written from the scratch (with‐
     out  SWIG)

     The API simply expects string parameters to the functions.  Please refer to
     the other rrrrddttooooll documentation for functions and valid arguments.

EEXXAAMMPPLLEE
      $: << '/path/to/rrdtool/lib/ruby/1.8/i386-linux'
      require "RRD"

      name = "test"
      rrd = "#{name}.rrd"
      start = Time.now.to_i

      RRD.create(
         rrd,
         "--start", "#{start - 1}",
         "--step", "300",
             "DS:a:GAUGE:600:U:U",
         "DS:b:GAUGE:600:U:U",
         "RRA:AVERAGE:0.5:1:300")
      puts

      puts "updating #{rrd}"
      start.to_i.step(start.to_i + 300 * 300, 300) { |i|
         RRD.update(rrd, "#{i}:#{rand(100)}:#{Math.sin(i / 800) * 50 + 50}")
      }
      puts

      puts "fetching data from #{rrd}"
      (fstart, fend, data, step) = RRD.fetch(rrd, "--start", start.to_s, "--end",
           (start + 300 * 300).to_s, "AVERAGE")
      puts "got #{data.length} data points from #{fstart} to #{fend}"
      puts

      puts "generating graph #{name}.png"
      RRD.graph(
        "#{name}.png",
         "--title", " RubyRRD Demo",
         "--start", "#{start+3600}",
         "--end", "start + 1000 min",
         "--interlaced",
         "--imgformat", "PNG",
         "--width=450",
         "DEF:a=#{rrd}:a:AVERAGE",
         "DEF:b=#{rrd}:b:AVERAGE",
         "CDEF:line=TIME,2400,%,300,LT,a,UNKN,IF",
         "AREA:b#00b6e4:beta",
         "AREA:line#0022e9:alpha",
         "LINE3:line#ff0000")
      puts

     If you use the ----rruubbyy--ssiittee--iinnssttaallll configure option you  can  drop  the  $:
     line since the RRDtool module will be found automatically.

     If  RRDtool  runs  into trouble, it will throw an exception which you might
     want to catch.

SSEEEE AALLSSOO
     rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrdtune, rrdlast,  rrdx‐
     port, rrdinfo

AAUUTTHHOORR
     LoÃ¯s Lherbier <lois.lherbier@covadis.ch>

     Miles Egan <miles@caddr.com>

1.10.2                             2026-06-03                         _R_R_D_R_U_B_Y(1)
