class LogStash::Outputs::Opentsdb
This output allows you to pull metrics from your logs and ship them to opentsdb. Opentsdb
is an open source tool for storing and graphing metrics.
Public Instance Methods
connect()
click to toggle source
# File lib/logstash/outputs/opentsdb.rb, line 39 def connect # TODO(sissel): Test error cases. Catch exceptions. Find fortune and glory. begin @socket = TCPSocket.new(@host, @port) rescue Errno::ECONNREFUSED => e @logger.warn("Connection refused to opentsdb server, sleeping...", :host => @host, :port => @port) sleep(2) retry end end
receive(event)
click to toggle source
# File lib/logstash/outputs/opentsdb.rb, line 52 def receive(event) # Opentsdb message format: put metric timestamp value tagname=tagvalue tag2=value2\n # Catch exceptions like ECONNRESET and friends, reconnect on failure. begin name = metrics[0] value = metrics[1] tags = metrics[2..-1] # The first part of the message message = ['put', event.sprintf(name), event.sprintf("%{+%s}"), event.sprintf(value), ].join(" ") # If we have have tags we need to add it to the message event_tags = [] unless tags.nil? Hash[*tags.flatten].each do |tag_name,tag_value| # Interprete variables if neccesary real_tag_name = event.sprintf(tag_name) real_tag_value = event.sprintf(tag_value) event_tags << [real_tag_name , real_tag_value ].join('=') end message+=' '+event_tags.join(' ') end # TODO(sissel): Test error cases. Catch exceptions. Find fortune and glory. begin @socket.puts(message) rescue Errno::EPIPE, Errno::ECONNRESET => e @logger.warn("Connection to opentsdb server died", :exception => e, :host => @host, :port => @port) sleep(2) connect end # TODO(sissel): resend on failure # TODO(sissel): Make 'resend on failure' tunable; sometimes it's OK to # drop metrics. end # @metrics.each end
register()
click to toggle source
# File lib/logstash/outputs/opentsdb.rb, line 35 def register connect end