summaryrefslogtreecommitdiff
path: root/lib/custodian/alerts/graphite.rb
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2013-10-04 15:03:55 +0100
committerSteve Kemp <steve@steve.org.uk>2013-10-04 15:03:55 +0100
commitd48349ac70b2f79eff5ab53eaeb966d076ef89dd (patch)
treea79bab3dcf7e41f88653481e0b8e9790ff824422 /lib/custodian/alerts/graphite.rb
parent0f189f8b226b30172a2a2618b85c049e67ffef3b (diff)
Graphite alerter.
Diffstat (limited to 'lib/custodian/alerts/graphite.rb')
-rw-r--r--lib/custodian/alerts/graphite.rb70
1 files changed, 70 insertions, 0 deletions
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