[package] name = "rtx-monitoring" version = "1.0.0" edition.workspace = true rust-version = "1.92" authors.workspace = true license.workspace = true repository.workspace = true description = "Observability and metrics collection for RustyTorch production deployments" [dependencies] # Essential dependencies anyhow = { workspace = true } thiserror = { workspace = true } tokio = { workspace = true, features = ["full", "rt-multi-thread"] } async-trait = { workspace = true } # Serialization serde = { workspace = true, features = ["derive"] } serde_json = { workspace = true } # Metrics collection - Prometheus prometheus = { version = "0.13", features = ["process"] } prometheus-hyper = { version = "0.1" } # Metrics collection - OpenTelemetry (temporarily commented out due to version conflicts) # opentelemetry = { version = "0.21", features = ["rt-tokio"], optional = true } # opentelemetry-prometheus = { version = "0.14", optional = true } # opentelemetry-jaeger = { version = "0.20", optional = true } # opentelemetry-otlp = { version = "0.14", optional = true } # opentelemetry_sdk = { version = "0.21", features = ["rt-tokio"], optional = true } # opentelemetry-semantic-conventions = { version = "0.13", optional = true } # Tracing integration tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } # tracing-opentelemetry = { version = "0.22", optional = true } tracing-appender = "0.2" # HTTP server for metrics endpoint axum = "0.7" hyper = "1.0" tower = "0.4" tower-http = { version = "0.5", features = ["cors", "trace"] } # Time handling chrono = { workspace = true, features = ["serde"] } # System metrics sysinfo = { version = "0.30", optional = true } # Health checking uuid = { workspace = true, features = ["v4", "serde"] } # Concurrent data structures dashmap = { workspace = true } parking_lot = { workspace = true } # Configuration config = { workspace = true } # Alerting lettre = { version = "0.11", optional = true, features = ["tokio1", "tokio1-native-tls"] } # Database for storing metrics sqlx = { workspace = true, features = ["runtime-tokio-rustls", "postgres", "sqlite", "chrono"], optional = true } # Linux-only system metrics (procfs is not available on macOS/Windows) [target.'cfg(target_os = "linux")'.dependencies] procfs = { version = "0.16", optional = true } [dev-dependencies] tokio-test = { workspace = true } tempfile = { workspace = true } criterion = { workspace = true, features = ["html_reports"] } proptest = { workspace = true } test-log = "0.2" [features] default = ["health-checks", "system-metrics"] # prometheus is now a required dependency, not optional # OpenTelemetry temporarily disabled due to version conflicts # opentelemetry = ["dep:opentelemetry", "dep:opentelemetry-prometheus", "dep:opentelemetry-jaeger", "dep:opentelemetry-otlp", "dep:opentelemetry_sdk", "dep:opentelemetry-semantic-conventions", "dep:tracing-opentelemetry"] health-checks = [] system-metrics = ["dep:sysinfo", "dep:procfs"] alerting = ["dep:lettre"] persistence = ["dep:sqlx"] [lints] workspace = true