配置

编辑

初始化代理时,您可以提供以下配置选项

serviceName

编辑
  • 类型: 字符串
  • 必需

Elastic APM 服务名称用于区分来自您的每个服务的数据。只能包含字母数字字符、空格、下划线和破折号(必须匹配 ^[a-zA-Z0-9 _-]+$)。

serverUrl

编辑
  • 类型: 字符串
  • 默认值: https://127.0.0.1:8200

用于向 APM Server 发出请求的 URL。

serverUrlPrefix

编辑
  • 类型: 字符串
  • 默认值 /intake/v${apiVersion}/rum/events

用于向 APM Server 发出请求的服务器前缀 URL。如果使用默认服务器前缀 URL,一些广告拦截器会阻止来自浏览器的传出请求。使用自定义服务器前缀 URL 可以用来规避广告拦截器。

如果覆盖了默认服务器前缀 URL,则位于 APM Server 和 rum 代理之间的反向代理必须将流量重新路由到 /intake/v${apiVersion}/rum/events,以便 APM Server 知道使用哪个 intake API。

serviceVersion

编辑
  • 类型: 字符串

应用程序的版本。这可以是来自您的 package.json 文件的版本、git commit 引用或任何其他可能帮助您引用特定版本的字符串。此选项在 APM Server 上用于查找要应用于堆栈跟踪的正确 sourcemap 文件。

active

编辑
  • 类型: 布尔值
  • 默认值: true

一个布尔值,指定代理是否应该处于活动状态。如果处于活动状态,代理将发送 APM 事务并跟踪错误。此选项可用于在您的暂存环境中停用代理。它也可以用于对一定数量的客户端进行抽样。以下是一个对 10% 的页面加载进行抽样的示例

var options = {
  active: Math.random() < 0.1
}

instrument

编辑
  • 类型: 布尔值
  • 默认值: true

一个布尔值,指定代理是否应自动检测应用程序以收集应用程序的性能指标。

要使检测运行,active 和 instrument 都必须为 true。

disableInstrumentations

编辑
  • 类型: 数组
  • 默认值: []

可以禁用的检测列表。禁用后,将不会为该类型创建任何事务或 span。有效的选项有

  • page-load
  • history
  • eventtarget
  • click
  • xmlhttprequest
  • fetch
  • error

要禁用所有 http-request 事务,请将 fetchxmlhttprequest 添加到此配置。

要禁用 user-interaction 事务,请将 eventtargetclick 添加到此配置。选项 eventtarget 已弃用,将在未来的版本中删除。

environment

编辑
  • 类型: 字符串
  • 默认值: ''

部署被监视服务的环境,例如“production”、“development”、“test”等。

环境允许您在 APM 应用程序中轻松地全局过滤数据。在跨代理命名环境时保持一致非常重要。有关详细信息,请参阅 APM 应用程序中的环境选择器

此功能在 Kibana 版本 >= 7.2 的 APM 应用程序中完全支持。在 7.2 之前的版本中,您必须使用查询栏来过滤特定环境。

logLevel

编辑
  • 类型: 字符串
  • 默认值: 'warn'

设置代理的详细级别。这不会对发送到 APM Server 的错误类型产生任何影响。当您想向我们报告代理的问题时,此选项非常有用。

可能的级别是:tracedebuginfowarnerror

apiVersion

编辑
  • 类型: 数字
  • 默认值: 2

这表示 APM Server 的 intake API 的版本。将此值设置为大于 2 的任何数字将压缩发送到服务器的事件(事务和错误)有效负载。

此功能需要 APM Server >= 7.8。使用旧版 APM 服务器版本将此标志设置为大于 2 的数字会阻止 RUM 有效负载到达服务器。

breakdownMetrics

编辑
  • 类型: 布尔值
  • 默认值: false

启用或禁用事务的分解指标的跟踪和收集。

此功能需要 APM Server 和 Kibana >= 7.4。使用旧版 APM 服务器版本将此标志设置为 true 会阻止 RUM 有效负载到达服务器。

事务的分解分布因事务类型而异。要了解不同的类型,请参阅分解指标

flushInterval

编辑
  • 类型: 数字
  • 默认值: 500

代理维护一个单独的队列,用于记录添加事务和错误事件。此选项设置队列的刷新间隔(以毫秒为单位)。

每次刷新队列后,在将项目添加到队列之前,不会安排下一次刷新。

pageLoadTraceId

编辑
  • 类型: 字符串

此选项会覆盖页面加载事务跟踪 ID。

pageLoadSampled

编辑
  • 类型: 布尔值

此选项会覆盖页面加载事务的 sampled 属性。它仅适用于 page-load 事务。

pageLoadSpanId

编辑
  • 类型: 字符串

此选项会覆盖为接收初始文档而生成的 span 的 ID。

pageLoadTransactionName

编辑
  • 类型: 字符串

