Sha256: 3b4b1f1b455651e5ac7f08aa44e8455570f4d2dc014b5eb7fa405397e047cf0b
Contents?: true
Size: 1.13 KB
Versions: 2
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true # Released under the MIT License. # Copyright, 2023-2024, by Samuel Williams. require_relative "../metric" module Metrics module Backend module Capture class Metric < Metrics::Metric def initialize(...) super @values = [] @tags = Set.new @sample_rates = [] end attr :values attr :tags attr :sample_rates def emit(value, tags: nil, sample_rate: 1.0) @values << value @tags.merge(tags) if tags @sample_rates << sample_rate end def as_json { name: @name, type: @type, description: @description, unit: @unit, values: @values, tags: @tags.to_a.sort, sample_rates: @sample_rates.sort.uniq } end def to_json(...) as_json.to_json(...) end end def self.metrics @metrics ||= [] end module Interface def metric(name, type, description: nil, unit: nil, &block) metric = Metric.new(name, type, description, unit) Capture.metrics << metric return metric end end end Interface = Capture::Interface end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
metrics-0.12.2 | lib/metrics/backend/capture.rb |
metrics-0.12.1 | lib/metrics/backend/capture.rb |