Amazon API Gateway 监控
Amazon API Gateway 允许您创建、配置和托管 RESTful API,帮助移动应用和 Web 应用访问 AWS 服务。通过 Site24x7 的 AWS 集成,您不仅可以在 API Stage 级别,还可以在方法级别监控 API 调用、缓存、延迟、服务端和客户端错误的统计数据。
在 Stage 级别监控 API 执行
前提条件
API Gateway 会自动将 API 和 Stage 级别的指标发布到 CloudWatch。要监控资源上所有方法的 API 调用、延迟、集成延迟以及 400 和 500 错误,您需要启用详细 CloudWatch 指标。
启用详细 CloudWatch 指标:
- 登录 AWS 管理控制台,进入 API Gateway 控制台。
- 选择 API,点击 Stages。
- 在 API 的 Stage 列表中,选择相应 Stage。
- 在 Stage 编辑器中选择 Logs。
- 在 CloudWatch 设置下,选择 Enable Detailed CloudWatch Metrics启用详细 CloudWatch 指标。
- 选择 Save Changes。
设置与配置
- 如果尚未完成,请通过创建 Site24x7 IAM 用户或在您的 AWS 账户与 Site24x7 AWS 账户之间创建跨账户 IAM 角色,来启用对 AWS 资源的访问。 了解更多。
- 接下来,在 集成 AWS 账户页面中,请确保选中 API Gateway Stage 旁边的复选框。 了解更多。
策略与权限
请确保分配给 Site24x7 IAM 实体的策略文档中包含以下只读操作权限。了解更多。
- "apigateway:GET"
轮询频率
默认情况下,API Gateway 指标数据点每 1 分钟发送到 CloudWatch 一次。Site24x7 将每 1 分钟收集的数据聚合为 5 分钟平均值。 了解更多。
IT 自动化
您可以为 Site24x7 支持的 AWS 服务添加自动化。登录 Site24x7,转到 管理 > IT 自动化模板 (+) > 添加自动化模板。添加自动化后,您可以安排它们按顺序依次执行。
您现在可以使用 Amazon API Gateway 自动化,自动调用 Amazon API Gateway 中的 API。
支持的指标
Site24x7 在 API Stage 级别收集以下指标。
| 指标 | 描述 | 数据类型 | 统计方式 |
|---|---|---|---|
| 4XX 错误 | 统计捕获的客户端错误数量 | 计数 | 求和 |
| 5XX 错误 | 统计捕获的服务端错误数量 | 计数 | 求和 |
| 缓存命中数 | 统计从 API 缓存中获取响应的请求数量 | 计数 | 求和 |
| 缓存未命中数 | 统计在启用缓存时由后端处理的请求数量 | 计数 | 求和 |
| 请求数 | 统计 API 请求总数 | 计数 | 求和 |
| 集成延迟 | 统计 API Gateway 将请求路由到后端与接收到后端响应之间的耗时 | 毫秒 | 平均值及第 95 百分位 |
| 延迟 | 统计 API Gateway 从客户端接收请求到向客户端返回响应之间的耗时 | 毫秒 | 平均值及第 95 百分位 |
API 设置
| 属性 | 描述 |
|---|---|
| API 端点 | API 的 URI |
| API 密钥选择表达式 | 当服务判断请求仅允许提供了有效 API 密钥的客户端访问时,将对此表达式进行求值 |
| 禁用执行 API 端点 | 指定客户端是否可以使用默认的 execute-api 端点调用您的 API |
| 创建日期 | API 的创建日期和时间 |
| 路由选择表达式 | 当服务选择路由以处理传入消息时,将对路由选择表达式进行求值 |
Stage 设置
| 属性 | 描述 |
|---|---|
| 协议类型 | API 类型:HTTP、WebSocket 或 REST |
| Stage 名称 | Stage 的名称 |
| API Gateway ID | API 的 ID |
| API Gateway 名称 | API Gateway 的名称 |
| 区域 | API 所在的区域 |
| 自动部署 | 指定部署是否已自动发布 |
| 创建日期 | Stage 的创建日期 |
| 最后更新时间 | Stage 的最后更新时间 |
| 部署 ID | 部署标识符 |
| 描述 | 部署的描述 |
| 客户端证书 ID | Stage 的客户端证书标识符,仅支持 WebSocket API |
| Stage 变量 | 为 Stage 资源定义 Stage 变量的映射 |
跨域资源共享 (CORS) 详情
| 属性 | 描述 |
|---|---|
| 允许凭证 | 指定 CORS 请求中是否包含凭证,仅支持 HTTP API |
| 允许的请求头 | 允许的请求头集合,仅支持 HTTP API |
| 允许的方法 | 允许的 HTTP 方法集合,仅支持 HTTP API |
| 允许的来源 | 允许的来源集合,仅支持 HTTP API |
| 公开的响应头 | 公开的响应头集合,仅支持 HTTP API |
| 最大缓存时间 | 浏览器应缓存预检请求结果的秒数,仅支持 HTTP API |
访问日志设置
| 属性 | 描述 |
|---|---|
| 目标 ARN | 用于接收访问日志的 CloudWatch 日志组的 ARN |
| 格式 | 访问日志数据的单行格式,由所选的 $context 变量指定,格式中至少需包含 $context.requestId |
默认路由设置
| 属性 | 描述 |
|---|---|
| 已启用详细指标 | 指定是否为 Stage 启用了详细指标 |
| 限流突发限制 | 指定 Stage 的限流突发限制 |
| 限流速率限制 | 指定 Stage 的限流速率限制 |
| 数据追踪已启用 | 指定是否为此路由启用了数据追踪日志记录 |
| 日志级别 | 指定此路由的日志级别:INFO、ERROR 或 OFF |
查看数据
- 登录 Site24x7 控制台,点击 AWS,选择被监控的 AWS 账户。
- 从菜单下拉中选择 API Gateway Stage。
- 在已监控的 API Stage 列表中,选择您希望查看指标的 Stage。
- 适用于您资源的各种时间序列图表(指标的可视化表示)可在 API Gateway 摘要标签页中查看。
被监控的资源
查看与您的 API Gateway Stage 关联的已监控 API Gateway 资源和路由列表。点击单个条目可查看与该资源关联的性能及资源使用统计信息。您还可以设置阈值,并在任何服务发生故障时通过点击操作栏下的铅笔图标进行通知配置。
拓扑视图
拓扑视图标签页提供实时的以资源为中心的依赖关系图。它能动态追踪您的 API Gateway 资源与周围 AWS 基础设施的实时连接关系,帮助在告警触发时快速定位根本原因。如果某个关联组件处于严重状态,该状态将在拓扑视图中标注显示,同时附有中断原因,让您无需离开监视器页面即可精确定位故障点。与账户级拓扑视图不同,此标签页将可视化范围限定于单个资源,精准回答以下问题:此 API Gateway 资源连接了哪些内容,若出现故障会影响什么?您可以从单个资源追踪完整的依赖链,直至其主要父实体、服务类型、区域和 AWS 账户层级。
在方法级别监控 API 执行
针对与资源路径关联的所有已定义方法,监控、可视化 API 执行指标并设置告警,以解决 API 执行和实现中的问题。
前提条件
- 需已启用 Amazon API Gateway 集成。
- Site24x7 控制台中的 API Gateway Stage 监视器需处于活跃状态。
- 需为 API Stage 启用详细 CloudWatch 指标。
添加 API Gateway 资源监视器
本节介绍如何发现并将 API Gateway 资源添加为监视器:
- 登录 Site24x7 控制台,点击 AWS,选择被监控的 AWS 账户。
- 从菜单下拉中选择 API Gateway 资源。
发现
本节介绍如何从 API Stage 中选择特定资源。
- 从下拉菜单中选择一个 API Stage(不支持多选)
- 接下来,输入适当的正则表达式以匹配所选 API Stage 中的资源。在输入字符串前后添加 .* 作为前缀或后缀,以从 API Stage 中选择特定资源。
例如,假设 API Stage 暴露了多个资源,如 /income、/user、/expense。您可以输入 .*/income,仅包含属于该特定路径的资源。 - 点击 发现资源。
添加
匹配正则表达式模式的所有资源及其方法将显示在下方。
- 勾选您希望监控的资源路径旁边的复选框
- 点击 添加所选资源,将其添加为监视器。
查看数据
- 登录 Site24x7 控制台。
- 点击 AWS,选择被监控的 AWS 账户。
- 从菜单下拉中选择 API Gateway 资源。
- 在已监控资源列表中,选择您希望查看指标的资源。
元数据
API 概述
API 概述标签页提供服务状态和配置信息。
Stage 属性
| 属性 | 描述 |
|---|---|
| API Gateway ID | 显示 API 标识符。 |
| API Gateway 名称 | 显示 API Gateway 名称。 |
| 区域 | 显示 API Gateway 所在的区域。 |
| 属性 | 描述 |
|---|---|
| Stage 名称 | 显示 Stage 的名称(API Gateway 调用 URI 中的第一个路径段) |
| 创建日期 | 显示 Stage 创建时的时间戳。 |
| 最后更新时间 | 显示 Stage 最后更新时的时间戳。 |
| 部署 ID | 显示 Stage 指向的部署标识符。 |
| 描述 | 显示 Stage 的描述。 |
| 缓存集群 | 显示此 Stage 是否启用了缓存集群。 |
| 缓存集群大小 | 缓存集群的大小(如已启用)。 |
| 缓存集群状态 | 缓存集群的状态(如已启用)。 |
| 文档版本 | 显示关联的 API 文档版本。 |
| 访问日志 | 显示访问日志记录设置。 |
| 客户端证书 ID | 显示 API Stage 的客户端证书标识符。 |
| Stage 变量 | 显示 Stage 变量。 |
方法设置
| 属性 | 描述 |
|---|---|
| 指标监控 | 指定是否启用了 Amazon CloudWatch 指标。 |
| 日志级别 | 指定方法的日志级别(OFF、ERROR 或 INFO)。 |
| 数据追踪 | 指定是否为此方法启用了追踪日志记录。 |
| 限流突发限制 | 指定限流突发限制。 |
| 限流速率限制 | 指定限流速率限制。 |
| 目标 ARN | 显示接收访问日志的 CloudWatch 日志组的 ARN。 |
| API 缓存 | 显示是否应为请求缓存并返回响应。 |
| 缓存生存时间 | 显示缓存响应的生存时间 (TTL),单位为秒。 |
| 缓存数据加密 | 显示缓存响应是否已加密。 |
| 需要授权 | 显示缓存失效请求是否需要授权。 |
| 处理授权请求 | 显示如何处理缓存失效的未授权请求。 |
金丝雀设置
| 属性 | 描述 |
|---|---|
| 金丝雀部署 ID | 显示 Stage 指向的金丝雀部署标识符。 |
| 流量百分比 | 显示引导至金丝雀部署的流量百分比。 |
| 金丝雀 Stage 变量 | 显示金丝雀发布部署中覆盖的 Stage 变量。 |
| 使用 Stage 缓存 | 指示金丝雀部署 Stage 是否使用 Stage 缓存。 |
资源设置
| 属性 | 描述 |
|---|---|
| 资源 ID | 显示资源标识符。 |
| 父级 ID | 显示引导至金丝雀部署的流量百分比。 |
| 资源路径 | 显示资源的完整路径。 |
| 方法 | 显示方法的 HTTP 动词。 |
在路由级别监控 API 执行
发现、监控、可视化 HTTP 和 WebSocket API Gateway 上所有已定义路由的 API 执行指标并设置告警,帮助追踪路由到不同 Stage 的情况。
前提条件
- 需已启用 Amazon API Gateway 集成。
- API Stage 监视器的路由需处于活跃状态。
- 需为 Stage 启用详细 CloudWatch 指标。
添加和发现 API Gateway 路由监视器
按照以下步骤发现并将 API Gateway 路由添加为监视器:
- 登录 Site24x7 网页客户端,转到 云服务 > AWS,然后选择被监控的 AWS 账户。
- 从下拉菜单中选择 API Gateway 路由,然后点击 发现。或者,点击左侧面板中 API Gateway 路由旁的 + 按钮。
- 在弹出的添加 API Gateway 路由监视器界面中,按照以下步骤操作:
- 选择 API Gateway Stage:选择与 HTTP 和 WebSocket API Gateway 关联的路由。
- 使用正则表达式选择路由:输入正则表达式以匹配所选 API Stage 中的路由。在输入字符串前后添加 .* 作为前缀或后缀,以从 API Stage 中选择特定资源。请参考下方示例。
- 点击 发现。
- 未启用详细指标:发现并监控 API Gateway 路由以获取详细信息。为此,请点击 启用详细指标。
启用 API Gateway 路由监控将在您的 AWS 账户中产生额外费用。
使用正则表达式选择路由的示例
- 如果 API Stage 暴露了多个资源,如 /income、/user 和 /expense,可以输入 .*/income,仅包含属于该特定路径的资源。
- 路由由两部分组成:HTTP 方法和资源路径。如果要按方法筛选,可以指定方法名称,如 GET、POST、OPTION、PUT 或 DELETE
- GET /bookStore/allBooks - 获取所有书籍信息
- GET /bookStore/book?bookName=AWS - 获取所有 AWS 书籍详情
- POST /bookStrore/addDetail/book?id=10?name=JAVA?price=200 - 向书店添加书籍详情
- DELETE /bookStrore/removeDetail?id=10?name=JAVA - 删除特定书籍详情
- 如果要列出所有 GET 方法资源,可以输入 GET 来列出属于该特定方法的所有资源。结果如下:
- GET /bookStore/allBooks - 获取所有书籍信息
- GET /bookStore/book?bookName=AWS - 获取所有 AWS 书籍详情
已发现的 API Gateway 路由
- 只有在上一步中点击了 启用详细指标后,此部分才会显示。
- 已发现的 API Gateway 路由路径将被显示。勾选您希望监控的 API Gateway 路由路径旁边的复选框。
- 然后点击 添加所选路由。
查看 API Gateway 路由监控数据
- 从 Site24x7 网页客户端,转到 云服务 > AWS,然后选择被监控的 AWS 账户。
- 从下拉菜单中选择 API Gateway 路由。
- 在监视器列表中,选择您希望查看指标的 API Gateway 路由监视器。
监控 API Gateway 路由
HTTP 级别的性能指标
| 属性 | 描述 | 数据类型 | 统计方式 |
|---|---|---|---|
| 4xx 错误 | 统计捕获的客户端错误数量 | 计数 | 求和 |
| 5xx 错误 | 统计捕获的服务端错误数量 | 计数 |
求和 |
| 请求数 | 统计 API 请求总数 | 计数 | 求和 |
| 集成延迟 | 统计 API Gateway 将请求路由到后端与接收到响应之间的耗时 | 毫秒 | 平均值及第 95 百分位 |
| 延迟 | 统计 API Gateway 从客户端接收请求到向客户端返回响应之间的耗时 | 毫秒 | 平均值及第 95 百分位 |
| 处理的数据量 | API Gateway 路由处理的总数据量 | 兆字节 | 求和 |
WebSocket 级别的性能指标
| 属性 | 描述 | 数据类型 | 统计方式 |
|---|---|---|---|
| 连接数 | 发送到 $connect 路由集成的消息数量 | 计数 | 求和 |
| 消息数 | 发送到 WebSocket API 或从 WebSocket API 发送到客户端的消息数量 | 计数 | 求和 |
| 集成错误 | 从集成返回 4XX/5XX 响应的请求数量 | 计数 | 求和 |
| 客户端错误 | 在调用集成之前,API Gateway 返回 4XX 响应的请求数量 | 计数 | 求和 |
| 执行错误 | 调用集成时发生的错误 | 计数 | 求和 |
| 集成延迟 | API Gateway 向集成发送请求与接收到集成响应之间的时间差。回调和模拟集成不计入此指标 | 毫秒 | 平均值 |
配置
| 属性 | 描述 |
|---|---|
| API Gateway ID | 被监控路由的 API Gateway ID |
| API Gateway 名称 | 被监控路由的 API Gateway 名称 |
| 区域 | API Gateway 所部署的区域 |
| Stage 名称 | 被监控路由的 Stage 名称 |
| 路由 ID | 被监控路由的 ID |
| 资源端点 URL | 被监控 API Gateway 路由的 URL |
| 资源路径 | 被监控 API Gateway 路由的路由键,由 HTTP 方法和资源路径组合而成 |
| 方法 | 路由的 HTTP 方法 |
| 协议类型 | API 类型 |
| 需要 API 密钥 | 指定此路由是否需要 API 密钥,仅支持 WebSocket API |
| 授权 | 显示被监控路由是否启用了授权 |
| 目标 | 路由的目标 |
集成详情
| 属性 | 描述 |
|---|---|
| 连接类型 | 与集成端点的网络连接类型 |
| 连接 ID | 用于私有集成的 VPC 链接 ID,仅支持 HTTP API |
| 集成 ID | 集成的标识符 |
| 集成方法 | 指定集成的 HTTP 方法类型 |
| 集成类型 | 集成类型,如 AWS、AWS_PROXY、HTTP、HTTP_PROXY 或 MOCK |
| 集成 URI | Lambda 函数的 URI、完整限定 URL,或 Application Load Balancer 侦听器、Network Load Balancer 侦听器或 AWS Cloud Map 服务的 ARN |
| 有效载荷格式版本 | 指定发送到集成的有效载荷格式 |
| 超时时间 | WebSocket API 自定义超时为 50 至 29,000 毫秒,HTTP API 为 50 至 30,000 毫秒 |
| 内容处理策略 | 指定如何处理响应有效载荷内容类型转换 |
| 描述 | 集成的描述 |
| 集成子类型 | 集成的子类型,可以是 AWS、AWS_PROXY、HTTP、HTTP_PROXY 或 MOCK |
| 直通行为 | 根据请求中的 Content-Type 请求头及 Integration 资源上指定为 requestTemplates 属性的可用映射模板,指定传入请求的直通行为 |
| 请求参数 | 对于 WebSocket API,这是一个键值映射,指定从方法请求传递到后端的请求参数。对于具有指定 integrationSubtype 的 HTTP API 集成,请求参数是传递给 AWS_PROXY 集成的键值映射 |
| 请求模板 | 表示根据客户端发送的 Content-Type 请求头值应用于请求有效载荷的 Velocity 模板映射 |
| 响应模板 | 在将响应返回给客户端之前,对后端集成的 HTTP 响应进行转换的模板 |
| TLS 配置 | 私有集成的 TLS 配置 |
授权详情
| 属性 | 描述 |
|---|---|
| 授权方 ID | 授权方标识符 |
| 授权方类型 | 指定使用传入请求参数的 Lambda 函数为 REQUEST,或 JSON Web Token 为 JWT |
| 授权方 URI | 授权方的统一资源标识符 |
| 身份来源 | 请求授权的身份来源 |
| 名称 | 授权方的名称 |
| JWT 配置 | 表示 JWT 授权方的配置 |
| 启用简单响应 | 指定 Lambda 授权方是否以简单格式返回响应。如果启用,Lambda 授权方可以返回布尔值而非 IAM 策略 |
| 有效载荷格式版本 | 指定发送到 HTTP API Lambda 授权方的有效载荷格式 |
| 授权方结果 TTL | 缓存授权方结果的生存时间,单位为秒 |
许可
每个 API Gateway 路由监视器均被视为基础监视器。
