1
0
mirror of https://github.com/matrix-org/matrix-authentication-service.git synced 2025-08-09 04:22:45 +03:00

Log more errors and setup Sentry integration

This commit is contained in:
Quentin Gliech
2023-01-30 17:28:59 +01:00
parent 694e97e96c
commit 875025467e
37 changed files with 439 additions and 16 deletions

View File

@@ -60,12 +60,17 @@ async fn try_main() -> anyhow::Result<()> {
// Don't fill the telemetry layer for now, we want to configure it based on the
// app config, so we need to delay that a bit
let (telemetry_layer, handle) = reload::Layer::new(None);
let (telemetry_layer, telemetry_handle) = reload::Layer::new(None);
// We only want "INFO" level spans to go through OpenTelemetry
let telemetry_layer = telemetry_layer.with_filter(LevelFilter::INFO);
// Don't fill the Sentry layer for now, we want to configure it based on the
// app config, so we need to delay that a bit
let (sentry_layer, sentry_handle) = reload::Layer::new(None);
let subscriber = Registry::default()
.with(telemetry_layer)
.with(sentry_layer)
.with(filter_layer)
.with(fmt_layer);
subscriber
@@ -88,13 +93,19 @@ async fn try_main() -> anyhow::Result<()> {
// Falling back to default.
let telemetry_config: TelemetryConfig = opts.load_config().unwrap_or_default();
// Setup Sentry
let sentry = sentry::init(telemetry_config.sentry.dsn.as_deref());
if sentry.is_enabled() {
sentry_handle.reload(sentry_tracing::layer())?;
}
// Setup OpenTelemtry tracing and metrics
let (tracer, _meter) = telemetry::setup(&telemetry_config)
.await
.context("failed to setup opentelemetry")?;
if let Some(tracer) = tracer {
// Now we can swap out the actual opentelemetry tracing layer
handle.reload(
telemetry_handle.reload(
tracing_opentelemetry::layer()
.with_tracer(tracer)
.with_tracked_inactivity(false),

View File

@@ -31,6 +31,7 @@ use mas_spa::ViteManifestService;
use mas_templates::Templates;
use opentelemetry::KeyValue;
use rustls::ServerConfig;
use sentry_tower::{NewSentryLayer, SentryHttpLayer};
use tower::Layer;
use tower_http::{compression::CompressionLayer, services::ServeDir};
@@ -119,6 +120,8 @@ where
}
router
.layer(SentryHttpLayer::new())
.layer(NewSentryLayer::new_from_top())
.layer(trace_layer)
.layer(CompressionLayer::new())
.with_state(state)