Skip to content

Commit

Permalink
Merge branch 'main' into otel-json
Browse files Browse the repository at this point in the history
  • Loading branch information
ramgdev committed Apr 21, 2024
2 parents ebc3cc3 + 7a51e75 commit 86a89d5
Show file tree
Hide file tree
Showing 23 changed files with 504 additions and 124 deletions.
10 changes: 4 additions & 6 deletions opentelemetry-appender-log/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -49,12 +49,10 @@ where
{
pub fn new(provider: &P) -> Self {
OpenTelemetryLogBridge {
logger: provider.versioned_logger(
"opentelemetry-log-appender",
Some(Cow::Borrowed(env!("CARGO_PKG_VERSION"))),
None,
None,
),
logger: provider
.logger_builder("opentelemetry-log-appender")
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
.build(),
_phantom: Default::default(),
}
}
Expand Down
10 changes: 4 additions & 6 deletions opentelemetry-appender-tracing/src/layer.rs
Original file line number Diff line number Diff line change
Expand Up @@ -138,12 +138,10 @@ where
{
pub fn new(provider: &P) -> Self {
OpenTelemetryTracingBridge {
logger: provider.versioned_logger(
INSTRUMENTATION_LIBRARY_NAME,
Some(Cow::Borrowed(env!("CARGO_PKG_VERSION"))),
None,
None,
),
logger: provider
.logger_builder(INSTRUMENTATION_LIBRARY_NAME)
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
.build(),
_phantom: Default::default(),
}
}
Expand Down
2 changes: 2 additions & 0 deletions opentelemetry-http/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

## vNext

- Add `reqwest-rustls-webkpi-roots` feature flag to configure [`reqwest`](https://docs.rs/reqwest/0.11.27/reqwest/index.html#optional-features) to use embedded `webkpi-roots`.

## v0.11.1

- Add feature flag enabling users to configure `reqwest` usage to use rustls via
Expand Down
1 change: 1 addition & 0 deletions opentelemetry-http/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ rust-version = "1.65"

[features]
reqwest-rustls = ["reqwest", "reqwest/rustls-tls-native-roots"]
reqwest-rustls-webkpi-roots = ["reqwest", "reqwest/rustls-tls-webpki-roots"]

[dependencies]
async-trait = { workspace = true }
Expand Down
10 changes: 5 additions & 5 deletions opentelemetry-jaeger/src/exporter/config/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,13 +85,13 @@ fn build_config_and_process(
pub(crate) fn install_tracer_provider_and_get_tracer(
tracer_provider: TracerProvider,
) -> Result<Tracer, TraceError> {
let tracer = opentelemetry::trace::TracerProvider::versioned_tracer(
let tracer = opentelemetry::trace::TracerProvider::tracer_builder(
&tracer_provider,
"opentelemetry-jaeger",
Some(env!("CARGO_PKG_VERSION")),
Some(semcov::SCHEMA_URL),
None,
);
)
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(semcov::SCHEMA_URL)
.build();
let _ = global::set_tracer_provider(tracer_provider);
Ok(tracer)
}
Expand Down
1 change: 1 addition & 0 deletions opentelemetry-otlp/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
[#1585]: https://github.com/open-telemetry/opentelemetry-rust/pull/1585

- Added `DeltaTemporalitySelector` ([#1568])
- Add `webkpi-roots` features to `reqwest` and `tonic` backends

[#1568]: https://github.com/open-telemetry/opentelemetry-rust/pull/1568

Expand Down
4 changes: 3 additions & 1 deletion opentelemetry-otlp/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -68,14 +68,16 @@ grpc-tonic = ["tonic", "prost", "http", "tokio", "opentelemetry-proto/gen-tonic"
gzip-tonic = ["tonic/gzip"]
tls = ["tonic/tls"]
tls-roots = ["tls", "tonic/tls-roots"]
tls-webkpi-roots = ["tls", "tonic/tls-webpki-roots"]

# http binary
http-proto = ["prost", "opentelemetry-http", "opentelemetry-proto/gen-tonic-messages", "http", "trace", "metrics"]
# http json
http-json = ["serde_json", "prost", "opentelemetry-http", "opentelemetry-proto/gen-tonic-messages", "opentelemetry-proto/with-serde", "http", "trace", "metrics"]
reqwest-blocking-client = ["reqwest/blocking", "opentelemetry-http/reqwest"]
reqwest-client = ["reqwest", "opentelemetry-http/reqwest"]
reqwest-rustls = ["reqwest", "reqwest/rustls-tls-native-roots"]
reqwest-rustls = ["reqwest", "opentelemetry-http/reqwest-rustls"]
reqwest-rustls-webkpi-roots = ["reqwest", "opentelemetry-http/reqwest-rustls-webkpi-roots"]

# test
integration-testing = ["tonic", "prost", "tokio/full", "trace"]
6 changes: 4 additions & 2 deletions opentelemetry-otlp/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,14 +97,16 @@
//! * `gzip-tonic`: Use gzip compression for `tonic` grpc layer.
//! * `tls-tonic`: Enable TLS.
//! * `tls-roots`: Adds system trust roots to rustls-based gRPC clients using the rustls-native-certs crate
//! * `tls-webkpi-roots`: Embeds Mozilla's trust roots to rustls-based gRPC clients using the webkpi-roots crate
//!
//! The following feature flags offer additional configurations on http:
//!
//! * `http-proto`: Use http as transport layer, protobuf as body format.
//! * `http-json`: Use http as transport layer, JSON as body format.
//! * `reqwest-blocking-client`: Use reqwest blocking http client.
//! * `reqwest-client`: Use reqwest http client.
//! * `reqwest-rustls`: Use reqwest with TLS.
//! * `http-json`: Use http as transport layer, JSON as body format.
//! * `reqwest-rustls`: Use reqwest with TLS with system trust roots via `rustls-native-certs` crate.
//! * `reqwest-rustls-webkpi-roots`: Use reqwest with TLS with Mozilla's trust roots via `webkpi-roots` crate.
//!
//! # Kitchen Sink Full Configuration
//!
Expand Down
20 changes: 8 additions & 12 deletions opentelemetry-otlp/src/logs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -183,12 +183,10 @@ fn build_simple_with_exporter(
provider_builder = provider_builder.with_config(config);
}
let provider = provider_builder.build();
let logger = provider.versioned_logger(
Cow::Borrowed("opentelemetry-otlp"),
Some(Cow::Borrowed(env!("CARGO_PKG_VERSION"))),
None,
None,
);
let logger = provider
.logger_builder(Cow::Borrowed("opentelemetry-otlp"))
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
.build();
let _ = global::set_logger_provider(provider);
logger
}
Expand All @@ -209,12 +207,10 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
provider_builder = provider_builder.with_config(config);
}
let provider = provider_builder.build();
let logger = provider.versioned_logger(
Cow::Borrowed("opentelemetry-otlp"),
Some(Cow::Borrowed(env!("CARGO_PKG_VERSION"))),
None,
None,
);
let logger = provider
.logger_builder(Cow::Borrowed("opentelemetry-otlp"))
.with_version(Cow::Borrowed(env!("CARGO_PKG_VERSION")))
.build();
let _ = global::set_logger_provider(provider);
logger
}
22 changes: 10 additions & 12 deletions opentelemetry-otlp/src/span.rs
Original file line number Diff line number Diff line change
Expand Up @@ -140,12 +140,11 @@ fn build_simple_with_exporter(
provider_builder = provider_builder.with_config(config);
}
let provider = provider_builder.build();
let tracer = provider.versioned_tracer(
"opentelemetry-otlp",
Some(env!("CARGO_PKG_VERSION")),
Some(SCHEMA_URL),
None,
);
let tracer = provider
.tracer_builder("opentelemetry-otlp")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(SCHEMA_URL)
.build();
let _ = global::set_tracer_provider(provider);
tracer
}
Expand All @@ -166,12 +165,11 @@ fn build_batch_with_exporter<R: RuntimeChannel>(
provider_builder = provider_builder.with_config(config);
}
let provider = provider_builder.build();
let tracer = provider.versioned_tracer(
"opentelemetry-otlp",
Some(env!("CARGO_PKG_VERSION")),
Some(SCHEMA_URL),
None,
);
let tracer = provider
.tracer_builder("opentelemetry-otlp")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(SCHEMA_URL)
.build();
let _ = global::set_tracer_provider(provider);
tracer
}
Expand Down
19 changes: 13 additions & 6 deletions opentelemetry-sdk/src/logs/log_emitter.rs
Original file line number Diff line number Diff line change
Expand Up @@ -43,12 +43,19 @@ impl opentelemetry::logs::LoggerProvider for LoggerProvider {
name
};

self.library_logger(Arc::new(InstrumentationLibrary::new(
component_name,
version,
schema_url,
attributes,
)))
let mut builder = self.logger_builder(component_name);

if let Some(v) = version {
builder = builder.with_version(v);
}
if let Some(s) = schema_url {
builder = builder.with_schema_url(s);
}
if let Some(a) = attributes {
builder = builder.with_attributes(a);
}

builder.build()
}

fn library_logger(&self, library: Arc<InstrumentationLibrary>) -> Self::Logger {
Expand Down
44 changes: 43 additions & 1 deletion opentelemetry-sdk/src/logs/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ mod tests {
use super::*;
use crate::testing::logs::InMemoryLogsExporter;
use opentelemetry::logs::{LogRecord, Logger, LoggerProvider as _, Severity};
use opentelemetry::{logs::AnyValue, Key};
use opentelemetry::{logs::AnyValue, Key, KeyValue};

#[test]
fn logging_sdk_test() {
Expand Down Expand Up @@ -55,4 +55,46 @@ mod tests {
.expect("Attributes are expected");
assert_eq!(attributes.len(), 2);
}

#[test]
fn logger_attributes() {
let provider = LoggerProvider::builder().build();
let logger = provider
.logger_builder("test_logger")
.with_schema_url("https://opentelemetry.io/schema/1.0.0")
.with_attributes(vec![(KeyValue::new("test_k", "test_v"))])
.build();
let instrumentation_library = logger.instrumentation_library();
let attributes = &instrumentation_library.attributes;
assert_eq!(instrumentation_library.name, "test_logger");
assert_eq!(
instrumentation_library.schema_url,
Some("https://opentelemetry.io/schema/1.0.0".into())
);
assert_eq!(attributes.len(), 1);
assert_eq!(attributes[0].key, "test_k".into());
assert_eq!(attributes[0].value, "test_v".into());
}

#[test]
#[allow(deprecated)]
fn versioned_logger_options() {
let provider = LoggerProvider::builder().build();
let logger = provider.versioned_logger(
"test_logger",
Some("v1.2.3".into()),
Some("https://opentelemetry.io/schema/1.0.0".into()),
Some(vec![(KeyValue::new("test_k", "test_v"))]),
);
let instrumentation_library = logger.instrumentation_library();
let attributes = &instrumentation_library.attributes;
assert_eq!(instrumentation_library.version, Some("v1.2.3".into()));
assert_eq!(
instrumentation_library.schema_url,
Some("https://opentelemetry.io/schema/1.0.0".into())
);
assert_eq!(attributes.len(), 1);
assert_eq!(attributes[0].key, "test_k".into());
assert_eq!(attributes[0].value, "test_v".into());
}
}
14 changes: 13 additions & 1 deletion opentelemetry-sdk/src/metrics/meter_provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -148,7 +148,19 @@ impl MeterProvider for SdkMeterProvider {
return Meter::new(Arc::new(NoopMeterCore::new()));
}

let scope = Scope::new(name, version, schema_url, attributes);
let mut builder = Scope::builder(name);

if let Some(v) = version {
builder = builder.with_version(v);
}
if let Some(s) = schema_url {
builder = builder.with_schema_url(s);
}
if let Some(a) = attributes {
builder = builder.with_attributes(a);
}

let scope = builder.build();

if let Ok(mut meters) = self.inner.meters.lock() {
let meter = meters
Expand Down
37 changes: 37 additions & 0 deletions opentelemetry-sdk/src/trace/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -327,4 +327,41 @@ mod tests {
);
assert_eq!(span.span_context().trace_state().get("foo"), Some("bar"));
}

#[test]
fn tracer_attributes() {
let provider = TracerProvider::builder().build();
let tracer = provider
.tracer_builder("test_tracer")
.with_attributes(vec![KeyValue::new("test_k", "test_v")])
.build();
let instrumentation_library = tracer.instrumentation_library();
let attributes = &instrumentation_library.attributes;
assert_eq!(attributes.len(), 1);
assert_eq!(attributes[0].key, "test_k".into());
assert_eq!(attributes[0].value, "test_v".into());
}

#[test]
#[allow(deprecated)]
fn versioned_tracer_options() {
let provider = TracerProvider::builder().build();
let tracer = provider.versioned_tracer(
"test_tracer",
Some(String::from("v1.2.3")),
Some(String::from("https://opentelemetry.io/schema/1.0.0")),
Some(vec![(KeyValue::new("test_k", "test_v"))]),
);
let instrumentation_library = tracer.instrumentation_library();
let attributes = &instrumentation_library.attributes;
assert_eq!(instrumentation_library.name, "test_tracer");
assert_eq!(instrumentation_library.version, Some("v1.2.3".into()));
assert_eq!(
instrumentation_library.schema_url,
Some("https://opentelemetry.io/schema/1.0.0".into())
);
assert_eq!(attributes.len(), 1);
assert_eq!(attributes[0].key, "test_k".into());
assert_eq!(attributes[0].value, "test_v".into());
}
}
19 changes: 13 additions & 6 deletions opentelemetry-sdk/src/trace/provider.rs
Original file line number Diff line number Diff line change
Expand Up @@ -136,12 +136,19 @@ impl opentelemetry::trace::TracerProvider for TracerProvider {
name
};

self.library_tracer(Arc::new(InstrumentationLibrary::new(
component_name,
version,
schema_url,
attributes,
)))
let mut builder = self.tracer_builder(component_name);

if let Some(v) = version {
builder = builder.with_version(v);
}
if let Some(s) = schema_url {
builder = builder.with_schema_url(s);
}
if let Some(a) = attributes {
builder = builder.with_attributes(a);
}

builder.build()
}

fn library_tracer(&self, library: Arc<InstrumentationLibrary>) -> Self::Tracer {
Expand Down
24 changes: 10 additions & 14 deletions opentelemetry-zipkin/src/exporter/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -151,13 +151,11 @@ impl ZipkinPipelineBuilder {
let mut provider_builder = TracerProvider::builder().with_simple_exporter(exporter);
provider_builder = provider_builder.with_config(config);
let provider = provider_builder.build();
let tracer = opentelemetry::trace::TracerProvider::versioned_tracer(
&provider,
"opentelemetry-zipkin",
Some(env!("CARGO_PKG_VERSION")),
Some(semcov::SCHEMA_URL),
None,
);
let tracer =
opentelemetry::trace::TracerProvider::tracer_builder(&provider, "opentelemetry-zipkin")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(semcov::SCHEMA_URL)
.build();
let _ = global::set_tracer_provider(provider);
Ok(tracer)
}
Expand All @@ -170,13 +168,11 @@ impl ZipkinPipelineBuilder {
let mut provider_builder = TracerProvider::builder().with_batch_exporter(exporter, runtime);
provider_builder = provider_builder.with_config(config);
let provider = provider_builder.build();
let tracer = opentelemetry::trace::TracerProvider::versioned_tracer(
&provider,
"opentelemetry-zipkin",
Some(env!("CARGO_PKG_VERSION")),
Some(semcov::SCHEMA_URL),
None,
);
let tracer =
opentelemetry::trace::TracerProvider::tracer_builder(&provider, "opentelemetry-zipkin")
.with_version(env!("CARGO_PKG_VERSION"))
.with_schema_url(semcov::SCHEMA_URL)
.build();
let _ = global::set_tracer_provider(provider);
Ok(tracer)
}
Expand Down
Loading

0 comments on commit 86a89d5

Please sign in to comment.