Sha256: 828d2998dd4283fd12b09ed07e22459e7092d9dd851f175ed569d7a755d4db93

Contents?: true

Size: 1.47 KB

Versions: 1

Compression:

Stored size: 1.47 KB

Contents

begin
  require 'influxdb'
rescue LoadError
end

module Hallmonitor
  module Outputters
    # An outputter for StatsD
    class InfluxdbOutputter < Outputter
      # Builds a new InfluxdbOutputter
      # @param influxdb_client [InfluxDB::Client] client instance to use
      # @param tags [Hash] Set of default tags applied to all events output to
      #   InfluxDB, will be overridden by tags set by events if they conflict
      # @raise if Statsd is undefined (Gem not present)
      def initialize(influxdb_client, tags)
        raise "In order to use InfluxdbOutputter, influxdb gem must be installed" unless defined?(InfluxDB)
        super("influxdb")
        @tags = tags
        @client = influxdb_client
      end

      # Sends events to statsd instance
      def process(event)
        tags = @tags.merge(event.tags)

        data = {}

        if(event.respond_to?(:duration))
          tags = {type: 'timer'}.merge(tags)
          data = {
            values: {value: event.duration},
            tags: tags
          }
          @client.write_point(event.name, data)
        elsif(event.respond_to?(:value))
          tags = {type: 'guage'}.merge(tags)
          data = {
            values: {value: event.value},
            tags: tags
          }
        else
          tags = {type: 'count'}.merge(tags)
          data = {
            values: {value: event.count},
            tags: tags
          }
        end

        @client.write_point(event.name, data)
      end

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
hallmonitor-1.1.0 lib/hallmonitor/outputters/influxdb.rb