在 Amazon CloudWatch 中使用 Lambda Insights - AWS Lambda
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

在 Amazon CloudWatch 中使用 Lambda Insights

Amazon CloudWatch Lambda Insights 收集和聚合无服务器应用程序的 Lambda 函数运行时性能指标和日志。

公开预览

Lambda Insights 处于公开预览状态。预览版面向所有 AWS 账户开放,您无需请求访问权限。在正式发布之前,可能会添加或更改功能。

Lambda Insights 如何监视无服务器应用程序

CloudWatch Lambda Insights 是针对在 AWS Lambda 上运行的无服务器应用程序的监控和故障排除解决方案。该解决方案收集、聚合和汇总系统级指标,包括 CPU 时间、内存、磁盘和网络使用情况。它还收集、聚合和汇总诊断信息(如冷启动和 Lambda 工作线程关闭),以帮助您隔离 Lambda 函数的问题并快速解决这些问题。

Lambda Insights 使用作为 Lambda 层提供的新 CloudWatch Lambda Insights 扩展。在 Lambda 函数上启用此扩展时,它收集系统级指标,并为每次调用该 Lambda 函数发出一个性能日志事件。CloudWatch 使用嵌入式指标格式从日志事件中提取指标。有关更多信息,请参阅使用 AWS Lambda 扩展

Lambda Insights 层扩展 /aws/lambda-insights/ 日志组的 CreateLogStreamPutLogEvents

定价

对于为 Lambda Insights 启用的每个 Lambda 函数,只需为用于指标和日志的流量付费。有关定价示例,请参阅 Amazon CloudWatch 定价

支持的运行时

