-
[dependencies]
log = "0.4.24"
metrics = "0.24"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter", "fmt"] }
tracing-opentelemetry = "0.28"
opentelemetry = "0.27"
opentelemetry_sdk = { version = "0.27", features = [
"rt-tokio",
"trace",
"metrics",
"logs",
] }
opentelemetry-otlp = { version = "0.27", features = [
"grpc-tonic",
"trace",
"metrics",
"logs",
] }
opentelemetry-semantic-conventions = "0.27" use opentelemetry::KeyValue;
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::trace::TracerProvider;
use opentelemetry_sdk::Resource;
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
use tracing::subscriber::set_global_default;
use tracing_subscriber::layer::SubscriberExt;
use tracing_subscriber::{fmt, EnvFilter, Registry};
pub fn setup_tracing(service_name: &str) -> Result<(), Box<dyn std::error::Error>> {
// 1. Configure the OTLP Exporter
let otlp_exporter = opentelemetry_otlp::SpanExporter::builder()
.with_tonic() // Using tonic (gRPC) - you can use http() for HTTP/JSON
.with_endpoint("http://localhost:4318"); // Default OTLP endpoint for gRPC
// 2. Create a new trace provider with the OTLP exporter and a resource describing your service.
let tracer_provider = TracerProvider::builder()
.with_resource(Resource::new(vec![
KeyValue::new(SERVICE_NAME, service_name),
// Add other resource attributes as needed (version, environment, etc.)
]))
// .with_simple_exporter(otlp_exporter.build()?)
.with_batch_exporter(otlp_exporter.build()?, opentelemetry_sdk::runtime::Tokio)
.build();
let tracer = tracer_provider.tracer(service_name);
^^^
no method named `tracer` found for struct `opentelemetry_sdk::trace::TracerProvider` in the current scope
items from traits can only be used if the trait is in scope
trait `TracerProvider` which provides `tracer` is implemented but not in scope; perhaps you want to import it: `use opentelemetry::trace::TracerProvider;
} Importing Relevant docs: https://docs.rs/opentelemetry_sdk/0.27.0/opentelemetry_sdk/trace/struct.TracerProvider.html#method.tracer |
Beta Was this translation helpful? Give feedback.
Answered by
lalitb
Feb 7, 2025
Replies: 1 comment
-
You need to include it as: use opentelemetry::trace::TracerProvider as _; |
Beta Was this translation helpful? Give feedback.
0 replies
Answer selected by
vabatta
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
You need to include it as:
use opentelemetry::trace::TracerProvider as _;