【问题标题】:AppDynamics to group REST endpoints containing UUIDs as a single business transactionAppDynamics 将包含 UUID 的 REST 端点分组为单个业务事务
【发布时间】: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)}

【问题讨论】:

    标签: java rest jboss resteasy appdynamics


    【解决方案1】:

    配置->仪器->事务检测->添加

    在“使用请求数据拆分事务”部分,您必须选择“特定 URI 段” 段数:1,2,4

    在您的情况下,事务名称将是“/data/scenario/job”

    示例配置:

    【讨论】:

    • 谢谢。这在我给出的示例 URI 中有效,但是我们有很多包含 UUID 的端点 URI 是不同的位置。我需要更通用的东西。
    • 如果您的 URL 命名没有标准,我建议使用 Header、Cookie、HTTP 参数或方法参数而不是正则表达式。我相信您可以找到一个可以拆分交易的独特价值。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多