Set Up Crons
Sentry Crons allows you to monitor the uptime and performance of any scheduled, recurring job in your application.
Once implemented, it'll allow you to get alerts and metrics to help you solve errors, detect timeouts, and prevent disruptions to your service.
- Use our getting started guide to install and configure the Sentry Java SDK (min 6.30.0) for your recurring job.
- Ensure that
org.aspectj.aspectjweaver
is present as a dependency of your project.
- Create and configure your first Monitor.
If you are using Quartz, please see our Quartz integration. You may also send check-ins manually.
Check-in monitoring allows you to track a job's progress by completing two check-ins: one at the start of your job and another at the end of your job. This two-step process allows Sentry to notify you if your job didn't start when expected (missed) or if it exceeded its maximum runtime (failed). To start sending check-ins simply add the @SentryCheckIn("<monitor-slug>")
annotation to the method you want to send check-ins for.
import io.sentry.spring.jakarta.checkin.SentryCheckIn;
@Component
public class CustomJob {
@Scheduled(fixedRate = 3 * 60 * 1000L)
@SentryCheckIn("<monitor-slug>") // 👈
void execute() throws InterruptedException {
// your task code
}
}
Heartbeat monitoring notifies Sentry of a job's status through one check-in. This setup will only notify you if your job didn't start when expected (missed). If you need to track a job to see if it exceeded its maximum runtime (failed), use check-ins instead. To start sending heartbeats simply add the @SentryCheckIn(monitorSlug = "<monitor-slug>", heartbeat = true)
annotation to the method you want to send heartbeats for.
import io.sentry.spring.jakarta.checkin.SentryCheckIn;
@Component
public class CustomJob {
@Scheduled(fixedRate = 3 * 60 * 1000L)
@SentryCheckIn(monitorSlug = "<monitor-slug>", heartbeat = true) // 👈
void execute() throws InterruptedException {
// your task code
}
}
When your recurring job fails to check in (missed), runs beyond its configured maximum runtime (failed), or manually reports a failure, Sentry will create an error event with a tag to your monitor.
To receive alerts about these events:
- Navigate to Alerts in the sidebar.
- Create a new alert and select "Issues" under "Errors" as the alert type.
- Configure your alert and define a filter match to use:
The event's tags match {key} {match} {value}
.
Example: The event's tags match monitor.slug equals my-monitor-slug-here
Learn more in Issue Alert Configuration.
To prevent abuse and resource overuse, Crons limits check-ins to 6 per minute for each monitor environment.
For example, if you have a monitor called "database-backup" with two environments:
database-backup
in environmentproduction
can send up to 6 check-ins per minutedatabase-backup
in environmentstaging
can also send up to 6 check-ins per minute- Combined, they can send up to 12 check-ins per minute
You can verify if any check-ins are being dropped by visiting the Usage Stats page. To avoid dropped check-ins, ensure your monitors don't exceed the rate limit.
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").