Class: DatadogMetrics

Inherits:
Object
  • Object
show all
Defined in:
lib/fluent/plugin/datadog_metrics_sender.rb

Instance Method Summary collapse

Constructor Details

#initialize(apikey, url) ⇒ DatadogMetrics

Returns a new instance of DatadogMetrics.



6
7
8
9
# File 'lib/fluent/plugin/datadog_metrics_sender.rb', line 6

def initialize(apikey, url)
  @apikey = apikey
  @url = url
end

Instance Method Details

#add_custom_data(ddtags, record) ⇒ Object



11
12
13
14
15
16
17
18
19
20
21
22
23
24
# File 'lib/fluent/plugin/datadog_metrics_sender.rb', line 11

def add_custom_data(ddtags, record)
  if ddtags.length() > 0
    record_series = record['series']
    data_array = []
    record_series.each do |interim_data|
      interim_data['tags'] ||= []
      interim_data['tags'].push(*ddtags)
      data_array << interim_data
    end
    record['series'] = data_array
    return record
  end
  return record
end

#send_metrics(ddtags, record) ⇒ Object



26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
# File 'lib/fluent/plugin/datadog_metrics_sender.rb', line 26

def send_metrics(ddtags, record)
  puts "Additional tags to be added to metrics are", ddtags
  metrics_data = add_custom_data(ddtags, record)
  puts "Sending received metrics data"
  response = RestClient::Request.new(
      method: :post,
      url: @url,
      payload:  metrics_data.to_json,
      headers: {'DD-API-KEY': @apikey, content_type: :json }
  ).execute do |response, request, result|
    case response.code
    when 202
      return response.body
    else
      puts 'Cannot send metrics to Datadog', response.body
    end
  end
end