1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-08-07 17:03:01 +03:00

Upgrade opentelemetry to 0.21.0

This commit is contained in:
Quentin Gliech
2023-11-08 10:39:23 +01:00
parent f2286e37ef
commit 5ab0e880ff
10 changed files with 107 additions and 167 deletions

123
Cargo.lock generated
View File

@@ -1180,9 +1180,9 @@ dependencies = [
[[package]]
name = "crc-catalog"
version = "2.3.0"
version = "2.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4939f9ed1444bd8c896d37f3090012fa6e7834fe84ef8c9daa166109515732f9"
checksum = "19d374276b40fb8bbdee95aef7c7fa6b5316ec764510eb64b8dd0e2ed0d7e7f5"
[[package]]
name = "crc32fast"
@@ -2825,7 +2825,7 @@ dependencies = [
"mas-templates",
"mas-tower",
"oauth2-types",
"opentelemetry 0.20.0",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-jaeger",
"opentelemetry-otlp",
@@ -2833,6 +2833,7 @@ dependencies = [
"opentelemetry-semantic-conventions",
"opentelemetry-stdout",
"opentelemetry-zipkin",
"opentelemetry_sdk",
"prometheus",
"rand 0.8.5",
"rand_chacha 0.3.1",
@@ -2972,7 +2973,7 @@ dependencies = [
"mas-templates",
"mime",
"oauth2-types",
"opentelemetry 0.20.0",
"opentelemetry",
"opentelemetry-semantic-conventions",
"pbkdf2",
"psl",
@@ -3011,7 +3012,7 @@ dependencies = [
"hyper-rustls",
"mas-tower",
"once_cell",
"opentelemetry 0.20.0",
"opentelemetry",
"rustls",
"rustls-native-certs",
"serde",
@@ -3286,7 +3287,7 @@ dependencies = [
"mas-iana",
"mas-jose",
"oauth2-types",
"opentelemetry 0.20.0",
"opentelemetry",
"rand_core 0.6.4",
"serde",
"serde_json",
@@ -3343,7 +3344,7 @@ dependencies = [
"mas-storage-pg",
"mas-templates",
"mas-tower",
"opentelemetry 0.20.0",
"opentelemetry",
"rand 0.8.5",
"rand_chacha 0.3.1",
"serde",
@@ -3391,7 +3392,7 @@ name = "mas-tower"
version = "0.5.0"
dependencies = [
"http",
"opentelemetry 0.20.0",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-semantic-conventions",
"pin-project-lite",
@@ -3697,16 +3698,6 @@ version = "0.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf"
[[package]]
name = "opentelemetry"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9591d937bc0e6d2feb6f71a559540ab300ea49955229c347a517a28d27784c54"
dependencies = [
"opentelemetry_api",
"opentelemetry_sdk 0.20.0",
]
[[package]]
name = "opentelemetry"
version = "0.21.0"
@@ -3733,7 +3724,7 @@ dependencies = [
"bytes",
"http",
"hyper",
"opentelemetry 0.21.0",
"opentelemetry",
"tokio",
]
@@ -3747,10 +3738,10 @@ dependencies = [
"futures-core",
"futures-util",
"http",
"opentelemetry 0.21.0",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk 0.21.0",
"opentelemetry_sdk",
"thrift",
"tokio",
]
@@ -3764,10 +3755,10 @@ dependencies = [
"async-trait",
"futures-core",
"http",
"opentelemetry 0.21.0",
"opentelemetry",
"opentelemetry-proto",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk 0.21.0",
"opentelemetry_sdk",
"prost",
"thiserror",
"tokio",
@@ -3781,8 +3772,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6cd37c9261414d49ed7bd7689ffdf77a01c8c95bc29c35dfc8c7435713149baa"
dependencies = [
"once_cell",
"opentelemetry 0.21.0",
"opentelemetry_sdk 0.21.0",
"opentelemetry",
"opentelemetry_sdk",
"prometheus",
"protobuf",
]
@@ -3793,8 +3784,8 @@ version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a2e155ce5cc812ea3d1dffbd1539aed653de4bf4882d60e6e04dcf0901d674e1"
dependencies = [
"opentelemetry 0.21.0",
"opentelemetry_sdk 0.21.0",
"opentelemetry",
"opentelemetry_sdk",
"prost",
"tonic",
]
@@ -3805,7 +3796,7 @@ version = "0.13.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f5774f1ef1f982ef2a447f6ee04ec383981a3ab99c8e77a1a7b30182e65bbc84"
dependencies = [
"opentelemetry 0.21.0",
"opentelemetry",
]
[[package]]
@@ -3817,8 +3808,8 @@ dependencies = [
"async-trait",
"chrono",
"futures-util",
"opentelemetry 0.21.0",
"opentelemetry_sdk 0.21.0",
"opentelemetry",
"opentelemetry_sdk",
"ordered-float 4.1.1",
"serde",
"serde_json",
@@ -3834,54 +3825,16 @@ dependencies = [
"futures-core",
"http",
"once_cell",
"opentelemetry 0.21.0",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-semantic-conventions",
"opentelemetry_sdk 0.21.0",
"opentelemetry_sdk",
"serde",
"serde_json",
"thiserror",
"typed-builder",
]
[[package]]
name = "opentelemetry_api"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a81f725323db1b1206ca3da8bb19874bbd3f57c3bcd59471bfb04525b265b9b"
dependencies = [
"futures-channel",
"futures-util",
"indexmap 1.9.3",
"js-sys",
"once_cell",
"pin-project-lite",
"thiserror",
"urlencoding",
]
[[package]]
name = "opentelemetry_sdk"
version = "0.20.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa8e705a0612d48139799fcbaba0d4a90f06277153e43dd2bdc16c6f0edd8026"
dependencies = [
"async-trait",
"crossbeam-channel",
"futures-channel",
"futures-executor",
"futures-util",
"once_cell",
"opentelemetry_api",
"ordered-float 3.9.2",
"percent-encoding",
"rand 0.8.5",
"regex",
"thiserror",
"tokio",
"tokio-stream",
]
[[package]]
name = "opentelemetry_sdk"
version = "0.21.0"
@@ -3895,7 +3848,7 @@ dependencies = [
"futures-util",
"glob",
"once_cell",
"opentelemetry 0.21.0",
"opentelemetry",
"ordered-float 4.1.1",
"percent-encoding",
"rand 0.8.5",
@@ -3913,15 +3866,6 @@ dependencies = [
"num-traits",
]
[[package]]
name = "ordered-float"
version = "3.9.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f1e1c390732d15f1d48471625cd92d154e66db2c56645e29a9cd26f4699f72dc"
dependencies = [
"num-traits",
]
[[package]]
name = "ordered-float"
version = "4.1.1"
@@ -6131,17 +6075,6 @@ dependencies = [
"tracing-core",
]
[[package]]
name = "tracing-log"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3"
dependencies = [
"log",
"once_cell",
"tracing-core",
]
[[package]]
name = "tracing-opentelemetry"
version = "0.22.0"
@@ -6150,12 +6083,10 @@ checksum = "c67ac25c5407e7b961fafc6f7e9aa5958fd297aada2d20fa2ae1737357e55596"
dependencies = [
"js-sys",
"once_cell",
"opentelemetry 0.21.0",
"opentelemetry_sdk 0.21.0",
"smallvec",
"opentelemetry",
"opentelemetry_sdk",
"tracing",
"tracing-core",
"tracing-log 0.2.0",
"tracing-subscriber",
"web-time",
]
@@ -6175,7 +6106,7 @@ dependencies = [
"thread_local",
"tracing",
"tracing-core",
"tracing-log 0.1.4",
"tracing-log",
]
[[package]]

View File

@@ -63,6 +63,16 @@ version = "0.1.40"
[workspace.dependencies.tracing-subscriber]
version = "0.3.17"
# OpenTelemetry
[workspace.dependencies.opentelemetry]
version = "0.21.0"
features = ["trace", "metrics"]
[workspace.dependencies.opentelemetry-semantic-conventions]
version = "0.13.0"
[workspace.dependencies.tracing-opentelemetry]
version = "0.22.0"
default-features = false
# URL manipulation
[workspace.dependencies.url]
version = "2.4.1"

View File

@@ -33,14 +33,15 @@ zeroize = "1.6.0"
tracing.workspace = true
tracing-appender = "0.2.2"
tracing-subscriber = { workspace = true, features = ["env-filter"] }
tracing-opentelemetry = "0.22.0"
opentelemetry = { version = "0.20.0", features = ["trace", "metrics", "rt-tokio"] }
tracing-opentelemetry.workspace = true
opentelemetry.workspace = true
opentelemetry-http = { version = "0.10.0", features = ["tokio", "hyper"] }
opentelemetry-jaeger = { version = "0.20.0", features = ["rt-tokio", "collector_client"] }
opentelemetry-otlp = { version = "0.14.0", features = ["trace", "metrics"] }
opentelemetry-prometheus = "0.14.0"
opentelemetry-semantic-conventions = "0.13.0"
opentelemetry-semantic-conventions.workspace = true
opentelemetry-stdout = { version = "0.2.0", features = ["trace", "metrics"] }
opentelemetry_sdk = { version = "0.21.0", features = ["trace", "metrics", "rt-tokio"] }
opentelemetry-zipkin = { version = "0.19.0", default-features = false }
prometheus = "0.13.3"
sentry = { version = "0.31.7", default-features = false, features = ["backtrace", "contexts", "panic", "tower"] }

View File

@@ -109,7 +109,6 @@ async fn try_main() -> anyhow::Result<()> {
tracing_opentelemetry::layer()
.with_tracer(tracer)
.with_tracked_inactivity(false)
.with_exception_fields(true)
.with_filter(LevelFilter::INFO)
});

View File

@@ -20,10 +20,11 @@ use mas_config::{
JaegerExporterProtocolConfig, MetricsExporterConfig, Propagator, TelemetryConfig,
TracingExporterConfig,
};
use opentelemetry::{
global,
propagation::TextMapPropagator,
sdk::{
use opentelemetry::{global, propagation::TextMapPropagator, trace::TracerProvider as _};
use opentelemetry_jaeger::Propagator as JaegerPropagator;
use opentelemetry_otlp::MetricsExporterBuilder;
use opentelemetry_prometheus::PrometheusExporter;
use opentelemetry_sdk::{
self,
metrics::{
reader::{DefaultAggregationSelector, DefaultTemporalitySelector},
@@ -32,12 +33,7 @@ use opentelemetry::{
propagation::{BaggagePropagator, TextMapCompositePropagator, TraceContextPropagator},
trace::{Sampler, Tracer, TracerProvider},
Resource,
},
trace::TracerProvider as _,
};
use opentelemetry_jaeger::Propagator as JaegerPropagator;
use opentelemetry_otlp::MetricsExporterBuilder;
use opentelemetry_prometheus::PrometheusExporter;
use opentelemetry_semantic_conventions as semcov;
use opentelemetry_zipkin::{B3Encoding, Propagator as ZipkinPropagator};
use prometheus::Registry;
@@ -118,7 +114,7 @@ fn otlp_tracer(endpoint: Option<&Url>) -> anyhow::Result<Tracer> {
.tracing()
.with_exporter(exporter)
.with_trace_config(trace_config())
.install_batch(opentelemetry::runtime::Tokio)
.install_batch(opentelemetry_sdk::runtime::Tokio)
.context("Failed to configure OTLP trace exporter")?;
Ok(tracer)
@@ -128,10 +124,10 @@ fn jaeger_agent_tracer_provider(host: &str, port: u16) -> anyhow::Result<TracerP
let pipeline = opentelemetry_jaeger::new_agent_pipeline()
.with_service_name(env!("CARGO_PKG_NAME"))
.with_trace_config(trace_config())
.with_endpoint((host, port));
.with_endpoint(format!("{host}:{port}"));
let tracer_provider = pipeline
.build_batch(opentelemetry::runtime::Tokio)
.build_batch(opentelemetry_sdk::runtime::Tokio)
.context("Failed to configure Jaeger agent exporter")?;
Ok(tracer_provider)
@@ -158,7 +154,7 @@ async fn jaeger_collector_tracer_provider(
}
let tracer_provider = pipeline
.build_batch(opentelemetry::runtime::Tokio)
.build_batch(opentelemetry_sdk::runtime::Tokio)
.context("Failed to configure Jaeger collector exporter")?;
Ok(tracer_provider)
@@ -177,7 +173,7 @@ async fn zipkin_tracer(collector_endpoint: &Option<Url>) -> anyhow::Result<Trace
}
let tracer = pipeline
.install_batch(opentelemetry::runtime::Tokio)
.install_batch(opentelemetry_sdk::runtime::Tokio)
.context("Failed to configure Zipkin exporter")?;
Ok(tracer)
@@ -233,24 +229,20 @@ fn otlp_metric_reader(endpoint: Option<&url::Url>) -> anyhow::Result<PeriodicRea
Box::new(DefaultAggregationSelector::new()),
)?;
Ok(PeriodicReader::builder(exporter, opentelemetry::runtime::Tokio).build())
Ok(PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio).build())
}
fn stdout_metric_reader() -> PeriodicReader {
let exporter = opentelemetry_stdout::MetricsExporter::default();
PeriodicReader::builder(exporter, opentelemetry::runtime::Tokio).build()
PeriodicReader::builder(exporter, opentelemetry_sdk::runtime::Tokio).build()
}
pub fn prometheus_service<T>() -> tower::util::ServiceFn<
impl FnMut(T) -> std::future::Ready<Result<Response<Body>, std::convert::Infallible>> + Clone,
> {
type PromServiceFuture = std::future::Ready<Result<Response<Body>, std::convert::Infallible>>;
#[allow(clippy::needless_pass_by_value)]
fn prometheus_service_fn<T>(_req: T) -> PromServiceFuture {
use prometheus::{Encoder, TextEncoder};
if !PROMETHEUS_REGISTRY.initialized() {
tracing::warn!("A Prometheus resource was mounted on a listener, but the Prometheus exporter was not setup in the config");
}
tower::service_fn(move |_req| {
let response = if let Some(registry) = PROMETHEUS_REGISTRY.get() {
let mut buffer = vec![];
let encoder = TextEncoder::new();
@@ -273,7 +265,14 @@ pub fn prometheus_service<T>() -> tower::util::ServiceFn<
};
std::future::ready(Ok(response))
})
}
pub fn prometheus_service<T>() -> tower::util::ServiceFn<fn(T) -> PromServiceFuture> {
if !PROMETHEUS_REGISTRY.initialized() {
tracing::warn!("A Prometheus resource was mounted on a listener, but the Prometheus exporter was not setup in the config");
}
tower::service_fn(prometheus_service_fn as _)
}
fn prometheus_metric_reader() -> anyhow::Result<PrometheusExporter> {
@@ -309,8 +308,8 @@ fn init_meter(config: &MetricsExporterConfig) -> anyhow::Result<()> {
Ok(())
}
fn trace_config() -> sdk::trace::Config {
sdk::trace::config()
fn trace_config() -> opentelemetry_sdk::trace::Config {
opentelemetry_sdk::trace::config()
.with_resource(resource())
.with_sampler(Sampler::AlwaysOn)
}
@@ -324,10 +323,10 @@ fn resource() -> Resource {
let detected = Resource::from_detectors(
Duration::from_secs(5),
vec![
Box::new(sdk::resource::EnvResourceDetector::new()),
Box::new(sdk::resource::OsResourceDetector),
Box::new(sdk::resource::ProcessResourceDetector),
Box::new(sdk::resource::TelemetryResourceDetector),
Box::new(opentelemetry_sdk::resource::EnvResourceDetector::new()),
Box::new(opentelemetry_sdk::resource::OsResourceDetector),
Box::new(opentelemetry_sdk::resource::ProcessResourceDetector),
Box::new(opentelemetry_sdk::resource::TelemetryResourceDetector),
],
);

View File

@@ -14,8 +14,8 @@ futures-util = "0.3.28"
# Logging and tracing
tracing.workspace = true
opentelemetry = "0.20.0"
opentelemetry-semantic-conventions = "0.13.0"
opentelemetry.workspace = true
opentelemetry-semantic-conventions.workspace = true
# Error management
thiserror.workspace = true

View File

@@ -17,7 +17,7 @@ http-body = "0.4.5"
hyper = "0.14.27"
hyper-rustls = { version = "0.24.1", features = ["http1", "http2"], default-features = false, optional = true }
once_cell = "1.18.0"
opentelemetry = "0.20.0"
opentelemetry.workspace = true
rustls = { version = "0.21.8", optional = true }
rustls-native-certs = { version = "0.6.3", optional = true }
serde.workspace = true
@@ -28,7 +28,7 @@ tokio = { version = "1.33.0", features = ["sync", "parking_lot"], optional = tru
tower = { version = "0.4.13", features = [] }
tower-http = { version = "0.4.4", features = ["cors"] }
tracing.workspace = true
tracing-opentelemetry = "0.22.0"
tracing-opentelemetry.workspace = true
webpki-roots = { version = "0.25.2", optional = true }
mas-tower = { path = "../tower" }

View File

@@ -14,12 +14,12 @@ thiserror.workspace = true
futures-util = "0.3.28"
apalis-core = { version = "0.4.5", features = ["tokio-comp"] }
opentelemetry = "0.20.0"
opentelemetry.workspace = true
rand_core = "0.6.4"
serde.workspace = true
serde_json.workspace = true
tracing.workspace = true
tracing-opentelemetry = "0.22.0"
tracing-opentelemetry.workspace = true
url.workspace = true
ulid.workspace = true

View File

@@ -23,8 +23,8 @@ thiserror.workspace = true
tokio = { version = "1.33.0", features = ["rt"] }
tower = "0.4.13"
tracing.workspace = true
tracing-opentelemetry = "0.22.0"
opentelemetry = "0.20.0"
tracing-opentelemetry.workspace = true
opentelemetry.workspace = true
ulid.workspace = true
url.workspace = true
serde.workspace = true

View File

@@ -10,10 +10,10 @@ repository.workspace = true
[dependencies]
http.workspace = true
tracing.workspace = true
tracing-opentelemetry = "0.22.0"
tracing-opentelemetry.workspace = true
tower = "0.4.13"
tokio = { version = "1.33.0", features = ["time"] }
opentelemetry = { version = "0.20.0", features = ["metrics"] }
opentelemetry.workspace = true
opentelemetry-http = "0.10.0"
opentelemetry-semantic-conventions = "0.13.0"
opentelemetry-semantic-conventions.workspace = true
pin-project-lite = "0.2.13"