Monitoring with Sentry
Add the Sentry Deno SDK to your Supabase Edge Functions to easily track exceptions and get notified of errors or performance issues.
Prerequisites
- Create a Sentry account.
- Make sure you have the latest version of the Supabase CLI installed.
1. Create Supabase function
Create a new function locally:
_10supabase functions new sentryfied
2. Add the Sentry Deno SDK
Handle exceptions within your function and send them to Sentry.
_33import * as Sentry from 'https://deno.land/x/sentry/index.mjs'_33_33Sentry.init({_33 // https://docs.sentry.io/product/sentry-basics/concepts/dsn-explainer/#where-to-find-your-dsn_33 dsn: SENTRY_DSN,_33 defaultIntegrations: false,_33 // Performance Monitoring_33 tracesSampleRate: 1.0,_33 // Set sampling rate for profiling - this is relative to tracesSampleRate_33 profilesSampleRate: 1.0,_33})_33_33// Set region and execution_id as custom tags_33Sentry.setTag('region', Deno.env.get('SB_REGION'))_33Sentry.setTag('execution_id', Deno.env.get('SB_EXECUTION_ID'))_33_33Deno.serve(async (req) => {_33 try {_33 const { name } = await req.json()_33 // This will throw, as `name` in our example call will be `undefined`_33 const data = {_33 message: `Hello ${name}!`,_33 }_33_33 return new Response(JSON.stringify(data), { headers: { 'Content-Type': 'application/json' } })_33 } catch (e) {_33 Sentry.captureException(e)_33 return new Response(JSON.stringify({ msg: 'error' }), {_33 status: 500,_33 headers: { 'Content-Type': 'application/json' },_33 })_33 }_33})
3. Deploy and test
Run function locally:
_10supabase start_10supabase functions serve --no-verify-jwt
Test it: http://localhost:54321/functions/v1/sentryfied
Deploy function to Supabase:
_10supabase functions deploy sentryfied --no-verify-jwt
4. Try it yourself
Find the complete example on GitHub.