Sha256: 05a65ce6a1c9494f0fef862d58bb12c0af7f5efa8aa2fb3339d163dc930df934

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

# frozen_string_literal: true

require "prometheus_aggregator/exporter"

module PrometheusAggregator
  class Client
    DEFAULT_BUCKETS = [0.01, 0.05, 0.1, 0.2, 0.5, 1, 2, 5, 10].freeze

    def initialize(host, port, opts = {})
      @default_labels = opts.delete(:default_labels) || {}
      @exporter = Exporter.new(host, port, opts)
    end

    def counter(name:, value:, help:, labels: {})
      @exporter.enqueue(
        type: "counter",
        name: name,
        value: value,
        help: help,
        labels: @default_labels.dup.merge(labels)
      )
    end

    def gauge(name:, value:, help:, labels: {})
      @exporter.enqueue(
        type: "gauge",
        name: name,
        value: value,
        help: help,
        labels: @default_labels.dup.merge(labels)
      )
    end

    def histogram(name:, value:, help:, buckets: DEFAULT_BUCKETS, labels: {})
      @exporter.enqueue(
        type: "histogram",
        name: name,
        value: value,
        help: help,
        buckets: buckets,
        labels: @default_labels.dup.merge(labels)
      )
    end

    def stop
      @exporter.stop
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
prometheus_aggregator-1.0.0 lib/prometheus_aggregator/client.rb