You've already forked authentication-service
mirror of
https://github.com/matrix-org/matrix-authentication-service.git
synced 2025-08-09 04:22:45 +03:00
Add metric which tracks the maximum number of connections to the database.
This commit is contained in:
@@ -65,15 +65,23 @@ impl AppState {
|
|||||||
let usage = meter
|
let usage = meter
|
||||||
.i64_observable_up_down_counter("db.connections.usage")
|
.i64_observable_up_down_counter("db.connections.usage")
|
||||||
.with_description("The number of connections that are currently in `state` described by the state attribute.")
|
.with_description("The number of connections that are currently in `state` described by the state attribute.")
|
||||||
.with_unit(Unit::new("connection"))
|
.with_unit(Unit::new("{connection}"))
|
||||||
|
.init();
|
||||||
|
|
||||||
|
let max = meter
|
||||||
|
.i64_observable_up_down_counter("db.connections.max")
|
||||||
|
.with_description("The maximum number of open connections allowed.")
|
||||||
|
.with_unit(Unit::new("{connection}"))
|
||||||
.init();
|
.init();
|
||||||
|
|
||||||
// Observe the number of active and idle connections in the pool
|
// Observe the number of active and idle connections in the pool
|
||||||
meter.register_callback(move |cx| {
|
meter.register_callback(move |cx| {
|
||||||
let idle = u32::try_from(pool.num_idle()).unwrap_or(u32::MAX);
|
let idle = u32::try_from(pool.num_idle()).unwrap_or(u32::MAX);
|
||||||
let used = pool.size() - idle;
|
let used = pool.size() - idle;
|
||||||
|
let max_conn = pool.options().get_max_connections();
|
||||||
usage.observe(cx, i64::from(idle), &[KeyValue::new("state", "idle")]);
|
usage.observe(cx, i64::from(idle), &[KeyValue::new("state", "idle")]);
|
||||||
usage.observe(cx, i64::from(used), &[KeyValue::new("state", "used")]);
|
usage.observe(cx, i64::from(used), &[KeyValue::new("state", "used")]);
|
||||||
|
max.observe(cx, i64::from(max_conn), &[]);
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
// Track the connection acquisition time
|
// Track the connection acquisition time
|
||||||
|
Reference in New Issue
Block a user