feat(metrics): Record metrics with OpenTelemetry and export over OTLP

This commit is contained in:
Erwan Leboucher authored and Jade Ellis committed 2026-10-12 10:03:14 +01:00
1 parent e96b6e6665
commit 5185045cb6
33 files changed
+1118 -455

No files matched your search

+18 -2
View File
@@ -5,6 +5,7 @@ use base64::{Engine as _, engine::general_purpose};
use conduwuit::{
Err, Error, EventTypeExt, PduEvent, Result, debug, err, error,
matrix::{Event, StateKey},
metrics::KeyValue,
result::FlatOk,
state_res, trace,
utils::hash::sha256,
@@ -31,6 +32,21 @@ use crate::{Ruma, server::utils::validate_any_membership_event};
pub(crate) async fn create_invite_route(
State(services): State<crate::State>,
body: Ruma<create_invite::v2::Request>,
) -> Result<create_invite::v2::Response> {
let result = create_invite(&services, body).await;
services.server.metrics.instruments.invites.add(1, &[
KeyValue::new("direction", "incoming"),
KeyValue::new("destination", "local"),
KeyValue::new("outcome", if result.is_ok() { "success" } else { "failure" }),
]);
result
}
async fn create_invite(
services: &crate::State,
body: Ruma<create_invite::v2::Request>,
) -> Result<create_invite::v2::Response> {
if !services.server.supported_room_version(&body.room_version) {
return Err(Error::BadRequest(
@@ -64,7 +80,7 @@ pub(crate) async fn create_invite_route(
"Validating invite room state for invite request"
);
let (create_event_id, state) = validate_invite_state(
&services,
services,
&body.invite_room_state,
&room_version_rules,
body.room_id.clone(),
@@ -92,7 +108,7 @@ pub(crate) async fn create_invite_route(
// And then we can validate the member event itself
let (mut signed_event, sender_user, recipient_user) = validate_invite_membership_event(
&services,
services,
&body.event,
&room_version_rules,
&body.identity,