Class: Datadog::Runtime::Metrics
- Defined in:
- lib/ddtrace/runtime/metrics.rb
Overview
For generating runtime metrics
Constant Summary
Constants included from Metrics::Options
Instance Attribute Summary
Attributes inherited from Metrics
Instance Method Summary collapse
- #associate_with_span(span) ⇒ Object
- #default_metric_options ⇒ Object
-
#flush ⇒ Object
Flush all runtime metrics to Statsd client.
- #gc_metrics ⇒ Object
-
#initialize(**options) ⇒ Metrics
constructor
A new instance of Metrics.
-
#register_service(service) ⇒ Object
Associate service with runtime metrics.
- #try_flush ⇒ Object
Methods inherited from Metrics
#close, #configure, #count, #default_hostname, #default_port, #default_statsd_client, #distribution, #enabled=, #enabled?, #gauge, #increment, #send_metrics, #send_stats?, #supported?, #time
Methods included from Metrics::Options
Constructor Details
#initialize(**options) ⇒ Metrics
Returns a new instance of Metrics.
15 16 17 18 19 20 21 22 |
# File 'lib/ddtrace/runtime/metrics.rb', line 15 def initialize(**) super # Initialize service list @services = Set.new(.fetch(:services, [])) = nil end |
Instance Method Details
#associate_with_span(span) ⇒ Object
24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/ddtrace/runtime/metrics.rb', line 24 def associate_with_span(span) return if !enabled? || span.nil? # Register service as associated with metrics register_service(span.service) unless span.service.nil? # Tag span with language and runtime ID for association with metrics. # We only tag spans that performed internal application work. unless span.get_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE) span.set_tag(Ext::Runtime::TAG_LANG, Core::Environment::Identity.lang) end end |
#default_metric_options ⇒ Object
81 82 83 84 85 86 87 88 89 90 |
# File 'lib/ddtrace/runtime/metrics.rb', line 81 def # Return dupes, so that the constant isn't modified, # and defaults are unfrozen for mutation in Statsd. super.tap do || [:tags] = [:tags].dup # Add services dynamically because they might change during runtime. [:tags].concat() unless .nil? end end |
#flush ⇒ Object
Flush all runtime metrics to Statsd client
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/ddtrace/runtime/metrics.rb', line 53 def flush return unless enabled? try_flush do if Core::Environment::ClassCount.available? gauge(Ext::Runtime::Metrics::METRIC_CLASS_COUNT, Core::Environment::ClassCount.value) end end try_flush do if Core::Environment::ThreadCount.available? gauge(Ext::Runtime::Metrics::METRIC_THREAD_COUNT, Core::Environment::ThreadCount.value) end end try_flush { gc_metrics.each { |metric, value| gauge(metric, value) } if Core::Environment::GC.available? } end |
#gc_metrics ⇒ Object
69 70 71 72 73 |
# File 'lib/ddtrace/runtime/metrics.rb', line 69 def gc_metrics Core::Environment::GC.stat.flat_map do |k, v| nested_gc_metric(Ext::Runtime::Metrics::METRIC_GC_PREFIX, k, v) end.to_h end |
#register_service(service) ⇒ Object
Associate service with runtime metrics
38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/ddtrace/runtime/metrics.rb', line 38 def register_service(service) return if !enabled? || service.nil? service = service.to_s unless @services.include?(service) # Add service to list and update services tag services << service # Recompile the service tags end end |
#try_flush ⇒ Object
75 76 77 78 79 |
# File 'lib/ddtrace/runtime/metrics.rb', line 75 def try_flush yield rescue StandardError => e Datadog.logger.error("Error while sending runtime metric. Cause: #{e.message}") end |