选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

的日志和指标 AWS Lambda - AWS 规范性指导

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

的日志和指标 AWS Lambda

Lambda 无需为工作负载管理和监控服务器,无需对应用程序的代码进行进一步配置或检测,即可自动使用 CloudWatch指标和 CloudWatch 日志。本节可帮助您了解 Lambda 所用系统的性能特征以及您的配置选择如何影响性能。它还可以帮助您记录和监控您的 Lambda 函数,以优化性能并诊断应用程序级问题。

Lambda 函数日志

Lambda 自动将标准输出和标准错误消息从 Lambda 函数流式传输到 CloudWatch 日志,无需记录驱动程序。Lambda 还会自动配置运行您的 Lambda 函数的容器,并将其配置为在单独的日志流中输出日志消息。

后续调用 Lambda 函数可以重复使用相同的容器并输出到相同的日志流。Lambda 还可以预置新的容器并将调用输出到新的日志流。

首次调用 Lambda 函数时,Lambda 会自动创建一个日志组。Lambda 函数可以有多个版本,您可以选择要运行的版本。Lambda 函数调用的所有日志都存储在同一个日志组中。名称无法更改,/aws/lambda/<YourLambdaFunctionName>格式为。在日志组中为每个 Lambda 函数实例创建一个单独的日志流。对于使用某种格式的日志流,Lambda 有一个标准的命名约定。YYYY/MM/DD/[<FunctionVersion>]<InstanceId>由 AWS 生成InstanceId,用于标识 Lambda 函数实例。

我们建议您将日志消息格式化为JSON格式,因为您可以使用 Logs Insights 更轻松地 CloudWatch 查询它们。也可以更轻松地对其进行过滤和导出。您可以使用日志库来简化此过程或编写自己的日志处理函数。我们建议您使用日志库来帮助格式化和分类日志消息。例如,如果您的 Lambda 函数是用 Python 编写的,则可以使用 Py thon 日志模块来记录消息并控制输出格式。Lambda 原生使用 Python 日志库来存储用 Python 编写的 Lambda 函数,您可以在 Lambda 函数中检索和自定义记录器。 AWS 实验室创建了 AWS Lambda Powertools for Python 开发者工具包,以便更轻松地使用冷启动等关键数据来丰富日志消息。该工具包可用于 Python、Java、Typescript 和。 NET。

另一种最佳做法是使用变量设置日志输出级别,并根据环境和您的要求进行调整。除了使用的库之外,您的 Lambda 函数的代码还可能输出大量日志数据,具体取决于日志输出级别。这可能会影响您的日志记录成本并影响性能。

Lambda 允许您在不更新代码的情况下为 Lambda 函数运行时环境设置环境变量。例如,您可以创建一个LAMBDA_LOG_LEVEL环境变量来定义可以从代码中检索的日志输出级别。以下示例尝试检索LAMBDA_LOG_LEVEL环境变量并使用该值来定义日志输出。如果未设置环境变量,则默认为INFO级别。

import logging from os import getenv logger = logging.getLogger() log_level = getenv("LAMBDA_LOG_LEVEL", "INFO") level = logging.getLevelName(log_level) logger.setLevel(level)

将日志发送到其他目的地 CloudWatch

您可以使用订阅筛选条件将日志发送到其他目的地(例如,亚马逊 OpenSearch 服务或 Lambda 函数)。如果您不使用 Amazon OpenSearch 服务,则可以使用 Lambda 函数来处理日志,然后使用将其发送到您选择的 AWS 服务。 AWS SDKs

您还可以在 Lambda 函数中使用SDKs AWS 云以外的日志目标,将日志语句直接发送到您选择的目标。如果您选择此选项,我们建议您考虑延迟、额外的处理时间、错误和重试处理以及操作逻辑与 Lambda 函数的耦合的影响。

Lambda 函数指标

Lambda 允许您在不管理或扩展服务器的情况下运行代码,这几乎消除了系统级审计和诊断的负担。但是,了解您的 Lambda 函数的系统级别的性能和调用指标仍然很重要。这可以帮助您优化资源配置并提高代码性能。通过适当调整您的 Lambda 函数规模,有效监控和衡量性能可以改善用户体验并降低成本。通常,作为 Lambda 函数运行的工作负载也有需要捕获和分析的应用程序级指标。Lambda 直接支持嵌入式指标格式,以便更轻松地捕获应用程序级 CloudWatch 指标。

系统级指标

Lambda 会自动与 CloudWatch 指标集成,并为您的 Lambda 函数提供一组标准指标。Lambda 还为每个 Lambda 函数提供了一个单独的监控控制面板,其中包含这些指标。您需要监控的两个重要指标是错误和调用错误。了解调用错误与其他错误类型之间的区别有助于您诊断和支持 Lambda 部署。

调用错误会导致您的 Lambda 函数无法运行。这些错误发生在您的代码运行之前,因此您无法在代码中实现错误处理来识别它们。相反,您应该为 Lambda 函数配置警报,以检测这些错误并通知操作和工作负载所有者。这些错误通常与配置或权限错误有关,并且可能是由于您的配置或权限更改而发生的。调用错误可能会启动重试,从而导致多次调用您的函数。

成功调用的 Lambda 函数会返回 HTTP 200 响应,即使该函数抛出了异常。您的 Lambda 函数应实现错误处理并引发异常,以便该Errors指标捕获和识别您的 Lambda 函数的失败运行。您应该从 Lambda 函数调用中返回格式化的响应,其中包含用于确定运行是完全、部分失败还是成功的信息。

CloudWatch 提供了 CloudWatch Lambda 见解,您可以为单个 Lambda 函数启用这些见解。Lambda Insights 收集、汇总和汇总系统级指标(例如,CPU时间、内存、磁盘和网络使用情况)。Lambda Insights 还会收集、汇总和汇总诊断信息(例如,冷启动和 Lambda 工作程序关闭),以帮助您隔离和快速解决问题。

Lambda Insights 使用嵌入式指标格式自动向日志组发送性能信息,该/aws/lambda-insights/日志组带有基于您的 Lambda 函数名称的日志流名称前缀。这些性能日志事件创建的 CloudWatch 指标是自动 CloudWatch 仪表板的基础。我们建议您为性能测试和生产环境启用 Lambda Insights。Lambda Insights 创建的其他指标包括memory_utilization有助于正确调整 Lambda 函数的大小,从而避免为不需要的容量付费。

应用程序指标

您还可以 CloudWatch 使用嵌入式指标格式创建和捕获自己的应用程序指标。您可以利用AWS提供的嵌入式指标格式库来创建和发送嵌入式指标格式语句。 CloudWatch集成的 Lambda CloudWatch 日志记录工具配置为处理和提取格式正确的嵌入式指标格式语句。

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。