监控 AWS Lambda Python 函数
编辑监控 AWS Lambda Python 函数
编辑Python APM Agent 可以与 AWS Lambda 结合使用,以监控 AWS Lambda 函数的执行情况。
Note: The Centralized Agent Configuration on the Elasticsearch APM currently does NOT support AWS Lambda.
前提条件
编辑您需要一个 APM 服务器来发送 APM 数据。如果您尚未设置,请按照APM 快速入门进行设置。为了获得尽可能最佳的性能,我们建议在与您的 AWS Lambda 函数相同的 AWS 区域中的 Elastic Cloud 上设置 APM。
步骤 1:选择 AWS 区域和架构
编辑从此发布表的 APM Lambda 扩展层中选择正确的 ARN。
此外,从此发布表的 APM Agent 层中选择正确的 ARN。
所选的AWS 区域和架构必须与您的 AWS Lambda 函数的 AWS 区域和架构匹配!
步骤 2:将 APM 层添加到您的 Lambda 函数
编辑Elastic APM AWS Lambda 扩展和 Python APM Agent 都作为AWS Lambda 层添加到您的 Lambda 函数中。因此,您需要将相应的层 ARN(标识符)添加到您的 Lambda 函数。
要通过 AWS 管理控制台将层添加到您的 Lambda 函数
- 在 AWS 管理控制台中导航到您的函数
- 滚动到“层”部分,然后单击添加层按钮
- 选择指定 ARN单选按钮
- 在指定 ARN文本输入中复制并粘贴 Elastic APM AWS Lambda 扩展层和 APM agent 层的以下 ARN
APM 扩展层
EXTENSION_ARN
APM agent 层
AGENT_ARN - 单击添加按钮
要通过 AWS 命令行界面添加 Elastic APM AWS Lambda 扩展和 APM agent 的层 ARN,请执行以下命令
aws lambda update-function-configuration --function-name yourLambdaFunctionName \ --layers EXTENSION_ARN \ AGENT_ARN
在您的 SAM template.yml
文件中,按如下方式添加 Elastic APM AWS Lambda 扩展和 APM agent 的层 ARN
... Resources: yourLambdaFunction: Type: AWS::Serverless::Function Properties: ... Layers: - EXTENSION_ARN - AGENT_ARN ...
在您的 serverless.yml
文件中,按如下方式将 Elastic APM AWS Lambda 扩展和 APM agent 的层 ARN 添加到您的函数中
... functions: yourLambdaFunction: handler: ... layers: - EXTENSION_ARN - AGENT_ARN ...
要将 Elastic APM AWS Lambda 扩展和 APM agent 添加到您的函数,请将 ARN 添加到 Terraform 文件中的 layers
属性
... resource "aws_lambda_function" "your_lambda_function" { ... layers = ["EXTENSION_ARN", "AGENT_ARN"] } ...
要将 Elastic APM AWS Lambda 扩展和 APM agent 添加到您的基于容器的函数,请按如下方式扩展您的函数镜像的 Dockerfile
FROM docker.elastic.co/observability/apm-lambda-extension-IMAGE_ARCH:latest AS lambda-extension AGENT_IMPORT # FROM ... <-- this is the base image of your Lambda function COPY --from=lambda-extension /opt/elastic-apm-extension /opt/extensions/elastic-apm-extension AGENT_COPY # ...
步骤 3:在 AWS Lambda 上配置 APM
编辑Elastic APM AWS Lambda 扩展和 APM Python agent 通过 AWS Lambda 函数上的环境变量进行配置。
对于最小配置,您将需要 APM 服务器 URL 来设置 APM 数据的目标以及一个APM 密钥令牌。如果您喜欢使用APM API 密钥而不是 APM 密钥令牌,请在以下配置中使用 ELASTIC_APM_API_KEY
环境变量而不是 ELASTIC_APM_SECRET_TOKEN
。
对于生产环境,我们建议使用 AWS Secrets Manager 来存储您的 APM 身份验证密钥,而不是在环境变量中以纯文本形式提供密钥值。
要通过 AWS 管理控制台配置 APM
- 在 AWS 管理控制台中导航到您的函数
- 单击配置选项卡
- 单击环境变量
- 添加以下必需的变量
AWS_LAMBDA_EXEC_WRAPPER = /opt/python/bin/elasticapm-lambda # use this exact fixed value ELASTIC_APM_LAMBDA_APM_SERVER = <YOUR-APM-SERVER-URL> # this is your APM Server URL ELASTIC_APM_SECRET_TOKEN = <YOUR-APM-SECRET-TOKEN> # this is your APM secret token ELASTIC_APM_SEND_STRATEGY = background
要通过 AWS 命令行界面配置 APM,请执行以下命令
aws lambda update-function-configuration --function-name yourLambdaFunctionName \ --environment "Variables={AWS_LAMBDA_EXEC_WRAPPER=/opt/python/bin/elasticapm-lambda,ELASTIC_APM_LAMBDA_APM_SERVER=<YOUR-APM-SERVER-URL>,ELASTIC_APM_SECRET_TOKEN=<YOUR-APM-SECRET-TOKEN>,ELASTIC_APM_SEND_STRATEGY=background}"
在您的 SAM template.yml
文件中,配置以下环境变量
... Resources: yourLambdaFunction: Type: AWS::Serverless::Function Properties: ... Environment: Variables: AWS_LAMBDA_EXEC_WRAPPER: /opt/python/bin/elasticapm-lambda ELASTIC_APM_LAMBDA_APM_SERVER: <YOUR-APM-SERVER-URL> ELASTIC_APM_SECRET_TOKEN: <YOUR-APM-SECRET-TOKEN> ELASTIC_APM_SEND_STRATEGY: background ...
在您的 serverless.yml
文件中,配置以下环境变量
在您的 Terraform 文件中,配置以下环境变量
... resource "aws_lambda_function" "your_lambda_function" { ... environment { variables = { AWS_LAMBDA_EXEC_WRAPPER = /opt/python/bin/elasticapm-lambda ELASTIC_APM_LAMBDA_APM_SERVER = "<YOUR-APM-SERVER-URL>" ELASTIC_APM_SECRET_TOKEN = "<YOUR-APM-SECRET-TOKEN>" ELASTIC_APM_SEND_STRATEGY = "background" } } } ...
为 AWS Lambda 函数配置的环境变量将传递到运行 lambda 函数的容器。您可以使用其他选项之一(通过 AWS Web 控制台、AWS CLI 等)来配置以下环境变量
|
您可以选择微调 Python 代理或Elastic APM AWS Lambda 扩展的配置。
就是这样。完成上述步骤后,您就可以开始使用了!从现在开始,应该跟踪您的 Lambda 函数调用。支持的技术将捕获跨度。您还可以使用 capture_span
来捕获自定义跨度,并且可以使用 get_client
来检索 Client
对象以捕获异常/消息。