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?
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?
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
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
60 61 62 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 60 def date DateTime.now.iso8601 end |
#dd_version ⇒ String
103 104 105 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 103 def dd_version Datadog.configuration.version end |
#debug ⇒ Boolean?
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
88 89 90 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 88 def env Datadog.configuration.env end |
#health_metrics_enabled ⇒ Boolean?
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: “[email protected],[email protected]”
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
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?
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?
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?
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?
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
98 99 100 |
# File 'lib/datadog/core/diagnostics/environment_logger.rb', line 98 def service Datadog.configuration.service end |
#tags ⇒ Hash?
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
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 |