Expand description
§embeddenator-obs
Observability: metrics, logging, tracing, and telemetry for Embeddenator.
Extracted from embeddenator core as part of Phase 2A component decomposition.
§Features
This crate provides comprehensive observability infrastructure:
- Metrics: Lock-free atomic counters for performance tracking
- Logging: Structured logging with environment-based filtering
- Tracing: Span instrumentation for distributed tracing
- Telemetry: Aggregation and export of observability data
- Hi-Res Timing: Picosecond-scale timing for performance analysis
- Test Metrics: Comprehensive testing/benchmarking utilities
§Feature Flags
metrics(default): Enable atomic performance counterstracing: Enable span instrumentation and distributed tracinglogging: Enable structured logging (implies tracing)telemetry: Enable telemetry aggregation and exportprometheus: Enable Prometheus metrics export formatopentelemetry: Enable OpenTelemetry distributed tracingstreaming: Enable real-time metric streaming with callbacksadvanced-stats: Enable advanced statistical analysis (percentiles, std dev)full: Enable all features
§Quick Start
use embeddenator_obs::{init_tracing, TestMetrics};
// Initialize at startup
init_tracing();
// Track performance in tests
let mut metrics = TestMetrics::new("operation");
metrics.start_timing();
// ... perform work ...
metrics.stop_timing();
println!("{}", metrics.summary());§Metrics Usage
use embeddenator_obs::metrics;
use std::time::Duration;
// Increment counters
metrics().inc_sub_cache_hit();
metrics().inc_sub_cache_miss();
// Record durations
metrics().record_retrieval_query(Duration::from_micros(1500));
// Get snapshot
let snapshot = metrics().snapshot();
println!("Cache hits: {}", snapshot.sub_cache_hits);§Tracing Usage
ⓘ
use embeddenator_obs::create_span;
let _span = create_span("query_operation", &[("dim", "768")]);
// Work happens here, timing is automatic§Architecture
See ADR-016 for component decomposition rationale.
Re-exports§
pub use obs::create_span;pub use obs::init_tracing;pub use obs::metrics;pub use obs::metrics;pub use obs::EventLevel;pub use obs::HiResMetrics;pub use obs::HiResTimer;pub use obs::HiResTimestamp;pub use obs::MetricEvent;pub use obs::MetricStream;pub use obs::Metrics;pub use obs::MetricsSnapshot;pub use obs::OperationStats;pub use obs::OtelExporter;pub use obs::OtelSpan;pub use obs::PrometheusExporter;pub use obs::SpanGuard;pub use obs::SpanKind;pub use obs::SpanStatus;pub use obs::Telemetry;pub use obs::TelemetryConfig;pub use obs::TelemetrySnapshot;pub use obs::TestMetrics;pub use obs::ThresholdAlert;pub use obs::TimingStats;pub use obs::*;