此选项设置页面加载事务的名称。默认情况下,硬(页面加载)和软(路由更改)导航的事务名称由代理根据当前 URL 推断。有关更多详细信息,请查看自定义初始页面加载事务名称文档。

distributedTracing

编辑
  • 类型: 布尔值
  • 默认值: true

默认情况下启用分布式跟踪。使用此选项禁用它。

distributedTracingOrigins

编辑
  • 类型: 数组
  • 默认值: []

此选项可以设置为一个数组,其中包含一个或多个字符串或 RegExp 对象,并确定应将哪些来源作为分布式跟踪的一部分进行监视。当代理即将向请求添加分布式跟踪 HTTP 标头(traceparent)时,将参考此选项。请注意,数组中的每个项目都应是包含来源(URL 的其他部分将被忽略)或 RegExp 对象的有效 URL。如果数组中的某个项目是字符串,则将执行精确匹配。如果它是 RegExp 对象,则将使用请求来源调用其 test 函数。

var options = {
  distributedTracingOrigins: ['https://example.com', /https?:\/\/example\.com:\d{4}/]
}

propagateTracestate

编辑
  • 类型: 布尔值
  • 默认值: false

启用分布式跟踪后,可以使用此选项将 tracestate HTTP 标头传播到配置的来源。在启用此标志之前,请确保更改您的服务器配置以避免跨域资源共享错误。

事件限制

编辑

限制发送到 APM Server 的事件数量。

eventsLimit

编辑

默认情况下,代理每 60000 毫秒(一分钟)最多只能发送 80 个事件。

  • 类型: 数字
  • 默认值: 80

transactionSampleRate

编辑
  • 类型: 数字
  • 默认值: 1.0

一个介于 0.01.0 之间的数字,指定事务的采样率。默认情况下,所有事务都进行采样。

centralConfig

编辑
  • 类型: 布尔值
  • 默认值: false

此选项通过 Kibana 激活 APM Agent 配置。当设置为 true 时,代理会在初始化阶段开始通过 APM Server 获取配置。这些中心配置缓存在 sessionStorage 中,并且在会话关闭和/或清除 sessionStorage 之前不会再次获取。在大多数情况下,这意味着当页面的选项卡/窗口关闭时。

目前,只有事务采样率可以通过 Kibana 进行配置。

此功能需要 APM Server v7.5 或更高版本。更多信息可在APM Agent 配置中找到。

ignoreTransactions

编辑
  • 类型: 数组
  • 默认值: []

一个数组,包含在将有效负载发送到 APM 服务器时应忽略的事务名称列表。它可以设置为包含一个或多个字符串或 RegExp 对象的数组。如果数组中的某个元素是字符串,则将执行精确匹配。如果数组中的某个元素是 RegExp 对象,则将使用事务名称调用其 test 函数。

const options = {
  ignoreTransactions: [/login*/, '/app']
}

作为忽略的事务的一部分捕获的 span 也将被忽略。

monitorLongtasks

编辑
  • 类型: 布尔值
  • 默认值: true

指示代理开始监控会阻塞 UI 线程并可能因影响整体页面响应速度而延迟其他用户输入的浏览器任务。了解更多关于长任务跨度以及如何解释它们的信息。

apmRequest

编辑
  • 类型: 函数
  • 默认值: null
apm.init({ apmRequest: (requestParams) => true})

参数

  • requestParams - 这是一个包含 APM HTTP 请求详细信息的对象

    • url - APM 服务器的完整 URL
    • method - HTTP 请求的方法
    • headers - HTTP 请求的头部
    • payload - HTTP 请求的主体
    • xhr - 代理用来发送请求的 XMLHttpRequest 实例

apmRequest 可用于更改或拒绝发送到 APM 服务器的请求。此配置可以设置为一个函数,该函数会在代理需要向 APM 服务器发送请求时被调用。

回调函数被调用时会传入一个参数,并期望同步返回一个输出。如果返回值是 true,则代理会继续向 APM 服务器发送(可能已修改的)请求。

如果此函数返回一个假值,则会丢弃该请求并在控制台中发出警告。

以下示例向 HTTP 请求添加了一个头部

apm.init({
  apmRequest({ xhr }) {
    xhr.setRequestHeader('custom', 'header')
    return true
  }
})

此示例指示代理丢弃该请求,因为它由用户处理

apm.init({
  apmRequest({ url, method, headers, payload }) {
    // Handle the APM request here or at some later point.
    fetch(url, {
      method,
      headers,
      body: payload
    });
    return false
  }
})

sendCredentials

编辑
  • 类型: 布尔值
  • 默认值: false

这允许代理在向 APM 服务器发送请求时发送 Cookie。在 APM 服务器位于需要请求进行身份验证的反向代理后面的情况下,这很有用。

如果 APM 服务器部署在与页面不同的源中,则需要配置跨域资源共享 (CORS)