summaryrefslogtreecommitdiff
path: root/app/workers/metrics_worker.rb
blob: 90a655793828febdb29d08abbe4ea2631b90b043 (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
class MetricsWorker
  include Sidekiq::Worker

  sidekiq_options queue: :metrics

  def perform(metrics)
    prepared = prepare_metrics(metrics)

    Gitlab::Metrics.pool.with do |connection|
      connection.write_points(prepared)
    end
  end

  def prepare_metrics(metrics)
    metrics.map do |hash|
      new_hash = hash.symbolize_keys

      new_hash[:tags].each do |key, value|
        new_hash[:tags][key] = escape_value(value)
      end

      new_hash
    end
  end

  def escape_value(value)
    value.to_s.gsub('=', '\\=')
  end
end