summaryrefslogtreecommitdiff
path: root/lib/gitlab/metrics/metric.rb
blob: 79241f56874e365fd49dbf04c5e96d1ec45dfb47 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
module Gitlab
  module Metrics
    # Class for storing details of a single metric (label, value, etc).
    class Metric
      attr_reader :series, :values, :tags, :created_at

      # series - The name of the series (as a String) to store the metric in.
      # values - A Hash containing the values to store.
      # tags   - A Hash containing extra tags to add to the metrics.
      def initialize(series, values, tags = {})
        @values     = values
        @series     = series
        @tags       = tags
        @created_at = Time.now.utc
      end

      # Returns a Hash in a format that can be directly written to InfluxDB.
      def to_hash
        {
          series: @series,
          tags:   @tags.merge(
            hostname:       Metrics.hostname,
            ruby_engine:    RUBY_ENGINE,
            ruby_version:   RUBY_VERSION,
            gitlab_version: Gitlab::VERSION,
            process_type:   Sidekiq.server? ? 'sidekiq' : 'rails'
          ),
          values:    @values,
          timestamp: @created_at.to_i * 1_000_000_000
        }
      end
    end
  end
end