From 6615e05196b75430df97b15171b9de0298cd0cb1 Mon Sep 17 00:00:00 2001 From: jude Date: Sat, 21 Oct 2023 21:33:50 +0100 Subject: [PATCH] Adding metric support --- Cargo.lock | 22 ++++++++++++++++++++++ Cargo.toml | 1 + src/cmds/play.rs | 5 +++++ src/event_handlers.rs | 7 +++---- src/main.rs | 2 ++ src/metrics.rs | 7 +++++++ 6 files changed, 40 insertions(+), 4 deletions(-) create mode 100644 src/metrics.rs diff --git a/Cargo.lock b/Cargo.lock index 2abd566..bd6e93b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1549,6 +1549,27 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "prometheus" +version = "0.13.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "449811d15fbdf5ceb5c1144416066429cf82316e2ec8ce0c1f6f8a02e7bbcf8c" +dependencies = [ + "cfg-if", + "fnv", + "lazy_static", + "memchr", + "parking_lot 0.12.1", + "protobuf", + "thiserror", +] + +[[package]] +name = "protobuf" +version = "2.28.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" + [[package]] name = "quote" version = "1.0.29" @@ -2137,6 +2158,7 @@ dependencies = [ "lazy_static", "log", "poise", + "prometheus", "regex", "reqwest", "serde", diff --git a/Cargo.toml b/Cargo.toml index a289d43..36ec5a9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,6 +20,7 @@ serde_json = "1.0" dashmap = "5.3" serde = "1.0" dotenv = "0.15.0" +prometheus = { version = "0.13.3", optional = true } [patch."https://github.com/serenity-rs/serenity"] serenity = { version = "0.11.6" } diff --git a/src/cmds/play.rs b/src/cmds/play.rs index fd800bf..ad3afc8 100644 --- a/src/cmds/play.rs +++ b/src/cmds/play.rs @@ -5,6 +5,8 @@ use poise::serenity_prelude::{ ReactionType, }; +#[cfg(feature = "prometheus")] +use crate::metrics::PLAY_COUNTER; use crate::{ cmds::autocomplete_sound, models::{guild_data::CtxGuildData, sound::SoundCtx}, @@ -27,6 +29,9 @@ pub async fn play( let guild = ctx.guild().unwrap(); + #[cfg(feature = "prometheus")] + PLAY_COUNTER.inc(); + ctx.say( play_from_query( &ctx.serenity_context(), diff --git a/src/event_handlers.rs b/src/event_handlers.rs index 4f6fcac..2499339 100644 --- a/src/event_handlers.rs +++ b/src/event_handlers.rs @@ -105,10 +105,9 @@ pub async fn listener(ctx: &Context, event: &poise::Event<'_>, data: &Data) -> R let mut sound = sqlx::query_as_unchecked!( Sound, " -SELECT name, id, public, server_id, uploader_id - FROM sounds - WHERE id = ? - ", + SELECT name, id, public, server_id, uploader_id + FROM sounds + WHERE id = ?", join_id ) .fetch_one(&data.database) diff --git a/src/main.rs b/src/main.rs index d341c35..2b15666 100644 --- a/src/main.rs +++ b/src/main.rs @@ -5,6 +5,8 @@ mod cmds; mod consts; mod error; mod event_handlers; +#[cfg(feature = "prometheus")] +mod metrics; mod models; mod utils; diff --git a/src/metrics.rs b/src/metrics.rs new file mode 100644 index 0000000..96929d9 --- /dev/null +++ b/src/metrics.rs @@ -0,0 +1,7 @@ +use lazy_static; +use prometheus::{register_int_counter, IntCounter}; + +lazy_static! { + pub static ref PLAY_COUNTER: IntCounter = + register_int_counter!("play", "Number of calls to /play").unwrap(); +}