RRDRUBY(1)                          rrdtool                         RRDRUBY(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
       language. This wrapper implementation has been written from the scratch
       (without  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,
       rrdxport, rrdinfo

AAUUTTHHOORR
       Loies Lherbier <lois.lherbier@covadis.ch>

       Miles Egan <miles@caddr.com>



1.9.0                             2024-07-29                        RRDRUBY(1)
