diff --git a/includes/javascript-crons-automatic-crons-instrumentation.mdx b/includes/javascript-crons-automatic-crons-instrumentation.mdx index 1e227e898f133..858bf54039883 100644 --- a/includes/javascript-crons-automatic-crons-instrumentation.mdx +++ b/includes/javascript-crons-automatic-crons-instrumentation.mdx @@ -2,6 +2,43 @@ If you're using the [`cron`](https://www.npmjs.com/package/cron), [`node-cron`]( ### Cron +#### Monitor All Named Jobs + +Requires SDK version `11.9.0` or higher and `cron` version `4.3.0` or higher. + +We recommend adding `cronJobIntegration`, which monitors every job that has a `name`: + +```JavaScript +Sentry.init({ + dsn: "___PUBLIC_DSN___", + integrations: [ + Sentry.cronJobIntegration({ + excludeJobs: ["cleanup-temp-files", /^debug-/], // Optional. + }), + ], +}); +``` + +```JavaScript +import { CronJob } from "cron"; + +CronJob.from({ + name: "daily-report", + cronTime: "0 30 9 * * 1-5", + timeZone: "Europe/Vienna", + onTick: sendReport, + start: true, +}); +``` + +The monitor slug is the job `name`. Jobs without a `name`, and jobs that run once at a date, aren't monitored. `excludeJobs` skips jobs whose name matches a string exactly or a regular expression. + +Each check-in sends the schedule and time zone (your server's time zone if `timeZone` isn't set). Schedules that can't be expressed in the Crons schedule format (for example, a job that runs every 10 seconds), and jobs with a `utcOffset`, check in without a monitor config, so create those monitors in Sentry first. + +In NestJS, use the Nest integration's `monitorCronJobs` option instead, because `@nestjs/schedule` runs `@Cron()` methods as named `cron` jobs. + +#### Monitor Specific Jobs + Requires SDK version `7.92.0` or higher. Use `Sentry.cron.instrumentCron` to instrument the `CronJob` constructor or `CronJob.from` method in the [`cron`](https://www.npmjs.com/package/cron) library. Pass the name of the cron monitor as a second argument to the function. @@ -25,6 +62,8 @@ const job = CronJobWithCheckIn.from({ }); ``` +`cronJobIntegration` skips jobs created with `instrumentCron`, so using both doesn't send duplicate check-ins. + ### Node Cron #### Monitor All Named Tasks