RRDRUBY(1)                           rrdtool                          RRDRUBY(1)

NAME
     rrdruby - About the RRD Ruby bindings

SYNOPSIS
      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")

DESCRIPTION
     The  rrdtool  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 rrdtool documentation for functions and valid arguments.

EXAMPLE
      $: << '/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 --ruby-site-install 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.

SEE ALSO
     rrdcreate, rrdupdate, rrdgraph, rrddump, rrdfetch, rrdtune, rrdlast,  rrdx‐
     port, rrdinfo

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

     Miles Egan <miles@caddr.com>

1.10.0                             2026-05-25                         RRDRUBY(1)
