Class: Datadog::Diagnostics::EnvironmentCollector
- Inherits:
-
Object
- Object
- Datadog::Diagnostics::EnvironmentCollector
- Defined in:
- lib/ddtrace/diagnostics/environment_logger.rb
Overview
Collects environment information for diagnostic logging
Instance Method Summary collapse
-
#agent_error(transport_responses) ⇒ String
Error returned by Datadog agent during a tracer flush attempt.
-
#agent_url ⇒ String
Target agent URL for trace flushing.
-
#analytics_enabled ⇒ Boolean?
Analytics enabled in configuration.
-
#collect!(transport_responses) ⇒ Hash
Environment information available at call time.
-
#date ⇒ String
Current time in ISO8601 format.
-
#dd_version ⇒ String
Configured application version.
-
#debug ⇒ Boolean?
Debug mode enabled in configuration.
- #enabled ⇒ Boolean?
-
#env ⇒ String
Configured application environment.
-
#health_metrics_enabled ⇒ Boolean?
Health metrics enabled in configuration.
-
#integrations_loaded ⇒ String?
Concatenated list of integrations activated, with their gem version.
-
#lang ⇒ String
"ruby".
-
#lang_version ⇒ String
Supported Ruby language version.
-
#os_name ⇒ String
Best portable guess of OS information.
-
#partial_flushing_enabled ⇒ Boolean?
Partial flushing enabled in configuration.
-
#priority_sampling_enabled ⇒ Boolean?
Priority sampling enabled in configuration.
-
#runtime_metrics_enabled ⇒ Boolean?
Runtime metrics enabled in configuration.
-
#sample_rate ⇒ Numeric?
Tracer sample rate configured.
-
#sampling_rules ⇒ Hash?
DEV: We currently only support SimpleRule instances.
-
#service ⇒ String
Configured application service name.
-
#tags ⇒ Hash?
Concatenated list of global tracer tags configured.
-
#version ⇒ String
Ddtrace version.
-
#vm ⇒ String?
Ruby VM name and version.
Instance Method Details
#agent_error(transport_responses) ⇒ String
Error returned by Datadog agent during a tracer flush attempt
117 118 119 120 121 122 123 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 117 def agent_error(transport_responses) error_responses = transport_responses.reject(&:ok?) return nil if error_responses.empty? error_responses.map(&:inspect).join(','.freeze) end |
#agent_url ⇒ String
Returns target agent URL for trace flushing.
108 109 110 111 112 113 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 108 def agent_url # Retrieve the effect agent URL, regardless of how it was configured transport = Datadog.tracer.writer.transport adapter = transport.client.api.adapter adapter.url end |
#analytics_enabled ⇒ Boolean?
Returns analytics enabled in configuration.
131 132 133 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 131 def analytics_enabled !!Datadog.configuration.analytics.enabled end |
#collect!(transport_responses) ⇒ Hash
Returns environment information available at call time.
227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 227 def collect!(transport_responses) { date: date, os_name: os_name, version: version, lang: lang, lang_version: lang_version, env: env, enabled: enabled, service: service, dd_version: dd_version, agent_url: agent_url, agent_error: agent_error(transport_responses), debug: debug, analytics_enabled: analytics_enabled, sample_rate: sample_rate, sampling_rules: sampling_rules, tags: , runtime_metrics_enabled: runtime_metrics_enabled, integrations_loaded: integrations_loaded, vm: vm, partial_flushing_enabled: partial_flushing_enabled, priority_sampling_enabled: priority_sampling_enabled, health_metrics_enabled: health_metrics_enabled, **instrumented_integrations_settings } end |
#date ⇒ String
Returns current time in ISO8601 format.
60 61 62 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 60 def date DateTime.now.iso8601 end |
#dd_version ⇒ String
Returns configured application version.
103 104 105 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 103 def dd_version Datadog.configuration.version end |
#debug ⇒ Boolean?
Returns debug mode enabled in configuration.
126 127 128 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 126 def debug !!Datadog.configuration.diagnostics.debug end |
#enabled ⇒ Boolean?
93 94 95 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 93 def enabled Datadog.configuration.tracer.enabled end |
#env ⇒ String
Returns configured application environment.
88 89 90 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 88 def env Datadog.configuration.env end |
#health_metrics_enabled ⇒ Boolean?
Returns health metrics enabled in configuration.
214 215 216 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 214 def health_metrics_enabled !!Datadog.configuration.diagnostics.health_metrics.enabled end |
#integrations_loaded ⇒ String?
Concatenated list of integrations activated, with their gem version. Example: "rails@6.0.3,rack@2.2.3"
182 183 184 185 186 187 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 182 def integrations_loaded integrations = instrumented_integrations return if integrations.empty? integrations.map { |name, integration| "#{name}@#{integration.class.version}" }.join(','.freeze) end |
#lang ⇒ String
Returns "ruby".
76 77 78 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 76 def lang Core::Environment::Ext::LANG end |
#lang_version ⇒ String
Supported Ruby language version. Will be distinct from VM version for non-MRI environments.
83 84 85 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 83 def lang_version Core::Environment::Ext::LANG_VERSION end |
#os_name ⇒ String
Best portable guess of OS information.
66 67 68 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 66 def os_name RbConfig::CONFIG['host'.freeze] end |
#partial_flushing_enabled ⇒ Boolean?
Returns partial flushing enabled in configuration.
204 205 206 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 204 def partial_flushing_enabled !!Datadog.configuration.tracer.partial_flush.enabled end |
#priority_sampling_enabled ⇒ Boolean?
Returns priority sampling enabled in configuration.
209 210 211 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 209 def priority_sampling_enabled !!Datadog.configuration.tracer.priority_sampling end |
#runtime_metrics_enabled ⇒ Boolean?
Returns runtime metrics enabled in configuration.
174 175 176 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 174 def runtime_metrics_enabled Datadog.configuration.runtime_metrics.enabled end |
#sample_rate ⇒ Numeric?
Returns tracer sample rate configured.
136 137 138 139 140 141 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 136 def sample_rate sampler = Datadog.configuration.tracer.sampler return nil unless sampler sampler.sample_rate(nil) rescue nil end |
#sampling_rules ⇒ Hash?
DEV: We currently only support SimpleRule instances. DEV: These are the most commonly used rules. DEV: We should expand support for other rules in the future, DEV: although it is tricky to serialize arbitrary rules.
149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 149 def sampling_rules sampler = Datadog.configuration.tracer.sampler return nil unless sampler.is_a?(Datadog::PrioritySampler) && sampler.priority_sampler.is_a?(Datadog::Sampling::RuleSampler) sampler.priority_sampler.rules.map do |rule| next unless rule.is_a?(Datadog::Sampling::SimpleRule) { name: rule.matcher.name, service: rule.matcher.service, sample_rate: rule.sampler.sample_rate(nil) } end.compact end |
#service ⇒ String
Returns configured application service name.
98 99 100 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 98 def service Datadog.configuration.service end |
#tags ⇒ Hash?
Returns concatenated list of global tracer tags configured.
166 167 168 169 170 171 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 166 def = Datadog.configuration. return nil if .empty? hash_serializer() end |
#version ⇒ String
Returns ddtrace version.
71 72 73 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 71 def version VERSION::STRING end |
#vm ⇒ String?
Ruby VM name and version. Examples: "ruby-2.7.1", "jruby-9.2.11.1", "truffleruby-20.1.0"
192 193 194 195 196 197 198 199 200 201 |
# File 'lib/ddtrace/diagnostics/environment_logger.rb', line 192 def vm # RUBY_ENGINE_VERSION returns the VM version, which # will differ from RUBY_VERSION for non-mri VMs. if defined?(RUBY_ENGINE_VERSION) "#{RUBY_ENGINE}-#{RUBY_ENGINE_VERSION}" else # Ruby < 2.3 doesn't support RUBY_ENGINE_VERSION "#{RUBY_ENGINE}-#{RUBY_VERSION}" end end |