[package] name = "metrics-aggregator" version.workspace = true edition.workspace = true authors.workspace = true description = "Unified observability aggregator: scrapes metrics, forwards traces, collects logs" repository.workspace = true readme.workspace = true homepage.workspace = true license.workspace = true keywords.workspace = true categories.workspace = true documentation.workspace = true [[bin]] name = "metrics-aggregator" path = "src/main.rs" [dependencies] tokio = { workspace = true, features = ["full"] } config = { workspace = true } tracing = { workspace = true } tracing-subscriber = { workspace = true, features = ["env-filter", "json"] } observability = { workspace = true } anyhow = { workspace = true } clap = { workspace = true, features = ["derive", "env"] } serde_json = { workspace = true } chrono = { workspace = true, features = ["serde"] } serde = { workspace = true, features = ["derive"] } # HTTP server actix-web = "4.13.0" actix-rt = "2.11.0" # HTTP client for scraping (uses awc = actix-web client, no extra TLS deps) awc = { workspace = true } # HTTP client for Loki (reqwest is Send+Sync, unlike awc::Client) reqwest = { workspace = true, features = ["json"] } # Metrics metrics = { workspace = true } metrics-exporter-prometheus = { version = "0.18", default-features = false, features = ["http-listener", "tokio"] } # Observability opentelemetry = { workspace = true } opentelemetry_sdk = { workspace = true } opentelemetry-otlp = { version = "0.31.0", default-features = false, features = ["http-proto", "tokio", "trace", "tonic"] } tracing-opentelemetry = "0.32.1" tokio-util = { workspace = true } tokio-stream = { workspace = true } futures = { workspace = true } url = { workspace = true } tower = { workspace = true } [lints] workspace = true