Class: Norikra::Listener::Mackerel

Inherits:
Base
  • Object
show all
Defined in:
lib/norikra/listener/mackerel.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(argument, query_name, query_group) ⇒ Mackerel

Returns a new instance of Mackerel.

Raises:

  • (Norikra::ArgumentError)


15
16
17
18
19
20
21
22
23
24
25
# File 'lib/norikra/listener/mackerel.rb', line 15

def initialize(argument, query_name, query_group)
  super
  @service, api_key = argument.split(',', 2)
  api_key ||= ENV['MACKEREL_APIKEY']

  raise Norikra::ArgumentError, "service name is not specified" unless @service
  raise Norikra::ArgumentError, "api_key is not specified" unless api_key

  @client = ::Mackerel::Client.new(:mackerel_api_key => api_key)
  debug "Initialized mackerel-client api_key:#{api_key}"
end

Class Method Details

.labelObject



11
12
13
# File 'lib/norikra/listener/mackerel.rb', line 11

def self.label
  'MACKEREL'
end

Instance Method Details

#process_async(events) ⇒ Object



27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/norikra/listener/mackerel.rb', line 27

def process_async(events)
  metrics = []
  events.each do |time, record|
    record.each do |k, v|
      metrics.push({ time: time.to_i, name: k, value: v })
    end
  end
  debug "post_service_metriccs(#{@service}, #{metrics})"
  begin
    @client.post_service_metrics(@service, metrics)
  rescue => e
    warn "post_service_metrics failed #{e}"
  end
end