class LogStash::Outputs::DatadogMetrics
Public Instance Methods
flush(events, final=false)
click to toggle source
public
# File lib/logstash/outputs/datadog_metrics.rb, line 91 def flush(events, final=false) dd_series = Hash.new dd_series['series'] = Array(events).flatten request = Net::HTTP::Post.new("#{@uri.path}?api_key=#{@api_key}") begin request.body = series_to_json(dd_series) request.add_field("Content-Type", 'application/json') response = @client.request(request) @logger.info("DD convo", :request => request.inspect, :response => response.inspect) raise unless response.code == '202' rescue Exception => e @logger.warn("Unhandled exception", :request => request.inspect, :response => response.inspect, :exception => e.inspect) end end
receive(event)
click to toggle source
public
# File lib/logstash/outputs/datadog_metrics.rb, line 68 def receive(event) return unless @metric_name && @metric_value && @metric_type return unless ["gauge", "counter"].include? event.sprintf(@metric_type) dd_metrics = Hash.new dd_metrics['metric'] = event.sprintf(@metric_name) dd_metrics['points'] = [[to_epoch(event.timestamp), event.sprintf(@metric_value).to_f]] dd_metrics['type'] = event.sprintf(@metric_type) dd_metrics['host'] = event.sprintf(@host) dd_metrics['device'] = event.sprintf(@device) if @dd_tags tagz = @dd_tags.collect {|x| event.sprintf(x) } else tagz = event.get("tags") end dd_metrics['tags'] = tagz if tagz @logger.info("Queueing event", :event => dd_metrics) buffer_receive(dd_metrics) end
register()
click to toggle source
# File lib/logstash/outputs/datadog_metrics.rb, line 50 def register require "net/https" require "uri" @url = "https://app.datadoghq.com/api/v1/series" @uri = URI.parse(@url) @client = Net::HTTP.new(@uri.host, @uri.port) @client.use_ssl = true @client.verify_mode = OpenSSL::SSL::VERIFY_NONE @logger.debug("Client", :client => @client.inspect) buffer_initialize( :max_items => @queue_size, :max_interval => @timeframe, :logger => @logger ) end
Private Instance Methods
series_to_json(series)
click to toggle source
# File lib/logstash/outputs/datadog_metrics.rb, line 110 def series_to_json(series) LogStash::Json.dump(series) end
to_epoch(t)
click to toggle source
# File lib/logstash/outputs/datadog_metrics.rb, line 114 def to_epoch(t) Integer(t.is_a?(String) ? Time.parse(t) : t) end