Module: SolidQueueGuard::Metrics::DogstatsdClient

Defined in:
lib/solid_queue_guard/metrics/dogstatsd_client.rb

Overview

Shared Datadog StatsD client for operational gauges/counters. Distinct from Metrics::Statsd (raw UDP export of guard check status).

Defined Under Namespace

Classes: NullStatsd

Class Method Summary collapse

Class Method Details

.available?Boolean

Returns:

  • (Boolean)


19
20
21
22
23
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 19

def available?
  return @available if instance_variable_defined?(:@available)

  @available = OptionalDependency.require!('datadog/statsd', 'dogstatsd-ruby')
end

.default_tagsObject



31
32
33
34
35
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 31

def default_tags
  tags = ["env:#{Rails.env}"]
  tags << "service:#{service_name}" if service_name
  tags
end

.job_tags(job) ⇒ Object



37
38
39
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 37

def job_tags(job)
  ["job_class:#{job.class.name}", "queue:#{job.queue_name}"]
end

.process_tags(kind, process) ⇒ Object



41
42
43
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 41

def process_tags(kind, process)
  ["kind:#{kind}", "process:#{process.name}"]
end

.reset!Object



14
15
16
17
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 14

def reset!
  @statsd = nil
  remove_instance_variable(:@available) if instance_variable_defined?(:@available)
end

.service_nameObject



25
26
27
28
29
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 25

def service_name
  SolidQueueGuard.config.statsd_service_name.presence ||
    ENV['DD_SERVICE'].presence ||
    ENV['SOLID_QUEUE_GUARD_SERVICE'].presence
end

.statsdObject



10
11
12
# File 'lib/solid_queue_guard/metrics/dogstatsd_client.rb', line 10

def statsd
  @statsd ||= build_client
end