Sha256: dafdbaa10d6903555dbeb84133fae90af297ee6524218680830fc711492bb0fb

Contents?: true

Size: 1.45 KB

Versions: 1

Compression:

Stored size: 1.45 KB

Contents

require 'mackerel/client'
require 'tilt/erubis' # tilt autoloading 'tilt/erubis' in a non thread-safe way; explicit require 'tilt/erubis' suggested.

require 'norikra/logger'
require 'norikra/listener'
include Norikra::Log

module Norikra
  module Listener
    class Mackerel < Norikra::Listener::Base
      def self.label
        'MACKEREL'
      end

      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}"

        @service, @prefix = @service.split('.', 2)
      end

      def process_async(events)
        metrics = []
        events.each do |time, record|
          record.each do |k, v|
            if @prefix
              metrics.push({ time: time.to_i, name: @prefix + '.' + k, value: v })
            else
              metrics.push({ time: time.to_i, name: k, value: v })
            end
          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

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
norikra-listener-mackerel-0.1.1-java lib/norikra/listener/mackerel.rb