lib/riemann/tools.rb in riemann-tools-0.0.1 vs lib/riemann/tools.rb in riemann-tools-0.0.2
- old
+ new
@@ -1,4 +1,83 @@
module Riemann
module Tools
+ require 'rubygems'
+ require 'trollop'
+ require 'riemann/client'
+
+ 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 :interval, "Seconds between updates", :default => 5
+ end
+ end
+
+ def initialize
+ super
+ end
+
+ def tool_options
+ {}
+ end
+
+ # Returns parsed options (cached) from command line.
+ def options
+ @options ||= self.class.options
+ end
+ alias :opts :options
+
+ # Add a new command line option
+ def opt(*a)
+ @option_parser.opt *a
+ end
+
+ def report(event)
+ riemann << event
+ end
+
+ def riemann
+ @riemann ||= Riemann::Client.new(
+ :host => options[:host],
+ :port => options[:port]
+ )
+ end
+ alias :r :riemann
+
+ def run
+ t0 = Time.now
+ loop do
+ begin
+ tick
+ rescue => e
+ $stderr.puts "#{e.class} #{e}\n#{e.backtrace.join "\n"}"
+ end
+
+ # Sleep.
+ sleep(options[:interval] - ((Time.now - t0) % options[:interval]))
+ end
+ end
+
+ def tick
+ end
end
end