SZ-ORM 可观测性模块
提供 Prometheus exporter、OTLP exporter、SLO 燃烧率监控等能力,
与 sz-orm-tracing 配合形成完整的可观测性闭环。
核心能力
1. MetricsRegistry(默认启用)
统一的指标注册中心,支持 Counter / Gauge / Histogram 三种类型,
内置线程安全(RwLock),可通过 render() 输出 Prometheus 文本格式。
2. Prometheus exporter(feature = "prometheus")
在指定端口暴露 /metrics HTTP 端点,供 Prometheus 拉取。
3. OTLP exporter(feature = "otlp")
通过 OpenTelemetry OTLP 协议将 traces 导出到 Collector。
4. SLO 燃烧率
基于 5m / 1h 两个窗口计算 SLO 燃烧率,支持多窗口告警。
快速入门
use sz_orm_observability::{MetricsRegistry, MetricKind};
use std::time::Duration;
// 创建指标注册中心
let registry = MetricsRegistry::new();
// 注册指标
let counter = registry.register_counter("sz_orm_pool_acquires_total", "Total pool acquire calls");
let gauge = registry.register_gauge("sz_orm_pool_active_connections", "Current active connections");
let histogram = registry.register_histogram(
"sz_orm_query_duration_seconds",
"Query duration in seconds",
vec![0.001, 0.01, 0.1, 1.0, 10.0],
);
// 更新指标
counter.inc();
gauge.set(5.0);
histogram.observe(0.025);
// 输出 Prometheus 文本格式
let output = registry.render();
println!("{}", output);