opentelemetry 0.28

This commit is contained in:
asonix 2025-03-25 16:17:49 -05:00
parent 259ba2147e
commit 3bcb75fb59
4 changed files with 46 additions and 26 deletions

View file

@ -11,11 +11,11 @@ rust-version = "1.82"
[[example]]
name = "client"
required-features = ["opentelemetry_0_27"]
required-features = ["opentelemetry_0_28"]
[[example]]
name = "server"
required-features = ["opentelemetry_0_27"]
required-features = ["opentelemetry_0_28"]
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[features]
@ -81,6 +81,10 @@ opentelemetry_0_27 = [
"opentelemetry_0_27_pkg",
"tracing-opentelemetry_0_28_pkg",
]
opentelemetry_0_28 = [
"opentelemetry_0_28_pkg",
"tracing-opentelemetry_0_29_pkg",
]
[dependencies]
actix-http = { version = "3.0.2", default-features = false }
@ -103,6 +107,7 @@ opentelemetry_0_24_pkg = { package = "opentelemetry", version = "0.24", optional
opentelemetry_0_25_pkg = { package = "opentelemetry", version = "0.25", optional = true }
opentelemetry_0_26_pkg = { package = "opentelemetry", version = "0.26", optional = true }
opentelemetry_0_27_pkg = { package = "opentelemetry", version = "0.27", optional = true }
opentelemetry_0_28_pkg = { package = "opentelemetry", version = "0.28", optional = true }
pin-project-lite = "0.2.7"
tracing = "0.1"
tracing-opentelemetry_0_12_pkg = { package = "tracing-opentelemetry", version = "0.12", optional = true }
@ -120,14 +125,15 @@ tracing-opentelemetry_0_25_pkg = { package = "tracing-opentelemetry", version =
tracing-opentelemetry_0_26_pkg = { package = "tracing-opentelemetry", version = "0.26", optional = true }
tracing-opentelemetry_0_27_pkg = { package = "tracing-opentelemetry", version = "0.27", optional = true }
tracing-opentelemetry_0_28_pkg = { package = "tracing-opentelemetry", version = "0.28", optional = true }
tracing-opentelemetry_0_29_pkg = { package = "tracing-opentelemetry", version = "0.29", optional = true }
[dev-dependencies]
actix-rt = "2.6"
actix-web = { version = "4.0.0", default-features = false }
opentelemetry-otlp = "0.27"
opentelemetry_0_27_pkg = { package = "opentelemetry", version = "0.27" }
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio"] }
tracing-actix-web = { version = "0.7.16", features = ["opentelemetry_0_27"] }
opentelemetry-otlp = { version = "0.28", features = ["grpc-tonic"] }
opentelemetry_0_28_pkg = { package = "opentelemetry", version = "0.28" }
opentelemetry_sdk = { version = "0.28", features = ["rt-tokio"] }
tracing-actix-web = { version = "0.7.16", features = ["opentelemetry_0_28"] }
tracing-subscriber = { version = "0.3", features = [
"ansi",
"env-filter",

View file

@ -5,11 +5,12 @@ use tracing::instrument::Instrument;
use tracing_awc::{root_span, Tracing};
use tracing_subscriber::{fmt::format::FmtSpan, layer::SubscriberExt, EnvFilter, Registry};
use opentelemetry_0_27_pkg as opentelemetry;
use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry;
use opentelemetry_0_28_pkg as opentelemetry;
use tracing_opentelemetry_0_29_pkg as tracing_opentelemetry;
use opentelemetry::{trace::TracerProvider, KeyValue};
use opentelemetry_sdk::{propagation::TraceContextPropagator, Resource};
use opentelemetry_otlp::SpanExporter;
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider, Resource};
async fn request(url: &str) -> Result<(), Box<dyn Error>> {
Client::builder()
@ -42,17 +43,18 @@ fn init_opentelemetry(url: &str) -> Result<(), Box<dyn Error>> {
let subscriber = Registry::default().with(env_filter).with(format_layer);
let exporter = opentelemetry_otlp::SpanExporter::builder()
let exporter = SpanExporter::builder()
.with_tonic()
.with_endpoint(url)
.build()?;
let tracer_provider = opentelemetry_sdk::trace::TracerProvider::builder()
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"client-demo",
)]))
.with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio)
let tracer_provider = SdkTracerProvider::builder()
.with_resource(
Resource::builder()
.with_attribute(KeyValue::new("service.name", "client-demo"))
.build(),
)
.with_batch_exporter(exporter)
.build();
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer_provider.tracer("client"));

