配置选项
编辑配置选项编辑
推荐通过 Lambda 函数的环境变量来配置 Elastic APM AWS Lambda 扩展和 AWS Lambda 上的 APM 代理。
APM 代理的配置选项在相应的语言代理中有所记录
某些 APM 代理配置选项在 APM 代理在 Lambda 环境中运行时没有意义。例如,您必须使用下面描述的 ELASTIC_APM_LAMBDA_VERIFY_SERVER_CERT
变量,而不是使用 Python APM 代理配置变量 verify_server_cert
。
使用 Elastic APM AWS Lambda 扩展时不支持 APM Central 配置
相关配置选项编辑
以下是 Elastic APM AWS Lambda 扩展的相关配置选项列表。
ELASTIC_APM_LAMBDA_APM_SERVER
编辑
此必需的配置选项控制 Elastic APM AWS Lambda 扩展将数据发送到的位置。这应该是您遥测数据的最终 APM Server 目标的 URL。
ELASTIC_APM_LAMBDA_AGENT_DATA_BUFFER_SIZE
编辑
存储要转发到 APM 服务器的 APM 代理数据的缓冲区的大小。默认值为 100
。
ELASTIC_APM_SECRET_TOKEN
或 ELASTIC_APM_API_KEY
编辑
需要设置其中一个(或者,或者,设置 AWS Secrets Manager ID 的相应设置)作为 Elastic APM AWS Lambda 扩展在将数据发送到通过 ELASTIC_APM_LAMBDA_APM_SERVER
配置的 URL 时使用的身份验证方法。或者,您可以将 APM Server 凭据 存储在 AWS Secrets Manager 中,并使用 ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_ID
或 ELASTIC_APM_SECRETS_MANAGER_API_KEY_ID
配置选项,而不是。如果未设置这些选项中的任何一个,则可以将数据发送到 APM Server,但您的 APM 代理必须被允许以 匿名模式 将数据发送到您的 APM 服务器。
ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_ID
或 ELASTIC_APM_SECRETS_MANAGER_API_KEY_ID
编辑
您可以在 Lambda 环境变量中指定 ELASTIC_APM_SECRET_TOKEN
或 ELASTIC_APM_API_KEY
作为纯文本,也可以 使用 AWS Secrets Manager 安全地存储您的 APM 身份验证密钥。 ELASTIC_APM_SECRETS_MANAGER_API_KEY_ID
或 ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_ID
配置选项允许您分别指定存储的 APM API 密钥或 APM 秘密令牌的 Secrets Manager 的秘密 ID,供 Elastic APM AWS Lambda 扩展用于身份验证。
ELASTIC_APM_SECRETS_MANAGER_SECRET_TOKEN_ID
优先于 ELASTIC_APM_SECRET_TOKEN
,ELASTIC_APM_SECRETS_MANAGER_API_KEY_ID
优先于 ELASTIC_APM_API_KEY
。
ELASTIC_APM_SERVICE_NAME
编辑
您应用程序或服务的配置名称。APM 代理将在将数据报告到 APM Server 时使用此值。如果未设置,APM 代理将根据 Lambda 函数名称自动设置该值。如果您希望将多个 Lambda 函数分组到 APM 中的单个服务实体下,请使用此配置选项。
ELASTIC_APM_DATA_RECEIVER_TIMEOUT
编辑
在:v1.2.0 中添加。替换 ELASTIC_APM_DATA_RECEIVER_TIMEOUT_SECONDS
。
Elastic APM AWS Lambda 扩展的超时值,用于从 APM 代理接收数据。默认值为 15s
。
ELASTIC_APM_DATA_RECEIVER_SERVER_PORT
编辑
Elastic APM AWS Lambda 扩展监听以接收来自 APM 代理的数据的端口。默认值为 8200
。
ELASTIC_APM_DATA_FORWARDER_TIMEOUT
编辑
在:v1.2.0 中添加。替换 ELASTIC_APM_DATA_FORWARDER_TIMEOUT_SECONDS
。
Elastic APM AWS Lambda 扩展的 HTTP 客户端将数据发送到 APM Server 的超时值。默认值为 3s
。如果扩展在该时间间隔内尝试发送 APM 数据未成功,则扩展会将数据排队。进一步尝试发送数据的行为受指数退避算法控制:只要 Lambda 函数执行仍在进行,数据将在 0 秒后发送,然后大约在 1、4、9、16、25 和 36 秒后发送。
ELASTIC_APM_SEND_STRATEGY
编辑
是否在函数调用结束时从 Elastic APM AWS Lambda 扩展同步刷新 APM 代理数据到 APM Server。两个接受的值是 background
和 syncflush
。默认值为 syncflush
。
background
策略表示 Elastic APM AWS Lambda 扩展在收到函数调用已完成的信号时不会刷新。相反,它将在下次函数调用时发送任何剩余的缓冲数据。结果是,如果该 Lambda 环境随后没有调用该函数,则缓冲数据将丢失。但是,对于具有稳定频繁负载模式的 lambda 函数,扩展可以将数据发送到 APM Server 的时间延迟到下一个 lambda 请求,并在并行处理下一个请求时进行发送。这可能会同时提高 lambda 函数的响应时间和吞吐量。- 另一个值
syncflush
将在扩展收到函数调用已完成的信号时同步刷新所有剩余的缓冲 APM 代理数据到 APM Server。此策略阻止 lambda 函数接收下一个请求,直到扩展刷新所有数据。这会对函数的吞吐量产生负面影响,但它可以确保所有 APM 数据都发送到 APM 服务器。
ELASTIC_APM_LOG_LEVEL
编辑
APM 代理和 Elastic APM AWS Lambda 扩展使用的日志级别。支持的值为 trace
、debug
、info
、warning
、error
、critical
和 off
。
ELASTIC_APM_LAMBDA_CAPTURE_LOGS
编辑
[预览] 此功能处于技术预览阶段,可能会在将来的版本中更改或删除。Elastic 将努力解决任何问题,但技术预览中的功能不受官方 GA 功能的 SLA 支持。 从 Elastic Stack 版本 8.5.0 开始,Elastic APM lambda 扩展默认支持收集日志事件。日志事件可以在 Kibana 的 APM UI 中查看。通过将其设置为 false
来禁用日志收集。
ELASTIC_APM_LAMBDA_VERIFY_SERVER_CERT
编辑
在:v1.3.0 中添加。
是否启用 Elastic APM AWS Lambda 扩展以验证 APM Server 的证书链和主机名。
ELASTIC_APM_LAMBDA_SERVER_CA_CERT_PEM
编辑
在:v1.3.0 中添加。
作为环境变量传递的证书。如果启用验证服务器证书,则用于验证 APM Server 的证书链。
ELASTIC_APM_SERVER_CA_CERT_FILE
编辑
在:v1.3.0 中添加。
作为扩展可用的文件名传递的证书。如果启用验证服务器证书,则用于验证 APM Server 的证书链。
ELASTIC_APM_SERVER_CA_CERT_ACM_ID
编辑
在:v1.3.0 中添加。
Amazon 发行证书的 ARN。如果启用验证服务器证书,则用于验证 APM Server 的证书链。
您可能会在 Elastic Stack 版本低于 8.5 的版本中看到类似以下的错误
client error: response status code: 400 message: log: did not recognize object type
使用旧版本的用户应通过将 ELASTIC_APM_LAMBDA_CAPTURE_LOGS
设置为 false
来禁用日志收集。
已弃用的选项编辑
ELASTIC_APM_DATA_RECEIVER_TIMEOUT_SECONDS
编辑
在:v1.2.0 中弃用。使用 ELASTIC_APM_DATA_RECEIVER_TIMEOUT
代替。
Elastic APM AWS Lambda 扩展接收 APM 代理数据的超时值(以秒为单位)。默认值为 15
。
ELASTIC_APM_DATA_FORWARDER_TIMEOUT_SECONDS
编辑
已在 v1.2.0 中弃用。请使用 ELASTIC_APM_DATA_FORWARDER_TIMEOUT
代替。
Elastic APM AWS Lambda 扩展的 HTTP 客户端将数据发送到 APM 服务器的超时值(以秒为单位)。默认值为 3
。如果扩展在该时间间隔内尝试发送 APM 数据未成功,则扩展会将数据排队。进一步发送数据的尝试将由指数退避算法控制:数据将在 0 秒后发送,然后依次在约 1、4、9、16、25 和 36 秒后发送,前提是 Lambda 函数执行正在进行。