配置
编辑配置编辑
使用以下方法之一(按优先级降序排列)调整 Elastic APM Go 代理以满足您的需求
- 通过 Kibana 进行 APM 代理配置(支持的选项标记为 )
- 在代码中,使用 跟踪器配置 API
- 环境变量
通过 Kibana 定义的配置优先于在代码中定义的相同配置,而代码中定义的配置优先于环境变量。如果通过 Kibana 定义了配置,然后将其删除,则代理将恢复为通过跟踪器配置 API 或环境变量在本地定义的配置。
为了简化开发和测试,代理默认将数据发送到 https://127.0.0.1:8200
的 Elastic APM 服务器。要将数据发送到其他位置,您必须配置 ELASTIC_APM_SERVER_URL。根据服务器的配置,您可能还需要设置 ELASTIC_APM_API_KEY、ELASTIC_APM_SECRET_TOKEN 和 ELASTIC_APM_VERIFY_SERVER_CERT。所有其他变量都有可用的默认值。
动态配置编辑
标记有 徽章的配置选项可以在运行时从受支持的源设置时更改。
Go 代理支持 集中配置,允许您通过 APM 应用程序微调某些配置。默认情况下,代理中启用了此功能,使用 ELASTIC_APM_CENTRAL_CONFIG
。
配置格式编辑
某些选项需要一个单位,可以是持续时间或大小。这些需要以特定格式提供。
持续时间格式编辑
持续时间 格式用于超时等选项。单位作为后缀直接在数字后面提供,中间没有任何空格。
示例: 5ms
支持的单位
-
ms
(毫秒) -
s
(秒) -
m
(分钟)
大小格式编辑
大小 格式用于最大缓冲区大小等选项。单位作为后缀直接在数字后面提供,中间没有任何空格。
示例: 10KB
支持的单位
- B(字节)
- KB(千字节)
- MB(兆字节)
- GB(千兆字节)
我们使用 2 的幂次方大小约定,例如 1KB = 1024B。
ELASTIC_APM_SERVER_URL
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
|
您的 Elastic APM 服务器的 URL。服务器同时支持 HTTP 和 HTTPS。如果您使用 HTTPS,则可能需要配置您的客户端计算机,以便可以验证服务器证书。您可以使用 ELASTIC_APM_VERIFY_SERVER_CERT
禁用证书验证。
ELASTIC_APM_SERVER_TIMEOUT
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
|
向您的 Elastic APM 服务器发出请求的超时时间。设置为零或负值时,将禁用超时。
ELASTIC_APM_SECRET_TOKEN
编辑
环境 | 默认 | 示例 |
---|---|---|
|
“随机字符串” |
此字符串用于确保只有您的代理可以将数据发送到您的 APM 服务器。代理和 APM 服务器都必须配置相同的密钥。
密钥在每次向服务器发出的请求中都以纯文本形式发送,因此您还应该使用 HTTPS 来保护您的通信安全。除非您这样做,否则您的密钥可能会被攻击者观察到。
ELASTIC_APM_API_KEY
编辑
环境 | 默认 | 示例 |
---|---|---|
|
“Base64 编码的字符串” |
此 Base64 编码的字符串用于确保只有您的代理可以将数据发送到您的 APM 服务器。必须使用 APM 服务器 命令行工具 创建 API 密钥。
API 密钥在每次向服务器发出的请求中都以纯文本形式发送,因此您还应该使用 HTTPS 来保护您的通信安全。除非您这样做,否则您的 API 密钥可能会被攻击者观察到。
ELASTIC_APM_SERVICE_NAME
编辑
环境 | 默认 | 示例 |
---|---|---|
|
可执行文件名称 |
|
您的服务或应用程序的名称。这用于将您的服务的所有错误和事务保持在一起,并且是 Elastic APM 用户界面中的主要过滤器。
如果您没有指定 ELASTIC_APM_SERVICE_NAME
,Go 代理将使用可执行文件名称。例如,如果您的可执行文件名为“my-app.exe”,则您的服务将被标识为“my-app”。
服务名称必须符合以下正则表达式:^[a-zA-Z0-9 _-]+$
。换句话说:您的服务名称只能包含 ASCII 字母表中的字符、数字、破折号、下划线和空格。
ELASTIC_APM_SERVICE_VERSION
编辑
环境 | 默认 | 示例 |
---|---|---|
|
指示已部署服务的版本的字符串 |
当前部署的服务版本的版本字符串。如果您没有对部署进行版本控制,则此字段的建议值是已部署修订版的提交标识符,例如 git rev-parse HEAD
的输出。
ELASTIC_APM_SERVICE_NODE_NAME
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
用于区分服务中节点的可选名称。必须是唯一的,否则来自多个节点的数据将被聚合在一起。
如果您没有指定 ELASTIC_APM_SERVICE_NODE_NAME
,则服务节点将使用容器 ID(如果可用)进行标识,否则使用主机名。
APM 服务器 7.5 及更高版本完全支持此功能。
ELASTIC_APM_ENVIRONMENT
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
此服务部署到的环境的名称,例如“生产环境”或“测试环境”。
环境允许您在 APM 应用程序中轻松地在全局级别过滤数据。在跨代理命名环境时保持一致非常重要。有关更多信息,请参阅 APM 应用程序中的 环境选择器。
Kibana 7.2 及更高版本的 APM 应用程序完全支持此功能。在 7.2 之前的版本中,您必须使用查询栏来过滤特定环境。
ELASTIC_APM_ACTIVE
编辑
环境 | 默认 | 示例 |
---|---|---|
|
true |
|
启用或禁用代理。如果设置为 false,则 Go 代理不会向 Elastic APM 服务器发送任何数据,并且仪器开销最小化。
ELASTIC_APM_RECORDING
编辑
环境 | 默认 | 示例 |
---|---|---|
|
true |
|
启用或禁用事件记录。如果设置为 false,则 Go 代理不会向 Elastic APM 服务器发送任何事件,并且仪器开销最小化,但代理将继续轮询服务器以获取配置更改。
ELASTIC_APM_GLOBAL_LABELS
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
标签将添加到所有事件中。标签的格式为:key=value[,key=value[,...]]
。应用程序通过 API 设置的任何标签都将覆盖具有相同键的全局标签。
此选项需要 APM Server 7.2 或更高版本,在使用旧版本服务器时无效。
ELASTIC_APM_TRANSACTION_IGNORE_URLS
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
要忽略的 HTTP 请求匹配模式列表。请求行与任何模式匹配的传入 HTTP 请求都不会被报告为事务。
此选项支持通配符 *
,它匹配零个或多个字符。例如:/foo/*/bar/*/baz*
、*foo*
。默认情况下,匹配不区分大小写。在模式前添加 (?-i)
使匹配区分大小写。
此配置以前称为 ELASTIC_APM_IGNORE_URLS
,现已弃用,并将在未来主要版本的代理中删除。
ELASTIC_APM_SANITIZE_FIELD_NAMES
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
|
要编辑的 HTTP 标头、cookie 和 POST 表单字段名称匹配模式列表。
此选项支持通配符 *
,它匹配零个或多个字符。例如:/foo/*/bar/*/baz*
、*foo*
。默认情况下,匹配不区分大小写。在模式前添加 (?-i)
使匹配区分大小写。
ELASTIC_APM_CAPTURE_HEADERS
编辑
环境 | 默认 |
---|---|
|
|
对于作为 HTTP 请求的事务,Go 代理可以选择捕获请求和响应标头。
可能的值:true
、false
。
捕获的标头将根据 ELASTIC_APM_SANITIZE_FIELD_NAMES
进行清理。
ELASTIC_APM_CAPTURE_BODY
编辑
环境 | 默认 |
---|---|
|
|
对于作为 HTTP 请求的事务,Go 代理可以选择捕获请求正文。
可能的值:errors
、transactions
、all
、off
。
请求正文通常包含敏感值,如密码、信用卡号等。如果您的服务处理此类数据,请谨慎启用此功能。
ELASTIC_APM_HOSTNAME
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
|
将错误和事务数据发送到 APM 服务器时要使用的主机名。
ELASTIC_APM_API_REQUEST_TIME
编辑
环境 | 默认 |
---|---|
|
|
在结束对 Elastic APM 服务器的请求之前等待的时间量。当您报告事务、跨度和错误时,代理将启动一个请求,并在有足够的数据发送时将它们发送到服务器;请求将保持打开状态,直到超过此时间,或者直到达到 最大请求大小。
ELASTIC_APM_API_REQUEST_SIZE
编辑
环境 | 默认 | 最小值 | 最大值 |
---|---|---|---|
|
|
|
|
要发送到 Elastic APM 服务器的请求正文的最大大小。代理将维护一个内存缓冲区,其中包含要流式传输到 APM 服务器的压缩数据。
ELASTIC_APM_API_BUFFER_SIZE
编辑
环境 | 默认 | 最小值 | 最大值 |
---|---|---|---|
|
|
|
|
代理繁忙时要在内存中存储的未压缩编码事件的最大字节数。当代理能够这样做时,它会将缓冲数据传输到请求缓冲区,并开始将其流式传输到服务器。如果缓冲区已满,新事件将开始替换旧事件。
ELASTIC_APM_TRANSACTION_MAX_SPANS
编辑
环境 | 默认 |
---|---|
|
|
限制每个事务记录的跨度数量。
这在事务创建大量跨度(例如数千个 SQL 查询)的情况下很有用。设置上限将防止代理和 APM 服务器因此类边缘情况而超载。
ELASTIC_APM_EXIT_SPAN_MIN_DURATION
编辑
环境 | 默认 |
---|---|
|
|
设置要报告的退出跨度的最短持续时间。短于或等于此阈值的跨度将被代理丢弃,并在跨度的事务中作为统计信息报告,只要事务在报告跨度之前没有结束。
启用跨度压缩时(ELASTIC_APM_SPAN_COMPRESSION_ENABLED
),将考虑压缩跨度组合的总和。
此设置允许的最短持续时间为 1 微秒(us
)。
ELASTIC_APM_SPAN_FRAMES_MIN_DURATION
编辑
环境 | 默认 |
---|---|
|
|
APM 代理将为每个记录的跨度收集堆栈跟踪,其持续时间超过此配置值。虽然这对于找到代码中导致跨度的确切位置非常有帮助,但收集此堆栈跟踪确实会产生一些处理和存储开销。
此配置已弃用,并将在未来主要版本的代理中删除。
ELASTIC_APM_SPAN_STACK_TRACE_MIN_DURATION
编辑
环境 | 默认 |
---|---|
|
|
APM 代理将为每个记录的跨度收集堆栈跟踪,其持续时间超过此配置值。虽然这对于找到代码中导致跨度的确切位置非常有帮助,但收集此堆栈跟踪确实会产生一些处理和存储开销。
此配置以前称为 ELASTIC_APM_SPAN_FRAMES_MIN_DURATION
,现已弃用,并将在未来主要版本的代理中删除。
ELASTIC_APM_STACK_TRACE_LIMIT
编辑
环境 | 默认 |
---|---|
|
|
限制为每个堆栈跟踪捕获的帧数。
将限制设置为 0 将禁用堆栈跟踪收集,而任何正整数值都将用作要收集的最大帧数。设置负值(例如 -1)意味着将收集所有帧。
ELASTIC_APM_TRANSACTION_SAMPLE_RATE
编辑
环境 | 默认 |
---|---|
|
|
默认情况下,代理将对每个事务(例如对服务的请求)进行采样。要减少开销和存储需求,请将采样率设置为 0.0
到 1.0
之间的值。我们仍然会记录未采样事务的总时间和结果,但不会记录上下文信息、标签或跨度。
ELASTIC_APM_METRICS_INTERVAL
编辑
环境 | 默认 |
---|---|
|
30s |
APM 代理收集和报告指标的时间间隔。设置为 0s
可禁用。
ELASTIC_APM_DISABLE_METRICS
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
禁用某些指标的收集。如果指标的名称与任何通配符表达式匹配,则不会收集该指标。
此选项支持通配符 *
,它匹配零个或多个字符。例如:/foo/*/bar/*/baz*
、*foo*
。默认情况下,匹配不区分大小写。在模式前添加 (?-i)
使匹配区分大小写。
ELASTIC_APM_BREAKDOWN_METRICS
编辑
环境 | 默认 |
---|---|
|
|
捕获细分指标。设置为 false
可禁用。
ELASTIC_APM_SERVER_CERT
编辑
环境 | 默认 |
---|---|
|
如果您已使用自签名 TLS 证书配置 APM 服务器,或者您想固定服务器证书,请通过 ELASTIC_APM_SERVER_CERT
配置指定 PEM 编码证书的路径。
ELASTIC_APM_SERVER_CA_CERT_FILE
编辑
环境 | 默认 |
---|---|
|
PEM 编码的 TLS 证书颁发机构证书的路径,该证书将用于验证服务器的 TLS 证书链。
ELASTIC_APM_VERIFY_SERVER_CERT
编辑
环境 | 默认 |
---|---|
|
|
默认情况下,如果您使用 HTTPS 连接到 APM 服务器,则代理会验证服务器的证书。可以通过将此设置更改为 false
来禁用验证。设置 ELASTIC_APM_SERVER_CERT
时,将忽略此设置。
ELASTIC_APM_LOG_FILE
编辑
环境 | 默认 |
---|---|
|
ELASTIC_APM_LOG_FILE
指定代理默认内部记录器的输出文件。该文件将在进程启动时创建,如果文件已存在,则会被截断。默认情况下,日志记录处于禁用状态。您必须指定 ELASTIC_APM_LOG_FILE
才能启用它。如果以编程方式配置了记录器,则将忽略此环境变量。
代理识别两个特殊的文件名:stdout
和 stderr
。这些将分别将记录器配置为写入标准输出和标准错误。
ELASTIC_APM_LOG_LEVEL
编辑
环境 | 默认 |
---|---|
|
|
ELASTIC_APM_LOG_LEVEL
指定代理默认内部记录器的日志级别。记录器仅使用的两个级别是“错误”和“调试”。默认情况下,日志记录处于禁用状态。您必须指定 ELASTIC_APM_LOG_FILE
才能启用它。
如果以编程方式配置了记录器,则将忽略此环境变量。
ELASTIC_APM_CENTRAL_CONFIG
编辑
环境 | 默认 |
---|---|
|
|
通过 Kibana 激活 APM 代理中心配置。默认情况下,代理将轮询服务器以获取代理配置更改。可以通过将设置更改为 false
来禁用此功能。有关更多信息,请参阅 APM 代理中心配置。
此功能需要 APM Server v7.3 或更高版本。
ELASTIC_APM_USE_ELASTIC_TRACEPARENT_HEADER
编辑
环境 |
默认 |
|
|
为了启用分布式追踪,代理会将追踪上下文标头添加到使用 module/apmhttp 发出的传出 HTTP 请求中。这些标头(traceparent
和 tracestate
)在 W3C 追踪上下文 规范中定义。
如果此设置是 true
,则代理还会添加标头 elastic-apm-traceparent
,以便与旧版本的 Elastic APM 代理向后兼容。
ELASTIC_APM_CLOUD_PROVIDER
编辑
环境 | 默认 | 示例 |
---|---|---|
|
|
|
此配置值允许您指定应假定哪个云提供商用于元数据收集。默认情况下,代理将使用试错法自动收集云元数据。
有效选项为 “none”
、“auto”
、“aws”
、“gcp”
和 “azure”
。如果此配置值设置为 “none”
,则不会收集任何云元数据。
ELASTIC_APM_SPAN_COMPRESSION_ENABLED
编辑
环境 | 默认 |
---|---|
|
|
启用后,代理将尝试将共享同一父级的_短_出口跨度压缩为一个组合跨度。_短_的确切持续时间取决于所使用的压缩策略(same_kind
或 exact_match
)。
为了使跨度可压缩,需要满足以下条件
- 跨度是出口跨度。
- 跨度是同级(共享同一父级)。
- 跨度没有向下游传播其上下文。
- 每个跨度的持续时间等于或小于压缩策略的最大持续时间。
-
当以下属性相等时,跨度将使用
same_kind
策略进行压缩-
span.type
. -
span.subtype
. -
span.context.destination.service.resource
-
- 当满足所有先前条件并且
span.name
相等时,跨度将使用exact_match
策略进行压缩。
压缩短出口跨度应该可以为创建大量连续短出口跨度的服务(例如数据库或缓存服务)节省一些存储空间,这些服务在查看跟踪时通常不感兴趣。
此功能是实验性的,需要 APM Server v7.15 或更高版本。
ELASTIC_APM_SPAN_COMPRESSION_EXACT_MATCH_MAX_DURATION
编辑
环境 | 默认 |
---|---|
|
|
要考虑压缩完全匹配的同级出口跨度的最大持续时间。
ELASTIC_APM_SPAN_COMPRESSION_SAME_KIND_MAX_DURATION
编辑
环境 | 默认 |
---|---|
|
|
要考虑压缩同类同级出口跨度的最大持续时间。
ELASTIC_APM_TRACE_CONTINUATION_STRATEGY
编辑
环境 | 默认 |
---|---|
|
|
此选项允许对 APM 代理如何处理传入请求上的 W3C 追踪上下文标头进行一些控制。默认情况下,traceparent 和 tracestate 标头根据 W3C 规范用于分布式追踪。但是,在某些情况下,不使用传入的 traceparent 标头可能会有所帮助。一些用例示例
- 受 Elastic 监控的服务正在接收来自未监控服务的带有 traceparent 标头的请求。
- 受 Elastic 监控的服务是公开的,并且不希望追踪数据(追踪 ID、采样决策)可能被用户请求欺骗。
有效选项为 continue
、restart
和 restart_external
- continue
- 默认行为。传入的
traceparent
值用于继续追踪并确定采样决策。 - restart
- 始终忽略传入请求的
traceparent
标头。将生成新的追踪 ID,并将根据transaction_sample_rate
做出采样决策。将建立到传入traceparent
的跨度链接。 - restart_external
- 如果传入请求在
tracestate
中包含es
供应商标志,则任何traceparent
都将被视为内部的,并将按照上述 continue 的描述进行处理。否则,任何traceparent
都将被视为外部的,并将按照上述 restart 的描述进行处理。
从 Elastic Observability 8.2 开始,跨度链接在追踪视图中可见。