Skip to content

Commit

Permalink
update opentelemetry deps and support otlp
Browse files Browse the repository at this point in the history
  • Loading branch information
yjhmelody committed Jun 24, 2024
1 parent ac19fef commit dddc3de
Show file tree
Hide file tree
Showing 3 changed files with 98 additions and 28 deletions.
98 changes: 74 additions & 24 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

9 changes: 5 additions & 4 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -31,10 +31,11 @@ http-body-util = "0.1"
hyper = "1.3"
jsonrpsee = { version = "0.23", features = ["full"] }
moka = { version = "0.12", features = ["future"] }
opentelemetry = { version = "0.21.0" }
opentelemetry-datadog = { version = "0.9.0", features = ["reqwest-client"] }
opentelemetry-jaeger = { version = "0.20.0", features = ["rt-tokio"] }
opentelemetry_sdk = { version = "0.21.1", features = ["rt-tokio", "trace"] }
opentelemetry = { version = "0.23" }
opentelemetry-datadog = { version = "0.11", features = ["reqwest-client"] }
opentelemetry-jaeger = { version = "0.22", features = ["rt-tokio"] }
opentelemetry-otlp = { version = "0.16" }
opentelemetry_sdk = { version = "0.23", features = ["rt-tokio", "trace"] }
rand = "0.8.5"
regex = "1.10.4"
serde = "1.0.152"
Expand Down
19 changes: 19 additions & 0 deletions src/extensions/telemetry/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::env;

use async_trait::async_trait;
use opentelemetry::{global, trace::TraceError};
use opentelemetry_otlp::WithExportConfig;
use opentelemetry_sdk::trace::Tracer;
use serde::Deserialize;

Expand All @@ -11,6 +12,8 @@ use super::{Extension, ExtensionRegistry};
#[serde(rename_all = "snake_case")]
pub enum TelemetryProvider {
None,
#[serde(rename = "otlp")]
OTLP,
Datadog,
Jaeger,
}
Expand Down Expand Up @@ -58,7 +61,23 @@ pub fn setup_telemetry(options: &TelemetryConfig) -> Result<Option<Tracer>, Trac
let service_name = options.service_name.clone().unwrap_or_else(|| "subway".into());

let tracer = match options.provider {
TelemetryProvider::OTLP => {
let tracer = opentelemetry_otlp::new_pipeline().tracing();

let mut exporter = opentelemetry_otlp::new_exporter().tonic();

if let Some(ref agent_endpoint) = options.agent_endpoint {
exporter = exporter.with_endpoint(agent_endpoint.clone());
}

let tracer = tracer
.with_exporter(exporter)
.install_batch(opentelemetry_sdk::runtime::Tokio)?;

Some(tracer)
}
TelemetryProvider::Jaeger => {
#[allow(deprecated)]
let mut tracer = opentelemetry_jaeger::new_agent_pipeline().with_service_name(service_name);

if let Some(ref agent_endpoint) = options.agent_endpoint {
Expand Down

0 comments on commit dddc3de

Please sign in to comment.