配置编辑

使用 AgentConfigBuilder 配置代理,将 AgentConfiguration 传递给 start 函数。

let config = AgentConfigBuilder()
                .withServerUrl(URL(string: "https://127.0.0.1:8200"))
                .withSecretToken("<Token>")
                .build()

ElasticApmAgent.start(with:config)

配置选项编辑

可以使用以下函数配置 AgentConfigBuilder

withServerUrl编辑

  • 类型: URL
  • 默认值: http://127.0.0.1:8200

withSecretToken编辑

  • 类型: 字符串
  • 默认值: nil
  • 环境变量: OTEL_EXPORTER_OTLP_HEADERS

设置连接到已验证 APM 服务器的密钥令牌。如果使用环境变量,则必须根据 OpenTelemetry 协议导出器配置 定义整个标头映射(例如:OTEL_EXPORTER_OTLP_HEADERS="Authorization=bearer <secret token>"

此设置与 withApiKey 互斥

withApiKey编辑

  • 类型: 字符串
  • 默认值: nil
  • 环境变量: OTEL_EXPORTER_OTLP_HEADERS

设置连接到已验证 APM 服务器的 API 令牌。如果使用环境变量,则必须根据 OpenTelemetry 协议导出器配置 定义整个标头映射(例如:OTEL_EXPORTER_OTLP_HEADERS="Authorization=ApiKey <key>"

此设置与 withSecretToken 互斥

disableAgent() -> Self编辑

禁用 Elastic 代理。这在开发过程中禁用代理而不必完全删除 Elastic 代理时很有用。日志将报告 "Elastic APM Agent has been disabled."

addSpanFilter编辑

  • 类型: @escaping (ReadableSpan) → Bool
  • 默认值: nil

添加一个匿名函数,该函数将在跨度处理器中的每个跨度上执行,以决定是否应将该跨度发送到后端。

addMetricFilter编辑

  • 类型: @escaping (Metric) → Bool
  • 默认值: nil

添加一个匿名函数,该函数将在跨度处理器中的每个指标上执行,以决定是否应将该指标发送到后端。

addLogFilter编辑

  • 类型: @escaping (ReadableLogRecord) → Bool
  • 默认值: nil

添加一个匿名函数,该函数将在跨度处理器中的每个日志上执行,以决定是否应将该日志发送到后端。

代码插桩配置编辑

ElasticApmAgent.start 提供一个额外的可选参数来配置代码插桩。在下面的示例中,代码插桩配置将使用默认值传递给 Agent.start。这等效于调用不传递代码插桩配置的 ElasticApmAgent.start

let config = ...

let instrumentationConfig = InstrumentationConfigBuilder().build()

ElasticApmAgent.start(with:config, instrumentationConfig)

代码插桩配置选项编辑

可以使用以下函数配置 InstrumentationConfigBuilder

withCrashReporting(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用代理的崩溃报告功能。

withURLSessionInstrumentation(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用网络跟踪代码插桩。

withViewControllerInstrumentation(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用视图控制器跟踪代码插桩。

withAppMetricInstrumentation(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用 MetricKit 代码插桩。

withSystemMetrics(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用系统指标代码插桩(CPU 和内存使用情况)。

withLifecycleEvents(_ enable: Bool) -> Self编辑

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

此选项可用于启用/禁用生命周期事件。

withPersistentStorageConfiguration(_ config: PersistencePerformancePreset) -> Self编辑

  • 类型: PersistencePerformancePreset
  • 默认值: .lowRuntimeImpact

此选项可用于配置 持久存储 的行为,用于跟踪、指标和日志。

资源属性注入编辑

在 v0.5.0 中,代理提供了一种使用 OTEL_RESOURCE_ATTRIBUTES 环境变量设置 资源属性 的方法。此环境变量也通过应用程序 plist 工作。可以使用此方法覆盖任何资源属性,因此应谨慎操作,因为某些属性对于 kibana UI 的正常运行至关重要。

deployment.environment编辑

部署环境设置为 default。这可以使用在部署的 plist 中设置的 OTEL_RESOURCE_ATTRIBUTES 覆盖。使用字段键作为 OTEL_RESOURCE_ATTRIBUTES,并将值设置为 deployment.environment=staging

动态配置 动态配置编辑

动态配置可通过 kibana UI 获得,并由代理远程读取,以对现场部署的所有活动代理应用配置。有关动态配置的更多信息,请参阅 代理配置

录制编辑

一个布尔值,指定代理是否应录制。录制时,代理会对传入的 HTTP 请求进行代码插桩,跟踪错误并收集和发送指标。不录制时,代理将作为无操作工作,不收集数据也不与 APM 服务器通信,除了轮询中央配置端点。由于这是一个可逆的开关,因此代理线程在停用时不会被杀死,但它们在这种状态下将大部分处于空闲状态,因此开销应该可以忽略不计。

您可以设置此设置以在运行时动态禁用 Elastic APM

dynamic config

默认值 类型 动态

true

布尔值

true

会话采样率编辑

一个双精度值,指定在特定设备上应录制特定会话期间生成的所有数据的可能性。值可能介于 0 和 1 之间。1 表示 100% 可能性,0 表示 0% 可能性。每次新会话开始时,都会将此值与 0 到 1 之间的随机数进行比较,如果随机数低于设置的会话采样率,则会对该会话中记录的所有数据进行采样。

这种以会话为中心的采样技术是为了保留相关数据点,而不是按信号采样,因为在按信号采样时可能会丢失有价值的上下文。

您可以在运行时动态设置此值。

dynamic config

默认值 类型 动态

1.0

双精度值

true