Add prom metrics for database, use redis max conn var (#3359)

This commit is contained in:
Jai Agrawal
2025-03-07 17:16:45 -08:00
committed by GitHub
parent d51a1c47c7
commit 9c5d817a8a
6 changed files with 90 additions and 1 deletions

View File

@@ -1,4 +1,5 @@
use log::info;
use prometheus::{IntGauge, Registry};
use sqlx::migrate::MigrateDatabase;
use sqlx::postgres::{PgPool, PgPoolOptions};
use sqlx::{Connection, PgConnection, Postgres};
@@ -45,3 +46,30 @@ pub async fn check_for_migrations() -> Result<(), sqlx::Error> {
Ok(())
}
pub async fn register_and_set_metrics(
pool: &PgPool,
registry: &Registry,
) -> Result<(), prometheus::Error> {
let pg_pool_size =
IntGauge::new("labrinth_pg_pool_size", "Size of Postgres pool")?;
let pg_pool_idle = IntGauge::new(
"labrinth_pg_pool_idle",
"Number of idle Postgres connections",
)?;
registry.register(Box::new(pg_pool_size.clone()))?;
registry.register(Box::new(pg_pool_idle.clone()))?;
let pool_ref = pool.clone();
tokio::spawn(async move {
loop {
pg_pool_size.set(pool_ref.size() as i64);
pg_pool_idle.set(pool_ref.num_idle() as i64);
tokio::time::sleep(Duration::from_secs(5)).await;
}
});
Ok(())
}