Class: Datadog::OpenTelemetry::Metrics
- Inherits:
-
Object
- Object
- Datadog::OpenTelemetry::Metrics
- Includes:
- SignalConfiguration
- Defined in:
- lib/datadog/opentelemetry/metrics.rb
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
Returns a new instance of Metrics.
20 21 22 23 24 25 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 20 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
12 13 14 15 16 17 18 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 12 def self.initialize!(components) new(components).configure_metrics_sdk true rescue => exc components.logger.warn("Failed to initialize OpenTelemetry metrics: #{exc.class}: #{exc.}: #{exc.backtrace.join("\n")}") false end |
Instance Method Details
#configure_metrics_sdk ⇒ Object
27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
# File 'lib/datadog/opentelemetry/metrics.rb', line 27 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 |