嘉定做网站,佛山营销网站开发怎么选,购物app排行,wordpress 评论显示头像前言
AWS Lambda 是一项计算服务#xff0c;使用时无需预配置或管理服务器即可运行代码。AWS Lambda 只在需要时执行代码并自动缩放。借助 AWS Lambda#xff0c;几乎可以为任何类型的应用程序或后端服务运行代码#xff0c;而且无需执行任何管理。
Lambda Layer 是一个包…前言
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.zipARM架构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?tokenyour-token 第4步日志、链路和指标采集
日志采集
支持采集控制台日志。 Node.js 18.x 和 Go 日志采集示例。 链路采集
使用 OpenTelemetry 或 DDTrace 进行链路采集对于 Go 语言需要在业务代码中添加相应的追踪代码。Go 代码示例较为复杂需要修改业务代码示例如下
package mainimport (contextfmtgithub.com/aws/aws-lambda-go/lambdagopkg.in/DataDog/dd-trace-go.v1/ddtrace/extgopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracerostime
)type MyEvent struct {Name string json:name
}func HandleRequest(ctx context.Context, event *MyEvent) (*string, error) {return run(ctx, event)
}func run(ctx context.Context, event *MyEvent) (*string, error) {tracer.Start(tracer.WithEnv(prod),tracer.WithService(test-file-read),tracer.WithServiceVersion(1.2.3),tracer.WithGlobalTag(project, add-ddtrace-in-golang-project),tracer.WithLambdaMode(false),)// end of app exit, make sure tracer stoppeddefer tracer.Stop()tick : time.NewTicker(time.Second)defer tick.Stop()ctx, cancel : context.WithTimeout(ctx, time.Minute*2)defer cancel()// your-app-main-entry...for {runApp()runAppWithError()select {case -tick.C:case -ctx.Done():message : fmt.Sprintf(Hello %s!, event)return message, nil}}
}func main() {//run(context.Background(), MyEvent{Name: Hello World!})lambda.Start(HandleRequest)
}func runApp() {var err error// Start a root span.span : tracer.StartSpan(get.data)defer span.Finish(tracer.WithError(err))// Create a child of it, computing the time needed to read a file.child : tracer.StartSpan(read.file, tracer.ChildOf(span.Context()))child.SetTag(ext.ResourceName, os.Args[0])// Perform an operation.var bts []bytebts, err os.ReadFile(os.Args[0])span.SetTag(file_len, len(bts))child.Finish(tracer.WithError(err))
}func runAppWithError() {var err error// Start a root span.span : tracer.StartSpan(get.data)// Create a child of it, computing the time needed to read a file.child : tracer.StartSpan(read.file, tracer.ChildOf(span.Context()))child.SetTag(ext.ResourceName, somefile-not-found.go)defer func() {child.Finish(tracer.WithError(err))span.Finish(tracer.WithError(err))}()// Perform an error operation.if _, err os.ReadFile(somefile-not-found.go); err ! nil {// error handle}
}链路效果展示 指标采集
以下是 AWS Lambda 指标的详细列表 awslambda-metric
标签描述aws_account_idAWS 账户ID。aws_lambda_function_memory_sizeConfigured memory size for the Lambda function.aws_lambda_function_nameLambda function name.aws_lambda_function_versionLambda function version.aws_lambda_initialization_typeInitialization type of the Lambda function.aws_regionAWS region where the function is executed.
指标描述类型单位billed_duration_msBilled duration in milliseconds.intmsduration_msTotal duration in milliseconds.intmserrorsErrors count.intcountinit_duration_msInitialization duration in milliseconds.intmsinvocationsInvocation count.intcountmax_memory_used_mbMaximum memory used in MB.intMbmemory_size_mbMemory size configured for the Lambda function in MB.intMbout_of_memoryOut of memory errors count.intcountpost_runtime_durationDuration of the post-runtime phase in milliseconds.intmsproduced_bytesBytes produced.intBresponse_duration_msResponse duration in milliseconds.intmsresponse_latencyResponse latency in milliseconds.intmsruntime_duration_msDuration of the runtime in milliseconds.intmstimeoutsTimeouts count.intcount
安全和隐私说明
确保在配置 ENV_DATAWAY 时使用安全的连接例如 HTTPS。不要在日志或错误消息中暴露敏感信息。
注意事项
在部署之前确保测试所有配置。监控Lambda函数的性能确保指标收集符合预期。定期检查Lambda层和相关配置是否有更新。
参考资料
AWSLambdaAWS Lambda 扩展 - 观测云文档