mirror of
https://github.com/rustfs/rustfs.git
synced 2026-08-22 04:16:38 +00:00
add prometheus
This commit is contained in:
Generated
+39
-2
@@ -4333,6 +4333,20 @@ dependencies = [
|
|||||||
"tracing",
|
"tracing",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "opentelemetry-prometheus"
|
||||||
|
version = "0.29.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3ac8c4fc7bd450bcb5b1cbc7325755e86d9f82f1fd80ad8b3441887b715f6a2d"
|
||||||
|
dependencies = [
|
||||||
|
"once_cell",
|
||||||
|
"opentelemetry",
|
||||||
|
"opentelemetry_sdk",
|
||||||
|
"prometheus",
|
||||||
|
"protobuf 2.28.0",
|
||||||
|
"tracing",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "opentelemetry-proto"
|
name = "opentelemetry-proto"
|
||||||
version = "0.29.0"
|
version = "0.29.0"
|
||||||
@@ -4961,6 +4975,21 @@ dependencies = [
|
|||||||
"version_check",
|
"version_check",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "prometheus"
|
||||||
|
version = "0.13.4"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "3d33c28a30771f7f96db69893f78b857f7450d7e0237e9c8fc6427a81bae7ed1"
|
||||||
|
dependencies = [
|
||||||
|
"cfg-if",
|
||||||
|
"fnv",
|
||||||
|
"lazy_static",
|
||||||
|
"memchr",
|
||||||
|
"parking_lot 0.12.3",
|
||||||
|
"protobuf 2.28.0",
|
||||||
|
"thiserror 1.0.69",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "prost"
|
name = "prost"
|
||||||
version = "0.13.5"
|
version = "0.13.5"
|
||||||
@@ -5013,6 +5042,12 @@ dependencies = [
|
|||||||
"prost",
|
"prost",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "protobuf"
|
||||||
|
version = "2.28.0"
|
||||||
|
source = "registry+https://github.com/rust-lang/crates.io-index"
|
||||||
|
checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94"
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "protobuf"
|
name = "protobuf"
|
||||||
version = "3.7.2"
|
version = "3.7.2"
|
||||||
@@ -5041,7 +5076,7 @@ dependencies = [
|
|||||||
"flatbuffers",
|
"flatbuffers",
|
||||||
"prost",
|
"prost",
|
||||||
"prost-build",
|
"prost-build",
|
||||||
"protobuf",
|
"protobuf 3.7.2",
|
||||||
"tokio",
|
"tokio",
|
||||||
"tonic",
|
"tonic",
|
||||||
"tonic-build",
|
"tonic-build",
|
||||||
@@ -5631,7 +5666,7 @@ dependencies = [
|
|||||||
"prost",
|
"prost",
|
||||||
"prost-build",
|
"prost-build",
|
||||||
"prost-types",
|
"prost-types",
|
||||||
"protobuf",
|
"protobuf 3.7.2",
|
||||||
"protos",
|
"protos",
|
||||||
"rmp-serde",
|
"rmp-serde",
|
||||||
"rust-embed",
|
"rust-embed",
|
||||||
@@ -5691,9 +5726,11 @@ dependencies = [
|
|||||||
"opentelemetry",
|
"opentelemetry",
|
||||||
"opentelemetry-appender-tracing",
|
"opentelemetry-appender-tracing",
|
||||||
"opentelemetry-otlp",
|
"opentelemetry-otlp",
|
||||||
|
"opentelemetry-prometheus",
|
||||||
"opentelemetry-semantic-conventions",
|
"opentelemetry-semantic-conventions",
|
||||||
"opentelemetry-stdout",
|
"opentelemetry-stdout",
|
||||||
"opentelemetry_sdk",
|
"opentelemetry_sdk",
|
||||||
|
"prometheus",
|
||||||
"rdkafka",
|
"rdkafka",
|
||||||
"reqwest",
|
"reqwest",
|
||||||
"serde",
|
"serde",
|
||||||
|
|||||||
@@ -66,8 +66,10 @@ opentelemetry-appender-tracing = { version = "0.29.1", features = ["experimental
|
|||||||
opentelemetry_sdk = { version = "0.29" }
|
opentelemetry_sdk = { version = "0.29" }
|
||||||
opentelemetry-stdout = { version = "0.29.0" }
|
opentelemetry-stdout = { version = "0.29.0" }
|
||||||
opentelemetry-otlp = { version = "0.29" }
|
opentelemetry-otlp = { version = "0.29" }
|
||||||
|
opentelemetry-prometheus = { version = "0.29" }
|
||||||
opentelemetry-semantic-conventions = { version = "0.29.0", features = ["semconv_experimental"] }
|
opentelemetry-semantic-conventions = { version = "0.29.0", features = ["semconv_experimental"] }
|
||||||
pin-project-lite = "0.2"
|
pin-project-lite = "0.2"
|
||||||
|
prometheus = "0.13.4"
|
||||||
# pin-utils = "0.1.0"
|
# pin-utils = "0.1.0"
|
||||||
prost = "0.13.4"
|
prost = "0.13.4"
|
||||||
prost-build = "0.13.4"
|
prost-build = "0.13.4"
|
||||||
|
|||||||
@@ -24,7 +24,9 @@ opentelemetry-appender-tracing = { workspace = true, features = ["experimental_u
|
|||||||
opentelemetry_sdk = { workspace = true, features = ["rt-tokio"] }
|
opentelemetry_sdk = { workspace = true, features = ["rt-tokio"] }
|
||||||
opentelemetry-stdout = { workspace = true }
|
opentelemetry-stdout = { workspace = true }
|
||||||
opentelemetry-otlp = { workspace = true, features = ["grpc-tonic", "gzip-tonic"] }
|
opentelemetry-otlp = { workspace = true, features = ["grpc-tonic", "gzip-tonic"] }
|
||||||
|
opentelemetry-prometheus = { workspace = true }
|
||||||
opentelemetry-semantic-conventions = { workspace = true, features = ["semconv_experimental"] }
|
opentelemetry-semantic-conventions = { workspace = true, features = ["semconv_experimental"] }
|
||||||
|
prometheus = { workspace = true }
|
||||||
serde = { workspace = true }
|
serde = { workspace = true }
|
||||||
tracing = { workspace = true, features = ["std", "attributes"] }
|
tracing = { workspace = true, features = ["std", "attributes"] }
|
||||||
tracing-core = { workspace = true }
|
tracing-core = { workspace = true }
|
||||||
|
|||||||
@@ -13,6 +13,7 @@ use opentelemetry_semantic_conventions::{
|
|||||||
attribute::{DEPLOYMENT_ENVIRONMENT_NAME, NETWORK_LOCAL_ADDRESS, SERVICE_NAME, SERVICE_VERSION},
|
attribute::{DEPLOYMENT_ENVIRONMENT_NAME, NETWORK_LOCAL_ADDRESS, SERVICE_NAME, SERVICE_VERSION},
|
||||||
SCHEMA_URL,
|
SCHEMA_URL,
|
||||||
};
|
};
|
||||||
|
use prometheus::Registry;
|
||||||
use std::io::IsTerminal;
|
use std::io::IsTerminal;
|
||||||
use tracing_error::ErrorLayer;
|
use tracing_error::ErrorLayer;
|
||||||
use tracing_opentelemetry::{MetricsLayer, OpenTelemetryLayer};
|
use tracing_opentelemetry::{MetricsLayer, OpenTelemetryLayer};
|
||||||
@@ -45,6 +46,13 @@ pub struct OtelGuard {
|
|||||||
tracer_provider: SdkTracerProvider,
|
tracer_provider: SdkTracerProvider,
|
||||||
meter_provider: SdkMeterProvider,
|
meter_provider: SdkMeterProvider,
|
||||||
logger_provider: SdkLoggerProvider,
|
logger_provider: SdkLoggerProvider,
|
||||||
|
registry: Registry,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl OtelGuard {
|
||||||
|
pub fn get_registry(&self) -> &Registry {
|
||||||
|
&self.registry
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl Drop for OtelGuard {
|
impl Drop for OtelGuard {
|
||||||
@@ -78,7 +86,7 @@ fn resource(config: &OtelConfig) -> Resource {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Initialize Meter Provider
|
/// Initialize Meter Provider
|
||||||
fn init_meter_provider(config: &OtelConfig) -> SdkMeterProvider {
|
fn init_meter_provider(config: &OtelConfig) -> (SdkMeterProvider, Registry) {
|
||||||
let mut builder = MeterProviderBuilder::default().with_resource(resource(config));
|
let mut builder = MeterProviderBuilder::default().with_resource(resource(config));
|
||||||
// If endpoint is empty, use stdout output
|
// If endpoint is empty, use stdout output
|
||||||
if config.endpoint.is_empty() {
|
if config.endpoint.is_empty() {
|
||||||
@@ -109,10 +117,15 @@ fn init_meter_provider(config: &OtelConfig) -> SdkMeterProvider {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
let registry = Registry::new();
|
||||||
|
let prometheus_exporter = opentelemetry_prometheus::exporter()
|
||||||
|
.with_registry(registry.clone())
|
||||||
|
.build()
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let meter_provider = builder.build();
|
let meter_provider = builder.with_reader(prometheus_exporter).build();
|
||||||
global::set_meter_provider(meter_provider.clone());
|
global::set_meter_provider(meter_provider.clone());
|
||||||
meter_provider
|
(meter_provider, registry)
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Initialize Tracer Provider
|
/// Initialize Tracer Provider
|
||||||
@@ -154,7 +167,7 @@ fn init_tracer_provider(config: &OtelConfig) -> SdkTracerProvider {
|
|||||||
/// Initialize Telemetry
|
/// Initialize Telemetry
|
||||||
pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
|
pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
|
||||||
let tracer_provider = init_tracer_provider(config);
|
let tracer_provider = init_tracer_provider(config);
|
||||||
let meter_provider = init_meter_provider(config);
|
let (meter_provider, prometheus_registry) = init_meter_provider(config);
|
||||||
let tracer = tracer_provider.tracer(config.service_name.clone());
|
let tracer = tracer_provider.tracer(config.service_name.clone());
|
||||||
|
|
||||||
// Initialize logger provider based on configuration
|
// Initialize logger provider based on configuration
|
||||||
@@ -229,5 +242,6 @@ pub fn init_telemetry(config: &OtelConfig) -> OtelGuard {
|
|||||||
tracer_provider,
|
tracer_provider,
|
||||||
meter_provider,
|
meter_provider,
|
||||||
logger_provider,
|
logger_provider,
|
||||||
|
registry: prometheus_registry,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user