教程:监视已发布的 API

适用于:所有 API 管理层级

通过 Azure Monitor,可直观显示、查询、路由和存档来自 Azure API 管理服务的指标或日志并对其执行操作。

在本教程中,你将了解如何执行以下操作:

  • 查看 API 的指标
  • 设置警报规则
  • 查看活动日志
  • 启用和查看资源日志

注意

API 管理支持使用各种附加工具来观察 API,包括内置分析以及与 Application Insights 的集成。 了解详细信息

先决条件

查看 API 的指标

API 管理每分钟发出一次指标,几乎可让你实时了解 API 的状态和运行状况。 下面是最常用的指标。 有关所有可用指标的列表,请参阅支持的指标

  • 容量 - 帮助做出有关升级/降级 API 管理服务的决策。 指标每分钟发出,在报告时反映估计的网关容量。 指标范围为 0-100,是根据 CPU 和内存等网关资源的利用率和其他因素计算的。

  • 请求 - 帮助分析通过 API 管理服务的 API 流量。 指标每分钟发出一次,并报告带有维度的网关请求数。 按响应代码、位置、主机名和错误筛选请求。

重要

已停用以下指标:网关请求总数、成功的网关请求数、未经授权的网关请求数、失败的网关请求数、其他网关请求数。 请迁移到提供非常相似功能的请求指标。

API 管理概述中“指标”的屏幕截图

访问指标:

  1. Azure 门户,导航到 API 管理实例。 在“概述”页中的“监视”选项卡上查看 API 的关键指标。

  2. 要详细调查指标,请从左侧菜单中选择“监控”>“指标”。

    门户上“监视”菜单中的“指标”项的屏幕截图。

  3. 从下拉列表中选择所需的指标。 例如,“请求”。

  4. 该图显示 API 调用总数。 调整时间范围以重点关注感兴趣的时段。

  5. 可以使用请求指标的维度来筛选图表。 例如,依次选择“添加筛选器”和“后端响应代码类别”,然后输入值 500。 该图表显示 API 后端中失败的请求数。

设置警报规则

可以基于指标和活动日志接收警报。 在 Azure Monitor 中,配置警报规则以便在触发该规则时执行某个操作。 常见操作包括:

  • 发送电子邮件通知
  • 调用 Webhook
  • 调用 Azure 逻辑应用

若要基于请求指标配置示例警报规则,请执行以下操作:

  1. Azure 门户,导航到 API 管理实例。

  2. 从左侧菜单中选择“监控”>“警报”。

    门户上“监视”菜单中的“警报”选项的屏幕截图。

  3. 选择“+ 创建”>“警报规则”。

  4. 在“条件”选项卡上

    1. 在“信号名称”中,选择“请求” 。
    2. 在“警报逻辑”中,查看或修改警报的默认值。 例如,更新静态阈值,即触发警报的发生次数
    3. 在“按维度拆分”的“维度名称”中,选择“网关响应代码类别” 。
    4. 在“维度值”中,选择“4xx”,表示“请求未经授权”或“请求无效”等客户端错误 。 如果未显示维度值,请选择“添加自定义值”,然后输入 4xx。
    5. 在“何时评估”中,接受默认设置,或选择其他设置来配置规则的运行频率。 选择“下一步” 。

    在门户中配置警报逻辑的屏幕截图。

  5. 在“操作”选项卡上,选择或创建一个或多个操作组,以通知用户发生了警报并执行操作。 例如,创建一个新操作组以向 admin@contoso.com 发送通知电子邮件。 有关详细步骤,请参阅在 Azure 门户中创建和管理器操作组

    在门户中为新操作组配置通知的屏幕截图。

  6. 在“创建警报规则”的“详细信息”选项卡上,输入警报规则的名称和说明,然后选择严重性级别。

  7. (可选)配置剩余设置。 然后,在“查看 + 创建”选项卡上选择“创建”。

  8. (可选)使用 HTTP 客户端模拟触发警报的请求来测试警报规则。 例如,在终端中运行以下命令,将 API 管理主机名替换为 API 管理实例的主机名:

    curl GET https://contoso.azure-api.cn/non-existent-endpoint HTTP/1.1 
    

    根据评估期触发警报,并将电子邮件发送到 admin@contoso.com。

    警报还会显示在 API 管理实例的“警报”页。

    门户中的警报的屏幕截图。

活动日志

活动日志提供对 API 管理服务上的操作的见解。 通过活动日志,可确定对 API 管理服务执行的任何写入操作 (PUT、POST、DELETE) 的“操作内容、操作人员和操作时间”。

