Class: Datadog::OpenTelemetry::Metrics
- Inherits:
-
Object
- Object
- Datadog::OpenTelemetry::Metrics
- Defined in:
- lib/datadog/opentelemetry/metrics.rb
Constant Summary collapse
- EXPORTER_NONE =
'none'
Class Method Summary collapse
Instance Method Summary collapse
- #configure_metrics_sdk ⇒ Object
-
#initialize(components) ⇒ Metrics
constructor
A new instance of Metrics.
Constructor Details
#initialize(components) ⇒ Metrics
18 19 20 21 22 23 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 18 def initialize(components) @logger = components.logger @settings = components.settings @agent_host = components.agent_settings.hostname @agent_ssl = components.agent_settings.ssl end |
Class Method Details
.initialize!(components) ⇒ Object
10 11 12 13 14 15 16 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 10 def self.initialize!(components) new(components).configure_metrics_sdk true rescue => exc components.logger.error("Failed to initialize OpenTelemetry metrics: #{exc.class}: #{exc}: #{exc.backtrace.join("\n")}") false end |
Instance Method Details
#configure_metrics_sdk ⇒ Object
25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 25 def configure_metrics_sdk provider = ::OpenTelemetry.meter_provider provider.shutdown if provider.is_a?(::OpenTelemetry::SDK::Metrics::MeterProvider) # The OpenTelemetry SDK defaults to cumulative temporality, but Datadog prefers delta temporality. # Here is an example of how this config is applied: https://github.com/open-telemetry/opentelemetry-ruby/blob/1933d4c18e5f5e45c53fa9e902e58aa91e85cc38/metrics_sdk/lib/opentelemetry/sdk/metrics/aggregation/sum.rb#L14 if DATADOG_ENV['OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'].nil? ENV['OTEL_EXPORTER_OTLP_METRICS_TEMPORALITY_PREFERENCE'] = 'delta' # rubocop:disable CustomCops/EnvUsageCop end resource = create_resource provider = ::OpenTelemetry::SDK::Metrics::MeterProvider.new(resource: resource) configure_metric_reader(provider) ::OpenTelemetry.meter_provider = provider end |