-
Notifications
You must be signed in to change notification settings - Fork 273
Description
Description of the bug
OTLP metrics are broken for histograms.
Git commit 9c80c406d36afc730bb49240c8750bfeaa8a1078
added line return if metrics.data_points.empty?
to def histogram_data_point(metrics)
in exporter/otlp-metrics/lib/opentelemetry/exporter/otlp/metrics/metrics_exporter.rb
.
This breaks the def encode(metrics_data)
method in the same class, as metrics.map { |sd| as_otlp_metrics(sd) }
results in an array containing nil
when there are no datapoints.
We see the log line:
OpenTelemetry error: unexpected error in OTLP::MetricsExporter#encode - nil message not allowed here. - /Users/michael/.gem/ruby/3.3.8/gems/opentelemetry-exporter-otlp-metrics-0.5.0/lib/opentelemetry/exporter/otlp/metrics/metrics_exporter.rb:199:in `initialize''
Share details about your runtime
Ruby Version 3.3.8 with the following gems:
* opentelemetry-api (1.5.0)
* opentelemetry-common (0.22.0)
* opentelemetry-exporter-otlp (0.30.0)
* opentelemetry-exporter-otlp-metrics (0.5.0)
* opentelemetry-instrumentation-action_mailer (0.4.0)
* opentelemetry-instrumentation-action_pack (0.12.3)
* opentelemetry-instrumentation-action_view (0.9.0)
* opentelemetry-instrumentation-active_job (0.8.0)
* opentelemetry-instrumentation-active_record (0.9.0)
* opentelemetry-instrumentation-active_storage (0.1.1)
* opentelemetry-instrumentation-active_support (0.8.0)
* opentelemetry-instrumentation-base (0.23.0)
* opentelemetry-instrumentation-concurrent_ruby (0.22.0)
* opentelemetry-instrumentation-grape (0.3.0)
* opentelemetry-instrumentation-rack (0.26.0)
* opentelemetry-instrumentation-rails (0.36.0)
* opentelemetry-metrics-api (0.3.0)
* opentelemetry-metrics-sdk (0.7.2)
* opentelemetry-registry (0.4.0)
* opentelemetry-sdk (1.8.0)
* opentelemetry-semantic_conventions (1.11.0)
Share a simplified reproduction if possible
ENV["OTEL_METRIC_EXPORT_INTERVAL"] = "1000"
exporter = OpenTelemetry::Exporter::OTLP::Metrics::MetricsExporter.new
resource = OpenTelemetry::SDK::Resources::Resource.default
meter_provider = OpenTelemetry::SDK::Metrics::MeterProvider.new(resource:)
metrics_reader = OpenTelemetry::SDK::Metrics::Export::PeriodicMetricReader.new(exporter:)
meter_provider.add_metric_reader(metrics_reader)
histogram = meter_provider.meter('application').create_histogram("test.histogram")
histogram.record(0.123, attributes: { "key" => "value" })
Metadata
Metadata
Assignees
Labels
Type
Projects
Status