_R_R_D_R_U_B_Y(1)                           rrdtool                          _R_R_D_R_U_B_Y(1)

NNAAMMEE
     rrdruby - About the RRD Ruby bindings

SSYYNNOOPPSSIISS
      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")

DDEESSCCRRIIPPTTIIOONN
     The  rrrrddttooooll  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 rrrrddttooooll documentation for functions and valid arguments.

EEXXAAMMPPLLEE
      $: << '/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 ----rruubbyy--ssiittee--iinnssttaallll 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.

SSEEEE AALLSSOO
     rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrdtune, rrdlast,  rrdx‐
     port, rrdinfo

AAUUTTHHOORR
     LoÃ¯s Lherbier <lois.lherbier@covadis.ch>

     Miles Egan <miles@caddr.com>

1.10.0                             2026-05-23                         _R_R_D_R_U_B_Y(1)
