我正在使用 Sentry for node.js。 在这种情况下,我有一个 express 路线(比方说
/myRoute
),其中有两个主要分支,并且选择遍历的分支基于传入传入请求的内容。 这两个分支有很大不同,并且在 Sentry 中被视为两个不同的事务将会受益。
我尝试在代码分支后不久调用以下命令,以覆盖事务名称:
Sentry.getCurrentScope().setTransactionName('branchA');
和
Sentry.getCurrentScope().setTransactionName('branchB');
但是...我在数据中的任何地方都没有看到这两个事务名称...例如,在性能中我只看到
GET /myRoute/*
事务,而不是单独的 branchA
和 branchB
事务。
我做错了什么? 据我所知,我只是在做文档告诉我要做的事情。
我遇到的问题是因为Sentry中使用的底层机制在SDK v8中进行了彻底修改,并且文档尚未更新以反映这一点。
文档已经现已更新,从中可以更清楚地看出,错误事务名称(应用于错误事件)和根跨度事务名称(根跨度的名称)之间存在区别在您的应用程序跨树中)。
就我而言,我实际上想设置根跨度事务名称,而我使用的方法实际上是更新错误事务名称。
无论如何,我现在正在使用此方法(从 v8.47.0 开始提供)在根跨度仍处于活动状态时更新名称:
const activeSpan = Sentry.getActiveSpan();
const rootSpan = activeSpan && Sentry.getRootSpan(activeSpan);
Sentry.updateSpanName(rootSpan, "my-new-name");
而且效果很好。
请参阅此问题,这是解决此问题的催化剂。