diff --git a/src/db/KyselyLogger.ts b/src/db/KyselyLogger.ts index e39cbd08..ee9cea8c 100644 --- a/src/db/KyselyLogger.ts +++ b/src/db/KyselyLogger.ts @@ -1,5 +1,6 @@ import { Stickynotes } from '@soapbox/stickynotes'; import { Logger } from 'kysely'; +import { dbQueryTimeHistogram } from '@/metrics.ts'; /** Log the SQL for queries. */ export const KyselyLogger: Logger = (event) => { @@ -9,6 +10,8 @@ export const KyselyLogger: Logger = (event) => { const { query, queryDurationMillis } = event; const { sql, parameters } = query; + dbQueryTimeHistogram.observe(queryDurationMillis); + console.debug( sql, JSON.stringify(parameters), diff --git a/src/metrics.ts b/src/metrics.ts index 68ddfcef..3492bb6b 100644 --- a/src/metrics.ts +++ b/src/metrics.ts @@ -1,4 +1,4 @@ -import { Counter, Gauge } from 'prom-client'; +import { Counter, Gauge, Histogram } from 'prom-client'; export const httpRequestCounter = new Counter({ name: 'http_requests_total', @@ -67,3 +67,8 @@ export const dbAvailableConnectionsGauge = new Gauge({ name: 'db_available_connections', help: 'Number of available connections in the database pool', }); + +export const dbQueryTimeHistogram = new Histogram({ + name: 'db_query_duration_seconds', + help: 'Duration of database queries', +});