Midday / apps /api /src /instrument.ts
Jules
Final deployment with all fixes and verified content
c09f67c
import * as Sentry from "@sentry/bun";
if (process.env.NODE_ENV === "production" && process.env.SENTRY_DSN) {
Sentry.init({
dsn: process.env.SENTRY_DSN,
release: process.env.GIT_COMMIT_SHA || process.env.RAILWAY_GIT_COMMIT_SHA,
// Use Railway environment name so staging and production are separate in Sentry
environment:
process.env.RAILWAY_ENVIRONMENT_NAME ||
process.env.NODE_ENV ||
"production",
integrations: [Sentry.consoleLoggingIntegration({ levels: ["error"] })],
sendDefaultPii: true,
enableLogs: true,
// Sample 10% of transactions for performance monitoring
tracesSampleRate: 0.1,
// Drop noisy transactions that don't provide value
beforeSendTransaction(event) {
const url = event.request?.url || event.transaction || "";
if (
url.includes("/health") ||
url.includes("/openapi") ||
event.request?.method === "OPTIONS"
) {
return null;
}
return event;
},
// Filter out expected client errors from error reporting
beforeSend(event) {
// Don't send network/timeout errors from health checks
const message = event.exception?.values?.[0]?.value || "";
if (message.includes("ECONNREFUSED") || message.includes("ETIMEDOUT")) {
// Only drop if it's from a health check context
const transaction = event.transaction || "";
if (transaction.includes("/health")) {
return null;
}
}
return event;
},
});
}