
本文介绍如何在 Laravel 项目中使用 Sentry 时,通过客户端过滤的方式,减少重复事件的发送,从而有效控制 Sentry 的事件配额。我们将通过配置 before_send_transaction 选项,实现对特定 URL 的事务事件的过滤,避免不必要的事件上报。
在 Laravel 项目中使用 Sentry 能够帮助我们追踪和监控应用程序的错误和性能问题。然而,有时我们可能会遇到重复事件大量涌现的情况,导致 Sentry 的事件配额迅速耗尽。虽然 Sentry 提供了服务端限流功能,但并非所有订阅计划都支持。因此,在客户端进行事件过滤成为一种有效的解决方案。
Sentry 提供了 before_send 和 before_send_transaction 配置项,允许我们在事件发送到 Sentry 服务器之前对其进行修改或丢弃。before_send 用于过滤所有类型的事件,而 before_send_transaction 专门用于过滤事务事件。
以下是如何在 Laravel 项目中配置 before_send_transaction 来过滤特定 URL 的事务事件的步骤:
打开 config/sentry.php 文件。
该文件包含了 Sentry 的配置信息。如果你的项目中没有该文件,请确保已经正确安装并配置了 Sentry Laravel SDK。
配置 before_send_transaction 选项。
在 config/sentry.php 文件中,找到 before_send_transaction 选项。如果该选项不存在,则添加它。该选项接受一个闭包函数,该函数接收一个 \Sentry\Event 对象作为参数,并返回一个 \Sentry\Event 对象或 null。如果返回 null,则该事件将被丢弃,不会发送到 Sentry 服务器。
'before_send_transaction' => function (
\Sentry\Event $transaction
): ?\Sentry\Event {
// 在这里添加你的过滤逻辑
return $transaction;
},添加过滤逻辑。
在 before_send_transaction 闭包函数中,添加你的过滤逻辑。以下是一个示例,该示例过滤了包含 _debugbar、monitoring 或 pleaseignoreme 的 URL 的事务事件:
'before_send_transaction' => function (
\Sentry\Event $transaction
): ?\Sentry\Event {
$ignore = ['_debugbar', 'monitoring', 'pleaseignoreme'];
$request = $transaction->getRequest();
if (isset($request['url'])) {
$check = array_filter($ignore, function ($url) use ($request) {
if (stripos($request['url'], $url) !== false) {
return true;
}
});
if (count($check) > 0) {
return null;
}
}
return $transaction;
},代码解释:
测试你的配置。
确保你的过滤逻辑正常工作。你可以通过访问包含被过滤 URL 片段的页面,并检查 Sentry 控制台来验证事件是否被成功过滤。
注意事项:
总结:
通过配置 before_send_transaction 选项,我们可以在客户端过滤 Sentry Laravel 事件,从而有效控制事件配额,避免不必要的事件上报。这种方法特别适用于无法使用 Sentry 服务端限流功能的场景。 请记住,仔细测试您的配置以避免意外过滤掉重要信息。
以上就是优化 Sentry Laravel 事件发送:客户端过滤实践的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号