diff --git a/Cargo.lock b/Cargo.lock index 0be24b9c..156acf75 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2496,6 +2496,20 @@ dependencies = [ "yansi", ] +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if 1.0.0", + "fnv", + "lazy_static", + "memchr", + "parking_lot", + "thiserror", +] + [[package]] name = "querystring" version = "1.1.0" @@ -2843,7 +2857,7 @@ dependencies = [ [[package]] name = "revolt-bonfire" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-std", "async-tungstenite", @@ -2860,7 +2874,7 @@ dependencies = [ [[package]] name = "revolt-database" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-recursion", "async-std", @@ -2891,7 +2905,7 @@ dependencies = [ [[package]] name = "revolt-delta" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-channel", "async-std", @@ -2920,6 +2934,7 @@ dependencies = [ "rocket", "rocket_authifier", "rocket_empty", + "rocket_prometheus", "schemars", "serde", "serde_json", @@ -2931,7 +2946,7 @@ dependencies = [ [[package]] name = "revolt-models" -version = "0.6.4" +version = "0.6.5" dependencies = [ "revolt-permissions", "revolt_optional_struct", @@ -2942,7 +2957,7 @@ dependencies = [ [[package]] name = "revolt-permissions" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-std", "async-trait", @@ -2956,7 +2971,7 @@ dependencies = [ [[package]] name = "revolt-presence" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-std", "log", @@ -2967,7 +2982,7 @@ dependencies = [ [[package]] name = "revolt-quark" -version = "0.6.4" +version = "0.6.5" dependencies = [ "async-lock", "async-recursion", @@ -3020,7 +3035,7 @@ dependencies = [ [[package]] name = "revolt-result" -version = "0.6.4" +version = "0.6.5" dependencies = [ "revolt_okapi", "revolt_rocket_okapi", @@ -3243,6 +3258,16 @@ dependencies = [ "uncased", ] +[[package]] +name = "rocket_prometheus" +version = "0.10.0-rc.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3e70efcf6b0234723d0d295b95d64283ed02bb98a8a3f0c8c7ebb5b8da69165" +dependencies = [ + "prometheus", + "rocket", +] + [[package]] name = "rust-argon2" version = "1.0.0" diff --git a/crates/bonfire/Cargo.toml b/crates/bonfire/Cargo.toml index 45e58164..baff48b8 100644 --- a/crates/bonfire/Cargo.toml +++ b/crates/bonfire/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-bonfire" -version = "0.6.4" +version = "0.6.5" license = "AGPL-3.0-or-later" edition = "2021" diff --git a/crates/core/database/Cargo.toml b/crates/core/database/Cargo.toml index 65d430ad..791de541 100644 --- a/crates/core/database/Cargo.toml +++ b/crates/core/database/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-database" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later" authors = [ "Paul Makles " ] @@ -22,10 +22,10 @@ default = [ "mongodb", "async-std-runtime" ] [dependencies] # Core -revolt-result = { version = "0.6.4", path = "../result" } -revolt-models = { version = "0.6.4", path = "../models" } -revolt-presence = { version = "0.6.4", path = "../presence" } -revolt-permissions = { version = "0.6.4", path = "../permissions", features = [ "serde", "bson" ] } +revolt-result = { version = "0.6.5", path = "../result" } +revolt-models = { version = "0.6.5", path = "../models" } +revolt-presence = { version = "0.6.5", path = "../presence" } +revolt-permissions = { version = "0.6.5", path = "../permissions", features = [ "serde", "bson" ] } # Utility log = "0.4" diff --git a/crates/core/models/Cargo.toml b/crates/core/models/Cargo.toml index 7eee19c9..35717d32 100644 --- a/crates/core/models/Cargo.toml +++ b/crates/core/models/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-models" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later" authors = [ "Paul Makles " ] @@ -18,7 +18,7 @@ default = [ "serde", "partials" ] [dependencies] # Core -revolt-permissions = { version = "0.6.4", path = "../permissions" } +revolt-permissions = { version = "0.6.5", path = "../permissions" } # Serialisation revolt_optional_struct = { version = "0.2.0", optional = true } diff --git a/crates/core/permissions/Cargo.toml b/crates/core/permissions/Cargo.toml index b73a8e0d..637fb052 100644 --- a/crates/core/permissions/Cargo.toml +++ b/crates/core/permissions/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-permissions" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later" authors = [ "Paul Makles " ] diff --git a/crates/core/presence/Cargo.toml b/crates/core/presence/Cargo.toml index 5945e4fa..a85425c2 100644 --- a/crates/core/presence/Cargo.toml +++ b/crates/core/presence/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-presence" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later" authors = [ "Paul Makles " ] diff --git a/crates/core/result/Cargo.toml b/crates/core/result/Cargo.toml index cec88b98..cf99e30e 100644 --- a/crates/core/result/Cargo.toml +++ b/crates/core/result/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-result" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later" authors = [ "Paul Makles " ] diff --git a/crates/delta/Cargo.toml b/crates/delta/Cargo.toml index e23bf91a..668cba53 100644 --- a/crates/delta/Cargo.toml +++ b/crates/delta/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-delta" -version = "0.6.4" +version = "0.6.5" license = "AGPL-3.0-or-later" authors = ["Paul Makles "] edition = "2018" @@ -47,6 +47,7 @@ lettre = "0.10.0-alpha.4" rocket = { version = "0.5.0-rc.2", default-features = false, features = ["json"] } rocket_empty = { version = "0.1.1", features = ["schema"] } rocket_authifier = { version = "1.0.7" } +rocket_prometheus = "0.10.0-rc.3" # spec generation schemars = "0.8.8" diff --git a/crates/delta/src/main.rs b/crates/delta/src/main.rs index 01f73535..35654a04 100644 --- a/crates/delta/src/main.rs +++ b/crates/delta/src/main.rs @@ -8,6 +8,7 @@ extern crate serde_json; pub mod routes; pub mod util; +use rocket_prometheus::PrometheusMetrics; use std::net::Ipv4Addr; use async_std::channel::unbounded; @@ -65,7 +66,11 @@ async fn rocket() -> _ { // Configure Rocket let rocket = rocket::build(); + let prometheus = PrometheusMetrics::new(); + routes::mount(rocket) + .attach(prometheus.clone()) + .mount("/metrics", prometheus) .mount("/", revolt_quark::web::cors::catch_all_options_routes()) .mount("/", revolt_quark::web::ratelimiter::routes()) .mount("/swagger/", revolt_quark::web::swagger::routes()) diff --git a/crates/quark/Cargo.toml b/crates/quark/Cargo.toml index a3db0472..3efde8e6 100644 --- a/crates/quark/Cargo.toml +++ b/crates/quark/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "revolt-quark" -version = "0.6.4" +version = "0.6.5" edition = "2021" license = "AGPL-3.0-or-later"