注意

活动日志不包括读取 (GET) 操作或在 Azure 门户中执行的操作。

可在 API 管理服务中访问活动日志,或在 Azure Monitor 中访问所有 Azure 资源的日志。

门户中的活动日志的屏幕截图。

若要查看活动日志,请执行以下操作:

  1. Azure 门户,导航到 API 管理实例。

  2. 选择“活动日志”。

    门户上“监视”菜单中的“活动日志”项的屏幕截图。

  3. 选择所需的筛选范围,然后选择“应用”。

资源日志

资源日志(Azure Monitor 日志)提供了大量有关 API 管理操作和错误的信息,这些信息对于审核和故障排除非常重要。 通过诊断设置启用后,日志将收集 API 管理网关接收和处理的有关 API 请求的信息。

注意

消耗层不支持收集资源日志。

若要配置资源日志,请执行以下操作:

  1. Azure 门户,导航到 API 管理实例。

  2. 选择“监视”>“诊断设置”

    门户上“监视”菜单中的“诊断设置”项的屏幕截图。

  3. 选择“+ 添加诊断设置”。

  4. 选择要收集的日志或指标。

    将日志和指标发送到的位置有多个选项。 例如,将资源日志与指标一起存档到存储帐户,将其流式传输到事件中心,或者将其发送到 Log Analytics 工作区。

    提示

    如果选择 Log Analytics 工作区,则可以选择将数据存储在特定于资源的 ApiManagementGatewayLogs 表中,或存储在常规 AzureDiagnostics 表中。 我们建议使用特定于资源的表作为支持此选项的日志目标。 了解详细信息

  5. 配置一个或多个日志目标的详细信息后,选择“保存”。

注意

如果 API 管理服务的 MinApiVersion 属性设置为高于 2022-09-01-preview 的任何 API 版本,则添加诊断设置对象可能会导致失败。

有关详细信息,请参阅创建诊断设置以将平台日志和指标发送到不同的目标

在 Azure Monitor 中查看日志和指标

如果在 Log Analytics 工作区中启用日志或指标的收集,则数据可能需要经过几分钟才会显示在 Azure Monitor 中。

若要查看数据,请执行以下操作:

  1. Azure 门户,导航到 API 管理实例。

  2. 在左侧菜单中选择“日志”。

    门户上“监视”菜单中的“日志”项的屏幕截图。

  3. 运行查询以查看数据。 可以运行提供的多个示例查询,也可以运行自己的查询。 例如,以下查询检索 ApiManagementGatewayLogs 表中最近 24 小时的数据:

    ApiManagementGatewayLogs
    | where TimeGenerated > ago(1d) 
    

    在门户中查询 ApiManagementGatewayLogs 表的屏幕截图。

有关使用资源日志进行 API 管理的详细信息,请参阅:

修改 API 日志记录设置

默认情况下,在创建诊断设置以启用资源日志收集时,将为所有 API 启用日志记录并使用默认设置。 可以调整所有 API 的日志记录设置,或者替代单个 API 的设置。 例如,调整采样率或数据详细程度,为标头、请求或响应有效负载启用日志记录,或者为某些 API 禁用日志记录。

有关日志记录设置的详细信息,请参阅诊断日志记录设置参考

若要为所有 API 配置日志记录设置,请执行以下操作:

  1. 在 API 管理实例的左侧菜单中,选择“API”>“API”>“所有 API”。
  2. 在顶部栏中选择“设置”选项卡。
  3. 向下滚动到“诊断日志”部分,然后选择“Azure Monitor”选项卡。
  4. 查看设置并根据需要进行更改。 选择“保存”。

若要为特定的 API 配置日志记录设置,请执行以下操作:

  1. 在 API 管理实例的左侧菜单中选择“API”>“API”,然后选择 API 的名称。
  2. 在顶部栏中选择“设置”选项卡。
  3. 向下滚动到“诊断日志”部分,然后选择“Azure Monitor”选项卡。
  4. 查看设置并根据需要进行更改。 选择“保存”。

重要

如果启用,则记录的请求或响应有效负载最多可为 8,192 字节。 API 管理还对发送到 Azure Monitor 的诊断日志条目强制实施 32 KB 限制,这包括有效负载和其他属性(如状态代码、标头和时间戳)。 如果属性的组合大小超过 32 KB,API 管理则会删除所有正文和跟踪内容来剪裁条目。

后续步骤

在本教程中,你了解了如何执行以下操作:

  • 查看 API 的指标
  • 设置警报规则
  • 查看活动日志
  • 启用和查看资源日志

转到下一教程: