fix Sentry.Init

This commit is contained in:
2025-03-29 17:43:51 +01:00
parent 93a4574553
commit c0ddd1cf7d

View File

@@ -6,13 +6,11 @@ const Sentry = require("@sentry/node");
const { ProfilingIntegration } = require("@sentry/profiling-node"); const { ProfilingIntegration } = require("@sentry/profiling-node");
Sentry.init({ Sentry.init({
// Ersetzen Sie dies durch Ihren echten Sentry DSN // Ersetzen Sie dies durch Ihren echten Sentry DSN oder verwenden Sie die .env Datei
dsn: process.env.SENTRY_DSN || "YOUR_PLACEHOLDER_SENTRY_DSN", dsn: process.env.SENTRY_DSN || "YOUR_PLACEHOLDER_SENTRY_DSN",
integrations: [ integrations: [
// enable HTTP calls tracing // Standardintegrationen wie Http und Express werden automatisch hinzugefügt.
new Sentry.Integrations.Http({ tracing: true }), // Fügen Sie hier nur zusätzliche oder benutzerdefinierte Integrationen hinzu.
// enable Express.js middleware tracing
new Sentry.Integrations.Express({ app: require('express')() }), // Temporäre App für Integration
new ProfilingIntegration(), new ProfilingIntegration(),
], ],
// Performance Monitoring // Performance Monitoring
@@ -50,10 +48,13 @@ const app = express();
const PORT = process.env.PORT || 3000; const PORT = process.env.PORT || 3000;
// --- Sentry Request Handler (ALS ERSTE MIDDLEWARE!) --- // --- Sentry Request Handler (ALS ERSTE MIDDLEWARE!) ---
// Dieser Handler muss VOR allen anderen Middlewares und Routen stehen.
app.use(Sentry.Handlers.requestHandler()); app.use(Sentry.Handlers.requestHandler());
// --- Ende Sentry Request Handler --- // --- Ende Sentry Request Handler ---
// --- Sentry Tracing Handler (NACH CORS/JSON, VOR ROUTEN) --- // --- Sentry Tracing Handler (NACH CORS/JSON, VOR ROUTEN) ---
// Dieser Handler muss NACH dem requestHandler und VOR den Routen stehen.
// Er fügt Trace-Informationen zu eingehenden Anfragen hinzu.
app.use(Sentry.Handlers.tracingHandler()); app.use(Sentry.Handlers.tracingHandler());
// --- Ende Sentry Tracing Handler --- // --- Ende Sentry Tracing Handler ---
@@ -820,7 +821,8 @@ app.use((err, req, res, next) => {
// oder wenn Sie `next(err)` im Sentry-Handler aufrufen. // oder wenn Sie `next(err)` im Sentry-Handler aufrufen.
logger.error({ error: err.message, stack: err.stack, url: req.originalUrl }, 'Unhandled error caught by fallback handler'); logger.error({ error: err.message, stack: err.stack, url: req.originalUrl }, 'Unhandled error caught by fallback handler');
res.statusCode = err.status || 500; res.statusCode = err.status || 500;
res.end(res.sentry + "\n" + (err.message || 'Internal Server Error') + "\n"); // res.sentry wird vom Sentry Handler gesetzt // res.sentry wird vom Sentry errorHandler gesetzt und enthält die Sentry Event ID
res.end((res.sentry ? `Event ID: ${res.sentry}\n` : '') + (err.message || 'Internal Server Error') + "\n");
}); });
@@ -852,26 +854,28 @@ const signals = { 'SIGINT': 2, 'SIGTERM': 15 };
async function gracefulShutdown(signal) { async function gracefulShutdown(signal) {
logger.info(`Received ${signal}, shutting down gracefully...`); logger.info(`Received ${signal}, shutting down gracefully...`);
if (server) { if (server) {
server.close(() => { server.close(async () => { // async hinzugefügt
logger.info('HTTP server closed.'); logger.info('HTTP server closed.');
// Sentry schließen, um sicherzustellen, dass alle Events gesendet werden // Sentry schließen, um sicherzustellen, dass alle Events gesendet werden
Sentry.close(2000).then(() => { // Timeout von 2 Sekunden try {
await Sentry.close(2000); // Timeout von 2 Sekunden, await verwenden
logger.info('Sentry closed.'); logger.info('Sentry closed.');
process.exit(128 + signals[signal]); } catch (e) {
}).catch(e => {
logger.error({ error: e.message }, 'Error closing Sentry'); logger.error({ error: e.message }, 'Error closing Sentry');
process.exit(1); // Trotzdem beenden } finally {
}); process.exit(128 + signals[signal]);
}
}); });
} else { } else {
// Wenn der Server nie gestartet ist, Sentry trotzdem schließen // Wenn der Server nie gestartet ist, Sentry trotzdem schließen
Sentry.close(2000).then(() => { try {
await Sentry.close(2000); // await verwenden
logger.info('Sentry closed (server never started).'); logger.info('Sentry closed (server never started).');
process.exit(128 + signals[signal]); } catch (e) {
}).catch(e => {
logger.error({ error: e.message }, 'Error closing Sentry (server never started)'); logger.error({ error: e.message }, 'Error closing Sentry (server never started)');
process.exit(1); } finally {
}); process.exit(128 + signals[signal]);
}
} }
// Fallback-Timeout, falls das Schließen hängt // Fallback-Timeout, falls das Schließen hängt