配置

编辑

使用 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
  • Env: OTEL_EXPORTER_OTLP_HEADERS

设置连接到已认证的 APM 服务器的密钥令牌。如果使用 env-var,则必须按照 OpenTelemetry 协议导出器配置定义整个标头映射(例如:OTEL_EXPORTER_OTLP_HEADERS="Authorization=bearer <密钥令牌>"

此设置与 withApiKey 互斥

withApiKey

编辑
  • 类型: 字符串
  • 默认值: nil
  • Env: OTEL_EXPORTER_OTLP_HEADERS

设置连接到已认证的 APM 服务器的 API 令牌。如果使用 env-var,则必须按照 OpenTelemetry 协议导出器配置定义整个标头映射(例如:OTEL_EXPORTER_OTLP_HEADERS="Authorization=ApiKey <key>"

此设置与 withSecretToken 互斥

disableAgent() -> Self
编辑

禁用 Elastic 代理。这对于在开发期间禁用代理而无需完全删除 Elastic 代理非常有用。日志将报告 "Elastic APM 代理已被禁用。"

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 env-var 设置资源属性的方法。此 env-var 也可通过应用程序 plist 工作。任何资源属性都可以使用此方法覆盖,因此应小心,因为某些属性对于 kibana UI 的功能至关重要。

deployment.environment

编辑

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

动态配置 动态配置

编辑

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

记录

编辑

一个布尔值,指定代理是否应进行记录。记录时,代理会检测传入的 HTTP 请求、跟踪错误并收集和发送指标。不记录时,代理充当 noop,不收集数据,也不与 APM 服务器通信,但会轮询中央配置端点。由于这是一个可逆开关,因此在停用时不会终止代理线程,但它们在此状态下大多处于空闲状态,因此开销应可忽略不计。

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

dynamic config

默认值 类型 动态

true

布尔值

true

会话采样率

编辑

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

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

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

dynamic config

默认值 类型 动态

1.0

双精度

true