feat(obs): unify metrics initialization and fix exporter move error (#851)

* feat(obs): unify metrics initialization and fix exporter move error

- Fix Rust E0382 (use after move) by removing duplicate MetricExporter consumption.
- Consolidate MeterProvider construction into single Recorder builder path.
- Remove redundant Recorder::builder(...).install_global() call.
- Ensure PeriodicReader setup is performed only once (HTTP + optional stdout).
- Set global meter provider and metrics recorder exactly once.
- Preserve existing behavior for stdout/file vs HTTP modes.
- Minor cleanup: consistent resource reuse and interval handling.

* update telemetry.rs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* fix

* fix

* fix

* fix: modify logger level from error to event

---------

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
This commit is contained in:
houseme
2025-11-14 00:50:07 +08:00
committed by GitHub
parent 93090adf7c
commit 51584986e1
12 changed files with 502 additions and 217 deletions
Generated
+13 -74
View File
@@ -2980,27 +2980,6 @@ dependencies = [
"syn 2.0.110",
]
[[package]]
name = "derive_more"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "093242cf7570c207c83073cf82f79706fe7b8317e98620a47d5be7c3d8497678"
dependencies = [
"derive_more-impl",
]
[[package]]
name = "derive_more-impl"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bda628edc44c4bb645fbe0f758797143e4e07926f7ebf4e9bdfbd3d2ce621df3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.110",
"unicode-xid",
]
[[package]]
name = "diff"
version = "0.1.13"
@@ -5080,18 +5059,6 @@ dependencies = [
"portable-atomic",
]
[[package]]
name = "metrics-exporter-opentelemetry"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85831c590c74bde49aac410386630e60f216a7d9473726708da160c5303ef803"
dependencies = [
"derive_more",
"metrics",
"opentelemetry 0.30.0",
"opentelemetry_sdk 0.30.0",
]
[[package]]
name = "mimalloc"
version = "0.1.48"
@@ -5555,20 +5522,6 @@ version = "0.1.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e"
[[package]]
name = "opentelemetry"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aaf416e4cb72756655126f7dd7bb0af49c674f4c1b9903e80c009e0c37e552e6"
dependencies = [
"futures-core",
"futures-sink",
"js-sys",
"pin-project-lite",
"thiserror 2.0.17",
"tracing",
]
[[package]]
name = "opentelemetry"
version = "0.31.0"
@@ -5589,7 +5542,7 @@ version = "0.31.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ef6a1ac5ca3accf562b8c306fa8483c85f4390f768185ab775f242f7fe8fdcc2"
dependencies = [
"opentelemetry 0.31.0",
"opentelemetry",
"tracing",
"tracing-core",
"tracing-log",
@@ -5606,7 +5559,7 @@ dependencies = [
"async-trait",
"bytes",
"http 1.3.1",
"opentelemetry 0.31.0",
"opentelemetry",
"reqwest",
]
@@ -5617,10 +5570,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf"
dependencies = [
"http 1.3.1",
"opentelemetry 0.31.0",
"opentelemetry",
"opentelemetry-http",
"opentelemetry-proto",
"opentelemetry_sdk 0.31.0",
"opentelemetry_sdk",
"prost 0.14.1",
"reqwest",
"thiserror 2.0.17",
@@ -5634,8 +5587,8 @@ version = "0.31.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f"
dependencies = [
"opentelemetry 0.31.0",
"opentelemetry_sdk 0.31.0",
"opentelemetry",
"opentelemetry_sdk",
"prost 0.14.1",
"tonic",
"tonic-prost",
@@ -5654,21 +5607,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bc8887887e169414f637b18751487cce4e095be787d23fad13c454e2fb1b3811"
dependencies = [
"chrono",
"opentelemetry 0.31.0",
"opentelemetry_sdk 0.31.0",
]
[[package]]
name = "opentelemetry_sdk"
version = "0.30.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "11f644aa9e5e31d11896e024305d7e3c98a88884d9f8919dbf37a9991bc47a4b"
dependencies = [
"futures-channel",
"futures-executor",
"futures-util",
"opentelemetry 0.30.0",
"thiserror 2.0.17",
"opentelemetry",
"opentelemetry_sdk",
]
[[package]]
@@ -5680,7 +5620,7 @@ dependencies = [
"futures-channel",
"futures-executor",
"futures-util",
"opentelemetry 0.31.0",
"opentelemetry",
"percent-encoding",
"rand 0.9.2",
"thiserror 2.0.17",
@@ -7430,15 +7370,14 @@ version = "0.0.5"
dependencies = [
"flexi_logger",
"metrics",
"metrics-exporter-opentelemetry",
"nu-ansi-term",
"nvml-wrapper",
"opentelemetry 0.31.0",
"opentelemetry",
"opentelemetry-appender-tracing",
"opentelemetry-otlp",
"opentelemetry-semantic-conventions",
"opentelemetry-stdout",
"opentelemetry_sdk 0.31.0",
"opentelemetry_sdk",
"rustfs-config",
"rustfs-utils",
"serde",
@@ -9424,8 +9363,8 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1e6e5658463dd88089aba75c7791e1d3120633b1bfde22478b28f625a9bb1b8e"
dependencies = [
"js-sys",
"opentelemetry 0.31.0",
"opentelemetry_sdk 0.31.0",
"opentelemetry",
"opentelemetry_sdk",
"rustversion",
"smallvec",
"thiserror 2.0.17",