Skip to content

Commit

Permalink
Move off of opentelemetry in favor of separate crates.
Browse files Browse the repository at this point in the history
`opentelemetry` is going to be deprecated in favor of separated crates.

open-telemetry/opentelemetry-rust#1186
Signed-off-by: Harold Dost <h.dost@criteo.com>
  • Loading branch information
hdost committed Aug 11, 2023
1 parent 42a3c73 commit 9fcdbaa
Show file tree
Hide file tree
Showing 9 changed files with 37 additions and 42 deletions.
3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,11 @@ rust-version = "1.60.0"
[features]
default = ["tracing-log", "metrics"]
# Enables support for exporting OpenTelemetry metrics
metrics = ["opentelemetry/metrics", "smallvec"]
metrics = ["opentelemetry/metrics","opentelemetry_sdk/metrics", "smallvec"]

[dependencies]
opentelemetry = { version = "0.20.0", default-features = false, features = ["trace"] }
opentelemetry_sdk = { version = "0.20.0", default-features = false, features = ["trace"] }
tracing = { version = "0.1.35", default-features = false, features = ["std"] }
tracing-core = "0.1.28"
tracing-subscriber = { version = "0.3.0", default-features = false, features = ["registry", "std"] }
Expand Down
5 changes: 3 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -59,16 +59,17 @@ The crate provides the following types:
### Basic Usage

