设置定时任务
Sentry Crons 允许您监控应用程序中任何计划的、重复的任务的正常运行时间和性能。
一旦实现,它将允许您获取警报和指标,帮助您解决错误、检测超时并防止服务中断。
- 使用我们的 入门 指南安装和配置 Sentry Laravel SDK(最低版本 v3.3.1)以用于您的定时任务。
使用 Laravel SDK 监控并通知您,如果您的 计划任务 被错过(或未按预期启动),如果由于运行时问题(如错误)而失败,或如果由于超出最大运行时间而失败。
要设置,请将 sentryMonitor()
宏添加到 app/Console/Kernel.php
文件中定义的计划任务中,如下所示。(请注意,这将创建一个 Cron 监控,这将计入您的配额。)
app/Console/Kernel.php
Copied
protected function schedule(Schedule $schedule)
{
$schedule->command('emails:send')
->everyHour()
->sentryMonitor(); // add this line
}
使用 Laravel 的 between
、unlessBetween
、when
和 skip
方法的任务目前不受支持。 为了获得最佳效果,我们建议使用 Laravel 的 cron
方法来定义计划的频率。
默认情况下,Laravel SDK 将推断计划任务的各种参数。 为了获得更大的控制,我们在 sentryMonitor()
宏上暴露了一些可选参数。
app/Console/Kernel.php
Copied
protected function schedule(Schedule $schedule)
{
$schedule->command('emails:send')
->everyHour()
->sentryMonitor(
// Specify the slug of the job monitor in case of duplicate commands or if the monitor was created in the UI
monitorSlug: null,
// Check-in margin in minutes
checkInMargin: 5,
// Max runtime in minutes
maxRuntime: 15,
// In case you want to configure the job monitor exclusively in the UI, you can turn off sending the monitor config with the check-in.
// Passing a monitor-slug is required in this case.
updateMonitorConfig: false,
)
}
当您的重复任务未能签到(错过)、运行时间超过配置的最大运行时间(失败),或手动报告失败时,Sentry 会创建一个带有监控标签的错误事件。
要接收这些事件的警报:
- 在侧边栏中导航到 警报。
- 创建一个新的警报,并在“错误”下选择“问题”作为警报类型。
- 配置您的警报并定义一个过滤器匹配:
事件的标签匹配 {key} {match} {value}
。
示例:事件的标签匹配 monitor.slug 等于 my-monitor-slug-here
了解更多请参阅 问题警报配置。
Crons 对签到实施速率限制以防止滥用和资源过度使用。具体来说,每个现有监控环境每分钟最多只能发送 6 个签到。此限制按项目强制执行,意味着该速率限制适用于给定项目中的所有监控环境。您可以在 Usage Stats 页面检查是否有任何签到被丢弃。
为了避免签到被丢弃,重要的是要高效地管理和分配签到,使其在速率限制内。这将有助于保持准确的监控,并确保所有关键