监控 - AWS Amplify 托管

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

监控

AWS Amplify 通过 Amazon 发布指标, CloudWatch 并提供访问日志,其中包含有关向您的应用程序发出的请求的详细信息。使用本节中的主题可了解如何使用这些指标和日志来监控您的应用程序。

使用监控 CloudWatch

AWS Amplify 已与亚马逊集成 CloudWatch,允许您近乎实时地监控 Amplify 应用程序的指标。您可以创建警报,以便在指标超过您设置的阈值时发送通知。有关该 CloudWatch 服务工作原理的更多信息,请参阅 Amazon CloudWatch 用户指南

指标

Amplify 在AWS/AmplifyHosting命名空间中支持六个 CloudWatch 指标,用于监控应用程序的流量、错误、数据传输和延迟。这些指标每隔一分钟汇总一次。 CloudWatch 监控指标是免费的,不计入CloudWatch 服务配额

并非所有可用的统计数据都适用于每个指标。在下表中,每个指标的描述中列出了最相关的统计数据。

指标 描述

请求

您的应用程序收到的查看器请求总数。

最相关的统计数据是 Sum。使用 Sum 统计数据可获取请求总数。

BytesDownloaded

查看器为 GETHEADOPTIONS 请求从您的应用程序传出(下载)的数据总量,以字节为单位。

最相关的统计数据是 Sum

BytesUploaded

使用 POSTPUT 请求传输到您的应用程序(上传)的数据总量,以字节为单位。

最相关的统计数据是 Sum

4XXErrors

在 HTTP 状态码 400-499 范围内返回错误的请求数。

最相关的统计数据是 Sum。使用 Sum 统计数据以得出这些错误的总出现次数。

5XXErrors

在 HTTP 状态码 500-599 范围内返回错误的请求数。

最相关的统计数据是 Sum。使用 Sum 统计数据以得出这些错误的总出现次数。

延迟

第一个字节的时间(以秒为单位)。这是 Amplify Hosting 收到请求到它将响应返回给网络之间所经过的总时间。这还不包括响应到达查看者设备时遇到的网络延迟。

最相关的统计数据是 AverageMaximumMinimump10p50p90p95p100

使用 Average 统计数据可评估预期延迟。

Amplify 提供以下 CloudWatch 指标维度。

维度 描述

应用程序

指标数据由应用程序提供。

AWS 账户

中提供了所有应用程序的指标数据 AWS 账户。

你可以在 AWS Management Console https://console.aws.amazon.com/cloudwatch/ 中访问 CloudWatch 指标。或者,您可以使用以下程序在 Amplify 控制台中访问指标。

在 Amplify 控制台中访问指标
  1. 登录 AWS Management Console 并打开 Amplify 控制台。

  2. 选择要查看其指标的应用程序。

  3. 在导航窗格中,依次选择应用程序设置监控

  4. 监控页面上,选择指标

告警

您可以在 Amplify 控制台中创建 CloudWatch 警报,在满足特定条件时发送通知。警报会监视单个 CloudWatch 指标,并在该指标超过指定评估周期的阈值时发送 Amazon Simple Notification Service 通知。

您可以使用 CloudWatch控制台中的指标数学表达式或使用 CloudWatch API 创建更高级的警报。例如,您可以创建一个警报,以在连续三个期间内的 4XXErrors 百分比超过 15% 时通知您。有关更多信息,请参阅 Amazon CloudWatch 用户指南中的基于指标数学表达式创建 CloudWatch 警报

标准 CloudWatch 定价适用于警报。有关更多信息,请参阅 Amazon CloudWatch 定价

使用以下步骤在 Amplify 控制台中创建一个警报。

为 Amplify 指标创建 CloudWatch 警报
  1. 登录 AWS Management Console 并打开 Amplify 控制台。

  2. 选择要设置警报的应用程序。

  3. 在导航窗格中,依次选择应用程序设置监控

  4. 监控页面上,选择警报

  5. 选择创建警报

  6. 创建警报窗口中,按以下方式配置您的警报:

    1. 对于指标,从列表中选择要监控的指标的名称。

    2. 对于警报名称,输入有意义的警报名称。例如,如果您正在监视请求,则可以为警报命名 HighTraffic。名称只能包含 ASCII 字符。

    3. 对于设置通知,执行以下操作之一:

        1. 选择新建以设置新 Amazon SNS 主题。

        2. 对于电子邮箱地址中,输入通知收件人的电子邮箱地址。

        3. 选择添加新电子邮箱地址以添加其他收件人。

        1. 选择现有以重复使用 Amazon SNS 主题。

        2. 对于 SNS 主题,从列表中选择现有 Amazon SNS 主题的名称。

    4. 每当指标统计数据,按如下方式设置警报的条件:

      1. 指定指标是否必须大于、小于或等于阈值。

      2. 指定阈值。

      3. 指定必须处于警报状态才能调用警报的连续评估周期数。

      4. 然后指定评估期限的时间长度。

    5. 选择创建警报

