Class: Datadog::Core::Diagnostics::EnvironmentCollector
- Inherits:
-
Object
- Object
- Datadog::Core::Diagnostics::EnvironmentCollector
- Defined in:
- lib/datadog/core/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.
- #profiling_enabled ⇒ Object
-
#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
121 122 123 124 125 126 127 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 121 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 114 115 116 117 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 108 def agent_url # Retrieve the effect agent URL, regardless of how it was configured transport = Tracing.send(:tracer).writer.transport # return `nil` with IO transport return unless transport.respond_to?(:client) adapter = transport.client.api.adapter adapter.url end |
#analytics_enabled ⇒ Boolean?
Returns analytics enabled in configuration.
135 136 137 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 135 def analytics_enabled !!Datadog.configuration.tracing.analytics.enabled end |
#collect!(transport_responses) ⇒ Hash
Returns environment information available at call time.
231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 231 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, profiling_enabled: profiling_enabled, **instrumented_integrations_settings } end |
#date ⇒ String
Returns current time in ISO8601 format.
60 61 62 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 60 def date DateTime.now.iso8601 end |
#dd_version ⇒ String
Returns configured application version.
103 104 105 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 103 def dd_version Datadog.configuration.version end |
#debug ⇒ Boolean?
Returns debug mode enabled in configuration.
130 131 132 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 130 def debug !!Datadog.configuration.diagnostics.debug end |
#enabled ⇒ Boolean?
93 94 95 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 93 def enabled Datadog.configuration.tracing.enabled end |
#env ⇒ String
Returns configured application environment.
88 89 90 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 88 def env Datadog.configuration.env end |
#health_metrics_enabled ⇒ Boolean?
Returns health metrics enabled in configuration.
218 219 220 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 218 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”
186 187 188 189 190 191 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 186 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/datadog/core/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/datadog/core/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/datadog/core/diagnostics/environment_logger.rb', line 66 def os_name RbConfig::CONFIG['host'.freeze] end |
#partial_flushing_enabled ⇒ Boolean?
Returns partial flushing enabled in configuration.
208 209 210 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 208 def partial_flushing_enabled !!Datadog.configuration.tracing.partial_flush.enabled end |
#priority_sampling_enabled ⇒ Boolean?
Returns priority sampling enabled in configuration.
213 214 215 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 213 def priority_sampling_enabled !!Datadog.configuration.tracing.priority_sampling end |
#profiling_enabled ⇒ Object
222 223 224 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 222 def profiling_enabled !!Datadog.configuration.profiling.enabled end |
#runtime_metrics_enabled ⇒ Boolean?
Returns runtime metrics enabled in configuration.
178 179 180 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 178 def runtime_metrics_enabled Datadog.configuration.runtime_metrics.enabled end |
#sample_rate ⇒ Numeric?
Returns tracer sample rate configured.
140 141 142 143 144 145 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 140 def sample_rate sampler = Datadog.configuration.tracing.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.
153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 153 def sampling_rules sampler = Datadog.configuration.tracing.sampler return nil unless sampler.is_a?(Tracing::Sampling::PrioritySampler) && sampler.priority_sampler.is_a?(Tracing::Sampling::RuleSampler) sampler.priority_sampler.rules.map do |rule| next unless rule.is_a?(Tracing::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/datadog/core/diagnostics/environment_logger.rb', line 98 def service Datadog.configuration.service end |
#tags ⇒ Hash?
Returns concatenated list of global tracer tags configured.
170 171 172 173 174 175 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 170 def = Datadog.configuration. return nil if .empty? hash_serializer() end |
#version ⇒ String
Returns ddtrace version.
71 72 73 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 71 def version DDTrace::VERSION::STRING end |
#vm ⇒ String?
Ruby VM name and version. Examples: “ruby-2.7.1”, “jruby-9.2.11.1”, “truffleruby-20.1.0”
196 197 198 199 200 201 202 203 204 205 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 196 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 |