module Riemann::Tools

Public Class Methods

included(base) click to toggle source
# File lib/riemann/tools.rb, line 6
def self.included(base)
  base.instance_eval do
    def run
      new.run
    end

    def opt(*a)
      a.unshift :opt
      @opts ||= []
      @opts << a
    end

    def options
      p = Trollop::Parser.new
      @opts.each do |o|
        p.send *o
      end
      Trollop::with_standard_exception_handling(p) do
        p.parse ARGV
      end
    end

    opt :host, "Riemann host", :default => '127.0.0.1'
    opt :port, "Riemann port", :default => 5555
    opt :event_host, "Event hostname", :type => String
    opt :interval, "Seconds between updates", :default => 5
    opt :tag, "Tag to add to events", :type => String, :multi => true
    opt :ttl, "TTL for events", :type => Integer
    opt :attribute, "Attribute to add to the event", :type => String, :multi => true
    opt :timeout, "Timeout (in seconds) when waiting for acknowledgements", :default => 30
    opt :tcp, "Use TCP transport instead of UDP (improves reliability, slight overhead.", :default => true
  end
end

Public Instance Methods

attributes() click to toggle source
# File lib/riemann/tools.rb, line 46
def attributes
  @attributes ||= Hash[options[:attribute].map do |attr|
    k,v = attr.split(/=/)
    if k and v
      [k,v]
    end
  end]
end
new_riemann_client() click to toggle source
# File lib/riemann/tools.rb, line 72
def new_riemann_client
  r = Riemann::Client.new(
    :host    => options[:host],
    :port    => options[:port],
    :timeout => options[:timeout]
  )
  if options[:tcp]
    r.tcp
  else
    r
  end
end
opt(*a) click to toggle source
# File lib/riemann/tools.rb, line 12
def opt(*a)
  a.unshift :opt
  @opts ||= []
  @opts << a
end
options() click to toggle source
# File lib/riemann/tools.rb, line 18
def options
  p = Trollop::Parser.new
  @opts.each do |o|
    p.send *o
  end
  Trollop::with_standard_exception_handling(p) do
    p.parse ARGV
  end
end
Also aliased as: opts
opts()
Alias for: options
r()
Alias for: riemann
report(event) click to toggle source
# File lib/riemann/tools.rb, line 55
def report(event)
  if options[:tag]
    # Work around a bug with beefcake which can't take frozen strings.
    event[:tags] = options[:tag].map(&:dup)
  end

  event[:ttl] ||= (options[:ttl] || (options[:interval] * 2))

  if options[:event_host]
    event[:host] = options[:event_host].dup
  end
  
  event = event.merge(attributes)

  riemann << event
end
riemann() click to toggle source
# File lib/riemann/tools.rb, line 85
def riemann
  @riemann ||= new_riemann_client
end
Also aliased as: r
run() click to toggle source
# File lib/riemann/tools.rb, line 8
def run
  new.run
end
tick() click to toggle source
# File lib/riemann/tools.rb, line 104
def tick
end