```rust
use opentelemetry::sdk::trace::TracerProvider;
use opentelemetry::trace::TracerProvider as _;
use opentelemetry_sdk::trace::TracerProvider;
use opentelemetry_stdout as stdout;
use tracing::{error, span};
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::Registry;

fn main() {
// Create a new OpenTelemetry trace pipeline that prints to stdout
let provider = TracerProvider::builder()
.with_simple_exporter(opentelemetry_stdout::SpanExporter::default())
.with_simple_exporter(stdout::SpanExporter::default())
.build();
let tracer = provider.tracer("readme_example");

Expand Down
2 changes: 1 addition & 1 deletion examples/opentelemetry-remote-context.rs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
use opentelemetry::sdk::propagation::TraceContextPropagator;
use opentelemetry::{global, Context};
use opentelemetry_sdk::propagation::TraceContextPropagator;
use std::collections::HashMap;
use tracing::span;
use tracing_opentelemetry::OpenTelemetrySpanExt;
Expand Down
2 changes: 1 addition & 1 deletion src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@
//! ## Examples
//!
//! ```
//! use opentelemetry::sdk::trace::TracerProvider;
//! use opentelemetry_sdk::trace::TracerProvider;
//! use opentelemetry::trace::{Tracer, TracerProvider as _};
//! use tracing::{error, span};
//! use tracing_subscriber::layer::SubscriberExt;
Expand Down
2 changes: 1 addition & 1 deletion src/metrics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -230,7 +230,7 @@ impl<'a> Visit for MetricVisitor<'a> {
/// use tracing_opentelemetry::MetricsLayer;
/// use tracing_subscriber::layer::SubscriberExt;
/// use tracing_subscriber::Registry;
/// # use opentelemetry::sdk::metrics::MeterProvider;
/// # use opentelemetry_sdk::metrics::MeterProvider;
///
/// // Constructing a MeterProvider is out-of-scope for the docs here, but there
/// // are examples in the opentelemetry repository. See:
Expand Down
4 changes: 2 additions & 2 deletions src/span_ext.rs
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ pub trait OpenTelemetrySpanExt {
///
/// ```rust
/// use opentelemetry::{propagation::TextMapPropagator, trace::TraceContextExt};
/// use opentelemetry::sdk::propagation::TraceContextPropagator;
/// use opentelemetry_sdk::propagation::TraceContextPropagator;
/// use tracing_opentelemetry::OpenTelemetrySpanExt;
/// use std::collections::HashMap;
/// use tracing::Span;
Expand Down Expand Up @@ -51,7 +51,7 @@ pub trait OpenTelemetrySpanExt {
///
/// ```rust
/// use opentelemetry::{propagation::TextMapPropagator, trace::TraceContextExt};
/// use opentelemetry::sdk::propagation::TraceContextPropagator;
/// use opentelemetry_sdk::propagation::TraceContextPropagator;
/// use tracing_opentelemetry::OpenTelemetrySpanExt;
/// use std::collections::HashMap;
/// use tracing::Span;
Expand Down
10 changes: 5 additions & 5 deletions src/tracer.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@
use opentelemetry::sdk::trace::{Tracer, TracerProvider};
use opentelemetry::trace::OrderMap;
use opentelemetry::{
trace as otel,
Expand All @@ -8,6 +7,7 @@ use opentelemetry::{
},
Context as OtelContext,
};
use opentelemetry_sdk::trace::{Tracer as SdkTracer, TracerProvider as SdkTracerProvider};

/// An interface for authors of OpenTelemetry SDKs to build pre-sampled tracers.
///
Expand Down Expand Up @@ -64,7 +64,7 @@ impl PreSampledTracer for noop::NoopTracer {
}
}

impl PreSampledTracer for Tracer {
impl PreSampledTracer for SdkTracer {
fn sampled_context(&self, data: &mut crate::OtelData) -> OtelContext {
// Ensure tracing pipeline is still installed.
if self.provider().is_none() {
Expand Down Expand Up @@ -118,7 +118,7 @@ impl PreSampledTracer for Tracer {
fn current_trace_state(
builder: &SpanBuilder,
parent_cx: &OtelContext,
provider: &TracerProvider,
provider: &SdkTracerProvider,
) -> (TraceId, TraceFlags) {
if parent_cx.has_active_span() {
let span = parent_cx.span();
Expand Down Expand Up @@ -160,8 +160,8 @@ fn process_sampling_result(
mod tests {
use super::*;
use crate::OtelData;
use opentelemetry::sdk::trace::{config, Sampler, TracerProvider};
use opentelemetry::trace::{SpanBuilder, SpanId, TracerProvider as _};
use opentelemetry_sdk::trace::{config, Sampler, TracerProvider};

#[test]
fn assigns_default_trace_id_if_missing() {
Expand Down Expand Up @@ -194,7 +194,7 @@ mod tests {
// Existing sampling result defers
("previous_drop_result_always_on", Sampler::AlwaysOn, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::Drop, attributes: vec![], trace_state: Default::default() }), false),
("previous_record_and_sample_result_always_off", Sampler::AlwaysOff, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::RecordAndSample, attributes: vec![], trace_state: Default::default() }), true),

// Existing local parent, defers
("previous_drop_result_always_on", Sampler::AlwaysOn, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::Drop, attributes: vec![], trace_state: Default::default() }), false),
("previous_record_and_sample_result_always_off", Sampler::AlwaysOff, OtelContext::new(), Some(SamplingResult { decision: SamplingDecision::RecordAndSample, attributes: vec![], trace_state: Default::default() }), true),
Expand Down
41 changes: 17 additions & 24 deletions tests/metrics_publishing.rs
Original file line number Diff line number Diff line change
@@ -1,18 +1,17 @@
use opentelemetry::{
metrics::MetricsError,
sdk::{
metrics::{
data::{Histogram, ResourceMetrics, Sum},
reader::{
AggregationSelector, DefaultAggregationSelector, DefaultTemporalitySelector,
MetricReader, TemporalitySelector,
},
InstrumentKind, ManualReader, MeterProvider,
use opentelemetry::{metrics::MetricsError, Context, KeyValue};
use opentelemetry_sdk::{
metrics::{
data,
data::{Histogram, Sum},
reader::{
AggregationSelector, DefaultAggregationSelector, DefaultTemporalitySelector,
MetricProducer, MetricReader, TemporalitySelector,
},
AttributeSet, Resource,
InstrumentKind, ManualReader, MeterProvider,
},
Context, KeyValue,
AttributeSet, Resource,
};

use std::{fmt::Debug, sync::Arc};
use tracing::Subscriber;
use tracing_opentelemetry::MetricsLayer;
Expand Down Expand Up @@ -425,33 +424,27 @@ struct TestReader {
}

impl AggregationSelector for TestReader {
fn aggregation(&self, kind: InstrumentKind) -> opentelemetry::sdk::metrics::Aggregation {
fn aggregation(&self, kind: InstrumentKind) -> opentelemetry_sdk::metrics::Aggregation {
self.inner.aggregation(kind)
}
}

impl TemporalitySelector for TestReader {
fn temporality(&self, kind: InstrumentKind) -> opentelemetry::sdk::metrics::data::Temporality {
fn temporality(&self, kind: InstrumentKind) -> opentelemetry_sdk::metrics::data::Temporality {
self.inner.temporality(kind)
}
}

impl MetricReader for TestReader {
fn register_pipeline(&self, pipeline: std::sync::Weak<opentelemetry::sdk::metrics::Pipeline>) {
fn register_pipeline(&self, pipeline: std::sync::Weak<opentelemetry_sdk::metrics::Pipeline>) {
self.inner.register_pipeline(pipeline);
}

fn register_producer(
&self,
producer: Box<dyn opentelemetry::sdk::metrics::reader::MetricProducer>,
) {
fn register_producer(&self, producer: Box<dyn MetricProducer>) {
self.inner.register_producer(producer);
}

fn collect(
&self,
rm: &mut opentelemetry::sdk::metrics::data::ResourceMetrics,
) -> opentelemetry::metrics::Result<()> {
fn collect(&self, rm: &mut data::ResourceMetrics) -> opentelemetry::metrics::Result<()> {
self.inner.collect(rm)
}

Expand All @@ -478,7 +471,7 @@ where
T: Debug + PartialEq + Copy + std::iter::Sum + 'static,
{
fn export(&self) -> Result<(), MetricsError> {
let mut rm = ResourceMetrics {
let mut rm = data::ResourceMetrics {
resource: Resource::default(),
scope_metrics: Vec::new(),
};
Expand Down
10 changes: 5 additions & 5 deletions tests/trace_state_propagation.rs
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
use futures_util::future::BoxFuture;
use opentelemetry::{
propagation::TextMapPropagator,
sdk::{
export::trace::{ExportResult, SpanData, SpanExporter},
propagation::{BaggagePropagator, TextMapCompositePropagator, TraceContextPropagator},
trace::{Tracer, TracerProvider},
},
trace::{SpanContext, TraceContextExt, Tracer as _, TracerProvider as _},
Context,
};
use opentelemetry_sdk::{
export::trace::{ExportResult, SpanData, SpanExporter},
propagation::{BaggagePropagator, TextMapCompositePropagator, TraceContextPropagator},
trace::{Tracer, TracerProvider},
};
use std::collections::{HashMap, HashSet};
use std::sync::{Arc, Mutex};
use tracing::Subscriber;
Expand Down

0 comments on commit 9fcdbaa

Please sign in to comment.