您可以将 Lambda Insights 与以下任何 Lambda 函数运行时一起使用:

  • .NET Core 3.1 (C#/PowerShell) (dotnetcore3.1)

  • 自定义运行时 (provided)

  • Amazon Linux 2 (provided.al2) 上的自定义运行时

  • Java 11 (Corretto) (java11)

  • Java 8 (Corretto) (java8.al2)

  • Node.js 12.x (nodejs12.x)

  • Node.js 10.x (nodejs10.x)

  • Python 3.8 (python3.8)

  • Python 3.7 (python3.7)

  • Ruby 2.7 (ruby2.7)

  • Ruby 2.5 (ruby2.5)

区域可用性

对于此预览版本,Lambda Insights 目前在以下 AWS 区域中提供:

  • 美国东部(弗吉尼亚北部)

  • 美国东部(俄亥俄)

  • 美国西部(加利福尼亚北部)

  • 美国西部(俄勒冈)

  • 亚太地区 (孟买)

  • 亚太地区(首尔)

  • 亚太地区(新加坡)

  • 亚太地区(悉尼)

  • 亚太区域(东京)

  • 加拿大 (中部)

  • 欧洲(法兰克福)

  • 欧洲(爱尔兰)

  • 欧洲(伦敦)

  • 欧洲(巴黎)

  • 欧洲(斯德哥尔摩)

  • 南美洲(圣保罗)

在 Lambda 控制台中启用 Lambda Insights

您可以对新函数和现有 Lambda 函数启用 Lambda Insights 增强监控功能。在 Lambda 控制台中启用 Lambda Insights 时, Lambda 将 Lambda Insights 扩展作为层添加到函数中,并进行验证或尝试将 CloudWatchAgentServer 策略添加到函数的执行角色

在 Lambda 控制台中启用 Lambda Insights

  1. 打开 Lambda 控制台的“函数”页面

  2. 选择您的函数。

  3. 选择 Configuration 选项卡。

  4. 监控工具窗格中,选择编辑

  5. Lambda Insights (预览) 下,打开增强监控

  6. 选择 Save

以编程方式启用 Lambda Insights

还可以使用 AWS Command Line Interface (AWS CLI)、 AWS 无服务器应用程序模型 (SAM) CLI、AWS CloudFormation 或 AWS 云开发工具包 (AWS CDK) 启用 Lambda Insights。当以编程方式启用 Lambda Insights 时,CloudWatch 将 CloudWatchLambdaInsightsExecutionRolePolicy 策略附加到函数的执行角色

有关更多信息,请参阅 Amazon CloudWatch 用户指南 中的 Lambda Insights 入门

使用 Lambda Insights 控制面板

在 CloudWatch 控制台中,Lambda Insights 控制面板有两个视图:多函数概述和单函数视图。多函数概述聚合当前 AWS 账户和区域中 Lambda 函数的运行时指标。单函数视图显示单个 Lambda 函数的可用运行时指标。

您可以使用 CloudWatch 控制台中的 Lambda Insights 控制面板多函数概述来识别过度利用和未充分利用的 Lambda 函数。您可以使用 CloudWatch 控制台中的 Lambda Insights 控制面板单函数视图对单个请求进行故障排除。

查看所有函数的运行时指标

  1. 在 CloudWatch 控制台中打开多函数页面。

  2. 从预定义的时间范围中进行选择,或选择自定义时间范围。

  3. (可选)选择添加到控制面板以将小部件添加到 CloudWatch 控制面板。

    
            Lambda Insights 控制面板上的多函数概述。

查看单个函数的运行时指标

  1. 在 CloudWatch 控制台中打开单函数页。

  2. 从预定义的时间范围中进行选择,或选择自定义时间范围。

  3. (可选)选择添加到控制面板以将小部件添加到 CloudWatch 控制面板。

    
            Lambda Insights 控制面板上的单函数视图。

有关更多信息,请参阅在 CloudWatch 控制面板上创建和使用小部件

检测函数异常的工作流程示例

您可以使用 Lambda Insights 控制面板上的多函数概述来识别和检测函数的计算内存异常。例如,如果多函数概述指示函数正在使用大量内存,则可以在内存使用情况窗格中查看详细的内存利用率指标。然后,您可以转到“指标”控制面板以启用异常检测或创建警报。

为函数启用异常检测

  1. 在 CloudWatch 控制台中打开多函数页面。

  2. 函数摘要下,选择函数的名称。

    单函数视图随即打开,其中包含函数运行时指标。

    
            Lambda Insights 控制面板上的函数摘要窗格。
  3. 内存使用情况窗格中,选择三个竖直的点,然后选择在指标中查看,以打开指标控制面板。

    
            内存使用情况窗格上的菜单。
  4. 绘成图表的指标选项卡的操作列中,选择第一个图标以便为函数启用异常检测。

    
            内存使用情况窗格的 绘成图表的指标选项卡。

有关更多信息,请参阅使用 CloudWatch 异常检测

使用查询排除函数故障的示例工作流程

您可以使用 Lambda Insights 控制面板上的单函数视图来识别函数持续时间峰值的根本原因。例如,如果多函数概述指示函数持续时间大幅增加,则可以暂停或选择持续时间窗格中的每个函数,以确定导致增加的函数。然后,您可以转到单函数视图并查看应用程序日志以确定根本原因。

对函数运行查询

  1. 在 CloudWatch 控制台中打开多函数页面。

  2. 持续时间窗格中,选择要筛选持续时间指标的函数。

    
            在持续时间窗格中选择的函数。
  3. 打开单函数页。

  4. 选择按函数名称筛选指标下拉列表,然后选择您的函数。

  5. 要查看最近 1000 个应用程序日志,请选择应用程序日志选项卡。

  6. 查看时间戳消息,以确定要进行故障排除的调用请求。

    
            最近 1000 个应用程序日志。
  7. 要显示最近 1000 次调用,请选择调用选项卡。

  8. 对于要排除故障的调用请求选择时间戳消息

    
            选择最近的调用请求。
  9. 选择查看日志下拉列表,然后选择查看性能日志

    将在 Logs Insights 控制面板中打开为您的函数自动生成的查询。

  10. 选择运行查询以便为调用请求生成日志消息。

    
            在 Logs Insights 控制面板中查询选定的函数。