前言
AWS Lambda 是一项计算服务,使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda,几乎可以为任何类型的应用程序或后端服务运行代码,而且无需执行任何管理。
Lambda Layer 是一个包含补充代码或数据的 .zip 文件存档,通常包含库依赖项、自定义运行时系统或配置文件。Lambda 扩展则是可以增强 Lambda 函数的功能,例如集成监控、安全性和监管工具等。
在本文中,我们将引导您了解如何将观测云服务集成到 AWS Lambda,通过配置 Lambda 层、设置环境变量,实现 Lambda 函数的指标、日志和链路采集。
前提条件
- 确保您拥有 AWS 账户,并且具备管理 Lambda 函数的权限。
- 已注册 观测云账号
第1步:创建Lambda层
1、打开 AWS Lambda 控制台并导航至「Layers」页面。
2、点击「Create layer」,创建一个新的层。
3、在「Layer configuration」中,填写层的名称。
4、选择「Upload a .zip file」并上传以下链接对应的文件:
- AMD架构: https://static.guance.com/datakit/datakit_aws_extension-linux-amd64.zip
- ARM架构: https://static.guance.com/datakit/datakit_aws_extension-linux-arm64.zip
第2步:复制 ARN 并添加层到 Lambda 函数
- 创建成功后,复制层的 ARN 值。
- 在 Lambda 函数配置中添加此 ARN 到 Layers 部分。
第3步:配置环境变量
设置以下环境变量以确保数据正确传输到观测云:
Datakit 监听的地址名
DD_AGENT_HOST
:0.0.0.0
Datakit 监听的端口号
DD_TRACE_AGENT_PORT
:9529
DataWay 真实地址
ENV_DATAWAY
:https://xxxx.guance.com?token=<your-token>
第4步:日志、链路和指标采集
日志采集
- 支持采集控制台日志。
- Node.js 18.x 和 Go 日志采集示例。
链路采集
- 使用 OpenTelemetry 或 DDTrace 进行链路采集
- 对于 Go 语言,需要在业务代码中添加相应的追踪代码。Go 代码示例较为复杂,需要修改业务代码,示例如下:
- 链路效果展示
指标采集
以下是 AWS Lambda 指标的详细列表
awslambda-metric
标签 | 描述 |
---|---|
aws_account_id | AWS 账户ID。 |
aws_lambda_function_memory_size | Configured memory size for the Lambda function. |
aws_lambda_function_name | Lambda function name. |
aws_lambda_function_version | Lambda function version. |
aws_lambda_initialization_type | Initialization type of the Lambda function. |
aws_region | AWS region where the function is executed. |
指标 | 描述 | 类型 | 单位 |
---|---|---|---|
billed_duration_ms | Billed duration in milliseconds. | int | ms |
duration_ms | Total duration in milliseconds. | int | ms |
errors | Errors count. | int | count |
init_duration_ms | Initialization duration in milliseconds. | int | ms |
invocations | Invocation count. | int | count |
max_memory_used_mb | Maximum memory used in MB. | int | Mb |
memory_size_mb | Memory size configured for the Lambda function in MB. | int | Mb |
out_of_memory | Out of memory errors count. | int | count |
post_runtime_duration | Duration of the post-runtime phase in milliseconds. | int | ms |
produced_bytes | Bytes produced. | int | B |
response_duration_ms | Response duration in milliseconds. | int | ms |
response_latency | Response latency in milliseconds. | int | ms |
runtime_duration_ms | Duration of the runtime in milliseconds. | int | ms |
timeouts | Timeouts count. | int | count |
安全和隐私说明
- 确保在配置 ENV_DATAWAY 时使用安全的连接(例如 HTTPS)。
- 不要在日志或错误消息中暴露敏感信息。
注意事项
- 在部署之前,确保测试所有配置。
- 监控Lambda函数的性能,确保指标收集符合预期。
- 定期检查Lambda层和相关配置是否有更新。