# frozen_string_literal: true require 'json' require 'rest-client' class DatadogMetrics def initialize(apikey, url) @apikey = apikey @url = url end 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 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 end