AWS Lambda Python 应用可观测最佳实践(DDTrace)

概述

随着企业核心业务全面向云原生和无服务器架构迁移,AWS Lambda 因其免运维、自动扩缩容和按调用计费的优势,已成为支撑高并发、事件驱动型业务的首选计算平台。然而,Serverless 的“黑盒化”特征也带来了新的可观测性挑战:

- 分布式链路断裂:Lambda 函数往往作为事件触发链中的关键一环,与 API Gateway、S3、SQS、DynamoDB 等服务交叉调用,传统 APM 难以串联完整调用链。

- 冷启动与性能瓶颈难定位:函数初始化耗时、依赖库加载、网络延迟等性能指标缺乏细粒度追踪,影响用户体验与成本控制。

- 多环境、多账号下的观测一致性缺失:Dev、QA、Prod 环境函数数量众多,若没有统一的链路标准和标签规范,问题定位效率低,跨团队协作成本高。

为保障线上稳定性、优化函数性能、实现 Serverless 场景下的可观测闭环,亟需基于 Python 运行时 构建一套标准化方案,提供从原理、代码示例到生产级部署的完整落地方案,助力企业在 Serverless 架构下实现“**问题可追踪、性能可量化、成本可优化**”的目标。

本文介绍如何通过 Lambda 服务接入 DDTrace 组件实现链路数据采集并上报至观测云。

实践

运行环境

- Lambda 函数(Zip 部署)

- Runtime Language:Python (3.8-3.13)

准备 Lambda Layer

需要新增以下两个 Layer:

- DataDog Layer:用于链路插桩

- DataKit Layer: 用于接收 datadog 的可观测数据

新增 DataKit Layer

参考:AWS Lambda 扩展 > 添加 DataKit 层

新增 DataDog Layer

- AWS 全球区

选择合适的 ARN:

# Use this format for x86-based Lambda deployed in AWS commercial regions

arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>:118

# Use this format for arm64-based Lambda deployed in AWS commercial regions

arn:aws:lambda:<AWS_REGION>:464622532012:layer:Datadog-<RUNTIME>-ARM:118

# Use this format for x86-based Lambda deployed in AWS GovCloud regions

arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>:118

# Use this format for arm64-based Lambda deployed in AWS GovCloud regions

arn:aws-us-gov:lambda:<AWS_REGION>:002406178527:layer:Datadog-<RUNTIME>-ARM:118


将 `<AWS_REGION>` 替换为有效的 AWS 区域,例如 `us-east-1`。`<RUNTIME>` 的选项有:`Python38、Python39、Python310、Python311、Python312、Python313`。

- AWS 中国区

由于 Datadog 并没有在中国区的维护 `datadog-lambda-python` 层,所以我们使用 `pip` 将 `datadog-lambda` 包及其依赖项本地安装到您的函数项目文件夹中。

pip install datadog-lambda -t ./

注意 :`datadog-lambda` 依赖于 ddtrace,而 ddtrace 使用了原生扩展;因此必须在正确架构(x86_64 或 arm64)的 Linux 环境中安装和编译。

将函数的「运行时-处理程序」设置为 `datadog_lambda.handler.handler` 。

环境变量配置

- DD_TRACE_ENABLED: 开启分布式追踪默认为 true

- DD_LAMBDA_HANDLER: 设置为原始处理程序,例如:`lambda_function.lambda_handler`

- DD_TRACE_AGENT_URL:`http://localhost:9529`

- DD_TRACE_DEBUG:日志输出,默认关闭

- ENV_DATAWAY:上报数据的 DataWay 地址(token 从工作空间获取)

配置完成后,点击测试,然后可以登陆平台查看链路数据。

效果展示

配置完成后,点击测试,成功后到观测云工作空间后,相关链路以及指标信息。

APM

`service:aws.lambda`

`resource:<Your AWS Lambda FuncName>`


指标

指标说明:AWS Lambda 拓展 > 指标


日志

`source:awslambda`


©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容