自定义页面加载事务名称编辑

命名事务的一种常见模式是使用当前 URL(window.location.href)。但是,这会创建太多唯一的事务(博客标题、查询字符串等),并且在 Kibana APM UI 中可视化跟踪时用处不大。

为了克服这个问题,代理根据当前 URL 对页面加载事务进行分组。让我们看看下面的例子

// Blog Posts - '/blog/:id'
https://elastic.ac.cn/blog/reflections-on-three-years-in-the-elastic-public-sector
https://elastic.ac.cn/blog/say-heya-to-the-elastic-search-awards
https://elastic.ac.cn/blog/and-the-winner-of-the-elasticon-2018-training-subscription-drawing-is

// Documentation - '/guide/en/*'
https://elastic.ac.cn/guide/en/elastic-stack/current/index.html
https://elastic.ac.cn/guide/en/apm/get-started/current/index.html
https://elastic.ac.cn/guide/en/infrastructure/guide/current/index.html

上述 URL 的页面加载事务名称将由代理自动推断并分类为 /blog/:id/guide/en/*。代理中的分组逻辑的工作原理是递归遍历 URL 路径树,直到深度为 2,并根据路径中的数字、特殊字符、大小写字母混合将其转换为通配符或 slug 匹配。该算法使用从 URL 中的常见模式派生的启发式方法,因此在某些情况下可能无法正确识别匹配项。

如果推断的事务名称没有帮助,请将 pageLoadTransactionName 配置设置为将事务分组到相同类别(博客、指南等)下的有意义的内容,并避免不惜一切代价使用完整的 URL。

import {apm} from '@elastic/apm-rum'

apm.init({
    serviceName: "service-name",
    pageLoadTransactionName: '/homepage'
})