AppDynamics 将包含 UUID 的 REST 端点分组为单个业务事务
Posted
技术标签:
【中文标题】AppDynamics 将包含 UUID 的 REST 端点分组为单个业务事务【英文标题】:AppDynamics to group REST endpoints containing UUIDs as a single business transaction 【发布时间】:2020-02-26 21:27:09 【问题描述】:我有一个在 JBoss/Wildfly 上运行并使用 RESTEasy 的 Web 应用程序。我正在用 AppDynamics 监控它。我已将业务事务检测配置为使用 Java Servlet。 这几乎可以工作,但我的一些 REST 路径包含 UUID,例如:
/data/scenario/d345d238-e0d2-4e01-a96e-4bf11290ce1d/job
每次使用不同的 UUID 调用此端点时,AppD 都会将其视为不同的业务事务。有没有办法让 AppD 识别路径中的 UUID,并将它们分组到单个业务事务中?比如:
/data/scenario/id/job
我应该能够通过将正则表达式应用于请求的路径信息来做到这一点:
request.getPathInfo().replaceAll(
"[0-9a-f]8\\-[0-9a-f]4\\-[0-9a-f]4\\-[0-9a-f]4\\-[0-9a-f]12",
"id")
甚至只是
request.getPathInfo().replaceAll("[0-9a-f\\-]36", "id")
但我不知道如何正确地逃避它。
$getPathInfo().replaceAll([0-9a-f\\-]36, id)
没有用,也没有
$getPathInfo().replaceAll(\[0\-9a\-f\\\\-\]\36\, id)
【问题讨论】:
【参考方案1】:配置->仪器->事务检测->添加
在“使用请求数据拆分事务”部分,您必须选择“特定 URI 段” 段数:1,2,4
在您的情况下,事务名称将是“/data/scenario/job”
示例配置:
【讨论】:
谢谢。这在我给出的示例 URI 中有效,但是我们有很多包含 UUID 的端点 URI 是不同的位置。我需要更通用的东西。 如果您的 URL 命名没有标准,我建议使用 Header、Cookie、HTTP 参数或方法参数而不是正则表达式。我相信您可以找到一个可以拆分交易的独特价值。以上是关于AppDynamics 将包含 UUID 的 REST 端点分组为单个业务事务的主要内容,如果未能解决你的问题,请参考以下文章
Appdynamics 4.2和4.3中的Lambda表达式支持
APM系列-国外新兴厂商New Relic vs. AppDynamics