summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSteve Kemp <steve@steve.org.uk>2017-09-20 09:30:12 +0300
committerSteve Kemp <steve@steve.org.uk>2017-09-20 09:30:12 +0300
commitd53221f7c976721ac1fc7aaff3607dbd71fb927e (patch)
tree627452484cee5567d64eddf1d66ad8f746a57bff
parentfd98b9e26fcc77300ec3bd92a472f16575e812fc (diff)
Update our metric-submission.
We'll want to handle timeouts more cleanly now, and use TCP.
-rw-r--r--lib/custodian/alerts/graphite.rb24
1 files changed, 19 insertions, 5 deletions
diff --git a/lib/custodian/alerts/graphite.rb b/lib/custodian/alerts/graphite.rb
index 0244047..cca5ece 100644
--- a/lib/custodian/alerts/graphite.rb
+++ b/lib/custodian/alerts/graphite.rb
@@ -1,4 +1,5 @@
require 'socket'
+require 'timeout'
#
# The graphite-alerter.
@@ -61,12 +62,25 @@ module Custodian
payload = "custodian.#{test}.#{host}.test_duration_ms #{ms} #{Time.now.to_i}"
#
- # Send via UDP.
+ # Send metrics via TCP.
#
- socket = UDPSocket.new
- socket.send(payload, 0, @target, 2003)
- socket.close
-
+ begin
+ Timeout.timeout(10) do
+ begin
+ socket = TCPSocket.new(@target,2003)
+ puts payload
+ socket.write(payload)
+ socket.flush
+ socket.close
+ rescue Errno::ENETUNREACH
+ puts("Metrics host unreachable: #{e}")
+ rescue StandardError => e
+ puts("Error submitting metrics: #{e}")
+ end
+ end
+ rescue Timeout::Error
+ puts('Timeout submitting metrics')
+ end
end
register_alert_type 'graphite'