Serverless 是一种新兴的云计算技术,它可以让开发人员在不必考虑服务器架构和维护的情况下,专注于应用的开发和部署。 在 Serverless 中,Lambda 是最常用的 Serverless 函数服务。但是,在开发和管理 Lambda 函数时,我们经常需要跟踪函数日志来调试和监控应用程序的运行状态。在本文中,我们将深入探讨如何跟踪 Serverless Lambda 函数日志。
Lambda 日志输出
Lambda 函数默认在 CloudWatch 中输出日志。使用 AWS Lambda 控制台或 AWS CLI,您可以查看 Lambda 函数在 CloudWatch 日志组中生成的输出。为了在代码中打印日志,您可以使用 console.log 或 console.error 方法。这些方法将在 CloudWatch 中的 Lambda 日志组中生成日志消息。以下是示例代码:
-- -------------------- ---- ------- --------------- - ----- --------------- - --------------------- -------- --------------------- ----- ---- ----------------- ----- ------------ ----- -------- - - ----------- ---- ----- ---------------------- ------------- -- ------ --------- -
上面的代码中,我们在 Lambda 函数中使用 console.log 和 console.error 方法打印日志。这些日志将在 CloudWatch 日志组中生成,可以通过 AWS Lambda 控制台或 AWS CLI 查看。
在 CloudWatch 中查看 Lambda 函数日志
您可以使用 AWS Lambda 控制台或 AWS CLI 查看 Lambda 函数在 CloudWatch 日志组中生成的日志消息。
使用 AWS Lambda 控制台查看日志
在 AWS Lambda 控制台中,选择您的 Lambda 函数,然后选择 “监视” 选项卡。在 “监视” 选项卡中,您可以看到 Lambda 函数的指标和日志。在日志部分,您可以从日志组和日志流中选择日志消息。
使用 AWS CLI 查看日志
使用 AWS CLI,您可以使用以下命令拉取 Lambda 函数的日志消息:
aws logs get-log-events --log-group-name /aws/lambda/YourFunctionName --log-stream-name 2021/09/02/[$LATEST]f12345678901234567890a123b456c7
此命令将打印指定日志流上自上次查询以来的新日志消息。
使用 CloudWatch Logs Insights 查询 Lambda 函数日志
使用 CloudWatch Logs Insights,您可以编写复杂的查询,过滤和分析 Lambda 函数的日志消息。默认情况下,Logs Insights 将启用格式化解析器以识别 JSON 格式的日志消息,并将这些消息转换为可查询的字段。
以下是一个示例查询:
fields @timestamp, @message | filter @message like /ERROR/ | sort @timestamp desc | limit 20
这个查询将返回最近的 20 条包含 “ERROR” 关键字的日志消息,并按时间戳倒序排序。
在使用 CloudWatch Logs Insights 进行查询之前,您需要确保已启用 Lambda 函数的自定义日志格式。要启用此功能,请将环境变量设置为以下内容:
Key | Value |
---|---|
AWS_LAMBDA_LOG_GROUP_NAME | /aws/lambda/$LAMBDA_FUNCTION_NAME |
AWS_LAMBDA_LOG_STREAM_NAME | $LAMBDA_FUNCTION_NAME/$LAMBDA_FUNCTION_VERSION |
结论
跟踪 Serverless Lambda 函数日志是开发和管理 Serverless 应用程序的一个关键方面。在本文中,我们学习了如何在 CloudWatch 中查看 Lambda 函数日志,以及如何使用 CloudWatch Logs Insights 查询和分析日志消息。通过深入了解这些技术,您可以更好地理解 Lambda 函数的运行状况,并更有效地调试和监控 Serverless 应用程序。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6747c686555db9718d19cb74