View file

@ -4,11 +4,12 @@ use std::error::Error;
use tracing_actix_web::TracingLogger;
use tracing_subscriber::{fmt::format::FmtSpan, layer::SubscriberExt, EnvFilter, Registry};
use opentelemetry_0_27_pkg as opentelemetry;
use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry;
use opentelemetry_0_28_pkg as opentelemetry;
use tracing_opentelemetry_0_29_pkg as tracing_opentelemetry;
use opentelemetry::{trace::TracerProvider, KeyValue};
use opentelemetry_sdk::{propagation::TraceContextPropagator, Resource};
use opentelemetry_otlp::SpanExporter;
use opentelemetry_sdk::{propagation::TraceContextPropagator, trace::SdkTracerProvider, Resource};
#[tracing::instrument(name = "Index")]
async fn index() -> impl Responder {
@ -43,17 +44,18 @@ fn init_opentelemetry(url: &str) -> Result<(), Box<dyn Error>> {
let subscriber = Registry::default().with(env_filter).with(format_layer);
let exporter = opentelemetry_otlp::SpanExporter::builder()
let exporter = SpanExporter::builder()
.with_tonic()
.with_endpoint(url)
.build()?;
let tracer_provider = opentelemetry_sdk::trace::TracerProvider::builder()
.with_resource(Resource::new(vec![KeyValue::new(
"service.name",
"server-demo",
)]))
.with_batch_exporter(exporter, opentelemetry_sdk::runtime::Tokio)
let tracer_provider = SdkTracerProvider::builder()
.with_resource(
Resource::builder()
.with_attribute(KeyValue::new("service.name", "server-demo"))
.build(),
)
.with_batch_exporter(exporter)
.build();
let otel_layer = tracing_opentelemetry::layer().with_tracer(tracer_provider.tracer("server"));

View file

@ -40,6 +40,8 @@ use opentelemetry_0_25_pkg as opentelemetry;
use opentelemetry_0_26_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_27")]
use opentelemetry_0_27_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_28")]
use opentelemetry_0_28_pkg as opentelemetry;
#[cfg(feature = "opentelemetry_0_13")]
use tracing_opentelemetry_0_12_pkg as tracing_opentelemetry;
@ -71,6 +73,8 @@ use tracing_opentelemetry_0_26_pkg as tracing_opentelemetry;
use tracing_opentelemetry_0_27_pkg as tracing_opentelemetry;
#[cfg(feature = "opentelemetry_0_27")]
use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry;
#[cfg(feature = "opentelemetry_0_28")]
use tracing_opentelemetry_0_29_pkg as tracing_opentelemetry;
#[cfg(any(
feature = "opentelemetry_0_13",
@ -88,6 +92,7 @@ use tracing_opentelemetry_0_28_pkg as tracing_opentelemetry;
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
))]
pub fn root_span() -> Span {
let span = tracing::info_span!("Root span", trace_id = tracing::field::Empty,);
@ -106,6 +111,7 @@ pub fn root_span() -> Span {
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
)))]
let trace_id = span.context().span().span_context().trace_id().to_hex();
@ -121,6 +127,7 @@ pub fn root_span() -> Span {
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
))]
let trace_id = {
let id = span.context().span().span_context().trace_id();
@ -362,6 +369,7 @@ where
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
))]
struct RequestHeaderCarrier<'a> {
#[allow(dead_code)]
@ -384,6 +392,7 @@ struct RequestHeaderCarrier<'a> {
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
))]
impl<'a> opentelemetry::propagation::Injector for RequestHeaderCarrier<'a> {
fn set(&mut self, key: &str, value: String) {
@ -427,6 +436,7 @@ fn record_otel(_headers: &mut HeaderMap, _span: &Span) {
feature = "opentelemetry_0_25",
feature = "opentelemetry_0_26",
feature = "opentelemetry_0_27",
feature = "opentelemetry_0_28",
))]
{
let span = _span;