summaryrefslogtreecommitdiff
path: root/lib/custodian
diff options
context:
space:
mode:
Diffstat (limited to 'lib/custodian')
-rw-r--r--lib/custodian/alerts.rb1
-rw-r--r--lib/custodian/alerts/graphite.rb70
2 files changed, 71 insertions, 0 deletions
diff --git a/lib/custodian/alerts.rb b/lib/custodian/alerts.rb
index 1f90fe2..d22419b 100644
--- a/lib/custodian/alerts.rb
+++ b/lib/custodian/alerts.rb
@@ -15,6 +15,7 @@ require 'custodian/alertfactory'
# The individual alert-types.
#
require 'custodian/alerts/file'
+require 'custodian/alerts/graphite'
require 'custodian/alerts/mauve'
require 'custodian/alerts/redis-state'
require 'custodian/alerts/smtp'
diff --git a/lib/custodian/alerts/graphite.rb b/lib/custodian/alerts/graphite.rb
new file mode 100644
index 0000000..857c872
--- /dev/null
+++ b/lib/custodian/alerts/graphite.rb
@@ -0,0 +1,70 @@
+#
+# The graphite-alerter.
+#
+# This only exists to record timing durations in the local graphite/carbon
+# instance.
+#
+module Custodian
+
+ module Alerter
+
+ class GraphiteAlert < AlertFactory
+
+ #
+ # The test this alerter cares about
+ #
+ attr_reader :test
+
+
+ #
+ # Constructor - save the test-object away.
+ #
+ def initialize( obj )
+ @test = obj
+ end
+
+
+
+ #
+ # NOP.
+ #
+ def raise
+ end
+
+
+
+ #
+ # NOP.
+ #
+ def clear
+ end
+
+
+
+ #
+ # Send the test test-duration to graphite/carbon
+ #
+ def duration( ms )
+
+ #
+ # hostname + test-type
+ #
+ host = @test.target
+ test = @test.get_type
+
+ #
+ # The key we'll send
+ #
+ str = "#{host}-#{test}"
+ str.gsub!(/\\\./, "-")
+ str = "monitor.#{str}"
+
+ system( "/bin/echo '#{str} #{ms} #{Time.now.to_i}' | nc localhost 2003" )
+ end
+
+ register_alert_type "graphite"
+
+
+ end
+ end
+end