配置编辑

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

serviceName编辑

  • 类型: 字符串
  • 必填

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

serverUrl编辑

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

用于向 APM 服务器发出请求的 URL。

serverUrlPrefix编辑

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

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

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

serviceVersion编辑

  • 类型: 字符串

应用程序的版本。 这可以是您的 package.json 文件中的版本、git 提交引用或任何其他可以帮助您引用特定版本的字符串。 此选项在 APM 服务器上用于查找要应用于堆栈跟踪的正确源映射文件。

active编辑

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

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

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

instrument编辑

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

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

active 和 instrument 都需要为 true 才能运行检测。

disableInstrumentations编辑

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

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

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

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

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

environment编辑

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

部署受监控服务的环境,例如“生产”、“开发”、“测试”等。

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

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

logLevel编辑

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

设置代理的详细级别。 这对发送到 APM 服务器的错误类型没有任何影响。 当您想向我们报告代理问题时,此选项很有用。

可能的级别有:tracedebuginfowarnerror

apiVersion编辑

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

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

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

breakdownMetrics编辑

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

启用或禁用事务的故障指标的跟踪和收集。

此功能需要 APM 服务器和 Kibana >= 7.4。 使用较旧的 APM 服务器版本将此标志设置为 true 将导致 RUM 有效负载无法到达服务器。

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

flushInterval编辑

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

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

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

pageLoadTraceId编辑

  • 类型: 字符串

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

pageLoadSampled编辑

  • 类型: 布尔值

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

pageLoadSpanId编辑

  • 类型: 字符串

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

pageLoadTransactionName编辑

  • 类型: 字符串

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

distributedTracing编辑

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

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

distributedTracingOrigins编辑

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

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

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

propagateTracestateedit

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

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

事件限制edit

限制发送到 APM 服务器的事件数量。

eventsLimitedit

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

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

transactionSampleRateedit

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

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

centralConfigedit

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

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

目前,只能通过 Kibana 配置 事务采样率

此功能需要 APM 服务器 v7.5 或更高版本。更多信息请参阅 APM 代理配置

ignoreTransactionsedit

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

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

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

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

monitorLongtasksedit

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

指示代理开始监控阻塞 UI 线程并可能通过影响整体页面响应能力来延迟其他用户输入的浏览器任务。详细了解 长任务跨度 以及如何解释它们。

apmRequestedit

  • 类型: 函数
  • 默认值: 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
  }
})

sendCredentialsedit

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

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

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