自定义页面加载事务名称

编辑

一种常见的命名事务模式是使用当前 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'
})