summaryrefslogtreecommitdiff
path: root/lib/gitlab/metrics/methods/metric_options.rb
blob: 70e122d4e15e16bc920a3d29a68e1c247de0c04a (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
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
module Gitlab
  module Metrics
    module Methods
      class MetricOptions
        SMALL_NETWORK_BUCKETS = [0.005, 0.01, 0.1, 1, 10].freeze

        def initialize(options = {})
          @multiprocess_mode = options[:multiprocess_mode] || :all
          @buckets = options[:buckets] || SMALL_NETWORK_BUCKETS
          @base_labels = options[:base_labels] || {}
          @docstring = options[:docstring]
          @with_feature = options[:with_feature]
        end

        # Documentation describing metric in metrics endpoint '/-/metrics'
        def docstring(docstring = nil)
          @docstring = docstring unless docstring.nil?

          @docstring
        end

        # Gauge aggregation mode for multiprocess metrics
        # - :all (default) returns each gauge for every process
        # - :livesum all process'es gauges summed up
        # - :max maximum value of per process gauges
        # - :min minimum value of per process gauges
        def multiprocess_mode(mode = nil)
          @multiprocess_mode = mode unless mode.nil?

          @multiprocess_mode
        end

        # Measurement buckets for histograms
        def buckets(buckets = nil)
          @buckets = buckets unless buckets.nil?

          @buckets
        end

        # Base labels are merged with per metric labels
        def base_labels(base_labels = nil)
          @base_labels = base_labels unless base_labels.nil?

          @base_labels
        end

        # Use feature toggle to control whether certain metric is enabled/disabled
        def with_feature(name = nil)
          @with_feature = name unless name.nil?

          @with_feature
        end

        def evaluate(&block)
          instance_eval(&block) if block_given?
          self
        end
      end
    end
  end
end