opentelemetry 0.28
This commit is contained in:
parent
259ba2147e
commit
3bcb75fb59
4 changed files with 46 additions and 26 deletions
18
Cargo.toml
18
Cargo.toml
|
@ -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",
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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"));
|
||||
|
|
10
src/lib.rs
10
src/lib.rs
|
@ -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;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue