通过忽略Laravel路线来保护哨兵交易
#php #laravel #性能 #sentry

试图找到一个非常特殊问题的答案,空虚,我自己解决并在后代发布它的另一个案例。

问题

我有几个经常触发的Laravel PHP路线,两者都非常特定于其他站点监视(网站下降?)和会话管理(我仍然登录吗?)。这些是无法实现面向用户目的的实用路线,我不需要从哨兵那里进行任何有关它们的其他记录详细信息。

我可以防止交易在哨兵离开服务器之前发送到哨兵吗?我尝试搜索诸如sentry laravel忽略路线和哨兵控制交易之类的术语,因此我必须上班。

解决方案

在我的搜索中,我确实找到了专门用于Laravel的this helpful documentation for before_send_transaction。这是/config/sentry.php配置的可选添加。在其中,您可以定义要在首选情况下返回null的任何逻辑。无效的回报将导致活动被丢弃。宾果游戏!

这是我制作的代码。

'before_send_transaction' => function (
    \Sentry\Event $transaction
): ?\Sentry\Event {
    $ignore = ['_debugbar', 'monitoring', 'pleaseignoreme'];
    $request = $transaction->getRequest();
    $check = array_filter($ignore, function ($url) use ($request) {
        if (stripos($request['url'], $url) !== false) {
            return true;
        }
    });

    if (count($check) > 0) {
        return null;
    }

    return $transaction;
},

这是在做什么:

  • $ignore是我要忽略的URL关键术语的数组,这是您需要编辑的所有内容。添加您不希望被Sentry记录的所有URL段,您可以
  • $request是来自Sentry生成的包装$transaction的请求详细信息。在其中是我们用来测试
  • 的完整URL
  • $check是我通过忽略列表迭代并检查匹配的方法。这将$ignore阵列向下过滤至匹配。
  • 然后,我们查看$check的计数是否大于零,如果是的话,那么其中一条路线匹配,我们希望返回null以忽略此事务。否则,按正常返回。

就是这样!

非常简单,但是花了一些时间来挖掘文档才能找到before_send_transaction并通过哨兵包来查看$transaction所包含的内容,所以我希望能够摆脱下一个dev的麻烦。

向上和向上! ð