注意

您指定的每个 Amazon SNS 收件人都会收到一封来自 AWS 通知的确认电子邮件。电子邮件包含一个链接,收件人必须遵循该链接以确认其订阅并接收通知。

SSR 应用程序的 Amazon CloudWatch 日志

Amplify 将有关你的 Next.js 运行时的信息发送到你的 Amazon CloudWatch Logs。 AWS 账户当您部署 SSR 应用程序时,Amplify 需要一个 IAM 服务角色,Amplify 在代表您调用其他服务时代入该角色。您可以允许 Amplify Hosting 计算自动为您创建服务角色,也可以指定您已创建的角色。

如果您选择允许 Amplify 为您创建 IAM 角色,则该角色将已经拥有创建 CloudWatch 日志的权限。如果您创建自己的 IAM 角色,则需要在策略中添加以下权限以允许 Amplify 访问亚马逊 CloudWatch 日志。

logs:CreateLogStream logs:CreateLogGroup logs:DescribeLogGroups logs:PutLogEvents

有关服务角色的更多信息,请参阅 添加服务角色。有关部署服务端渲染的应用程序的更多信息,请参阅 使用 Amplify Hosting 部署服务器端渲染的应用程序

访问日志

Amplify 会存储您在 Amplify 中托管的所有应用程序的访问日志。访问日志包含有关对托管应用程序做出的请求的信息。在您删除应用程序之前,Amplify 会保留该应用程序的所有访问日志。Amplify 控制台中提供了应用程序的所有访问日志。但是,访问日志的每个单独请求都限制在您指定的两周时间段内。

Amplify 从不重复使用客户之间的 CloudFront 分配。Amplify 会提前创建 CloudFront 发行版,这样在部署新应用程序时您就不必等待 CloudFront分配的创建了。在将这些分配分配给 Amplify 应用程序之前,它们可能会收到来自机器人的流量。但是,它们被配置为在分配之前始终以未找到响应。如果您的应用程序的访问日志包含您创建应用程序之前一段时间的条目,则这些条目与该活动相关。

重要

建议您使用日志来了解内容的请求性质,而不是作为所有请求的完整描述。Amplify 将尽力提供访问日志。特定请求的日志条目可能会在实际处理该请求之后很久才进行传输,而且极少数情况下,可能根本不会传输日志条目。如果访问日志中省略了某个日志条目,则访问日志中的条目数将与 AWS 账单和使用情况报告中显示的使用量不匹配。

使用以下步骤检索应用程序的访问日志。

查看访问日志
  1. 登录 AWS Management Console 并打开 Amplify 控制台。

  2. 选择您要查看日志的应用程序。

  3. 在导航窗格中,选择主机,然后选择监控

  4. 监控页面上,选择访问日志

  5. 选择编辑时间范围

  6. “编辑时间范围” 窗口中,执行以下操作。

    1. 在 “开始日期” 中,指定要检索日志的两周间隔的第一天。

    2. 开始时间中,选择第一天开始检索日志的时间。

    3. 选择确认

  7. Amplify 控制台在访问日志部分显示您指定时间范围内的日志。选择下载,以 CSV 格式保存日志。

分析访问日志

要分析访问日志,您可以将 CSV 文件存储在 Amazon S3 存储桶中。分析访问日志的一种方式是使用 Athena。Athena 是一项交互式查询服务,可以帮助您分析服务数据。 AWS 您可以按照此处的step-by-step 说明创建表格。创建表格后,您可以按以下方式查询数据。

SELECT SUM(bytes) AS total_bytes FROM logs WHERE "date" BETWEEN DATE '2018-06-09' AND DATE '2018-06-11' LIMIT 100;