Module: Datadog::Tracing::Diagnostics::EnvironmentCollector
- Defined in:
- lib/datadog/tracing/diagnostics/environment_logger.rb
Overview
Collects environment information for Tracing diagnostic logging
Class Method Summary collapse
-
.agent_error(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_config! ⇒ Object
- .collect_errors!(responses) ⇒ Object
- .collect_integrations_settings! ⇒ Object
- .enabled ⇒ Boolean?
-
.integrations_loaded ⇒ String?
Concatenated list of integrations activated, with their gem version.
-
.partial_flushing_enabled ⇒ Boolean?
Partial flushing enabled in configuration.
-
.sample_rate ⇒ Numeric?
Tracer sample rate configured.
-
.sampling_rules ⇒ Hash?
DEV: We currently only support SimpleRule instances.
Class Method Details
.agent_error(responses) ⇒ String
Error returned by Datadog agent during a tracer flush attempt
73 74 75 76 77 78 79 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 73 def agent_error(responses) error_responses = responses.reject(&:ok?) return nil if error_responses.empty? error_responses.map(&:inspect).join(",") end |
.agent_url ⇒ String?
Returns target agent URL for trace flushing.
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 60 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.instance.adapter adapter.url end |
.analytics_enabled ⇒ Boolean?
Returns analytics enabled in configuration.
82 83 84 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 82 def analytics_enabled !!Datadog.configuration.tracing.analytics.enabled end |
.collect_config! ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 36 def collect_config! { enabled: enabled, agent_url: agent_url, analytics_enabled: analytics_enabled, sample_rate: sample_rate, sampling_rules: sampling_rules, integrations_loaded: integrations_loaded, partial_flushing_enabled: partial_flushing_enabled, } end |
.collect_errors!(responses) ⇒ Object
48 49 50 51 52 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 48 def collect_errors!(responses) { agent_error: agent_error(responses), } end |
.collect_integrations_settings! ⇒ Object
138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 138 def collect_integrations_settings! instrumented_integrations.each_with_object({}) do |(name, integration), result| integration.configuration.to_h.each do |setting, value| next if setting == :tracer # Skip internal objects # Convert value to a string to avoid custom #to_json # handlers possibly causing errors. result[:"#{name}_#{setting}"] = value.to_s end end end |
.enabled ⇒ Boolean?
55 56 57 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 55 def enabled !!Datadog.configuration.tracing.enabled end |
.integrations_loaded ⇒ String?
Concatenated list of integrations activated, with their gem version. Example: "[email protected],[email protected]"
126 127 128 129 130 131 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 126 def integrations_loaded integrations = instrumented_integrations return if integrations.empty? integrations.map { |name, integration| "#{name}@#{integration.class.version}" }.join(",") end |
.partial_flushing_enabled ⇒ Boolean?
Returns partial flushing enabled in configuration.
134 135 136 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 134 def partial_flushing_enabled !!Datadog.configuration.tracing.partial_flush.enabled end |
.sample_rate ⇒ Numeric?
Returns tracer sample rate configured.
87 88 89 90 91 92 93 94 95 96 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 87 def sample_rate sampler = Datadog.configuration.tracing.sampler return Datadog.configuration.tracing.sampling.default_rate unless sampler begin sampler.sample_rate(nil) rescue nil end 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.
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# File 'lib/datadog/tracing/diagnostics/environment_logger.rb', line 104 def sampling_rules sampler = Datadog.configuration.tracing.sampler return Datadog.configuration.tracing.sampling.rules unless 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 |