[package] name = "platform-observability" version = "0.1.0" edition = "2021" rust-version = "1.75" authors = ["Provctl Contributors"] license = "MIT" repository = "https://github.com/provctl" description = "Multi-backend observability framework with logging, metrics, tracing, and health checks" documentation = "https://docs.rs/observability" keywords = ["observability", "logging", "metrics", "tracing", "health"] categories = ["development-tools::debugging", "development-tools::profiling"] [lib] name = "observability" [dependencies] # Logging (always included) tracing = "0.1" tracing-subscriber = { version = "0.3", features = ["json", "env-filter", "fmt"] } # Metrics (optional but default) metrics = { version = "0.22", optional = true } metrics-exporter-prometheus = { version = "0.13", optional = true } # OpenTelemetry (optional) opentelemetry = { version = "0.24", features = ["metrics", "logs"], optional = true } opentelemetry_sdk = { version = "0.24", features = ["rt-tokio"], optional = true } opentelemetry-otlp = { version = "0.17", features = ["metrics", "logs", "grpc-tonic"], optional = true } tracing-opentelemetry = { version = "0.25", optional = true } opentelemetry-appender-tracing = { version = "0.5", optional = true } # Health/HTTP axum = { version = "0.7", optional = true } tokio = { version = "1", features = ["sync"], optional = true } # Core serde = { version = "1", features = ["derive"] } serde_json = "1.0" serde_yaml = "0.9" toml = "0.9" thiserror = "2" anyhow = "1" # Utilities chrono = { version = "0.4", features = ["serde"] } parking_lot = "0.12" lazy_static = "1.4" [dev-dependencies] tokio = { version = "1", features = ["full"] } tempfile = "3" [features] default = ["logging", "metrics-prometheus", "health"] # Logging (always included in default) logging = [] # Metrics exporters metrics-prometheus = ["dep:metrics", "dep:metrics-exporter-prometheus"] metrics-otlp = ["dep:metrics", "dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp"] # Tracing (distributed) tracing-otlp = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry", "dep:opentelemetry-appender-tracing"] # Health check endpoints health = ["dep:axum", "dep:tokio"] # Dashboard generation dashboards = [] # OpenTelemetry core (required for otlp features) opentelemetry = ["dep:opentelemetry", "dep:opentelemetry_sdk"] # All features full = ["logging", "metrics-prometheus", "metrics-otlp", "tracing-otlp", "health", "dashboards"]