监视 Azure 应用程序网关

本文介绍:

  • 可以为此服务收集的监视数据的类型。
  • 如何分析这些数据。

注意

如果已熟悉此服务和/或 Azure Monitor,并且只想了解如何分析监视数据,请参阅本文末尾附近的“分析”部分。

如果具有依赖于 Azure 资源的关键应用程序和业务流程,则需要监视并获取系统的警报。 Azure Monitor 服务会从系统的每个组件收集并聚合指标和日志。 Azure Monitor 提供可用性、性能和复原能力视图,并在出现问题时向你发送通知。 可以使用 Azure 门户、PowerShell、Azure CLI、REST API 或客户端库来设置和查看监视数据。

https://docs.azure.cn/azure-monitor/logs/logs-ingestion-api-overview

洞察力

Azure 中的某些服务在 Azure 门户中具有内置的监视仪表板,可以从此入手来监视服务。 这些仪表板称为“见解”,可以在 Azure 门户的 Azure Monitor 的“见解中心”找到它们。

无需任何配置,Azure Monitor 网络见解可为已部署的所有网络资源(包括应用程序网关)提供有关运行状况和指标的综合视图。 有关详细信息,请查看 Azure Monitor 网络见解

资源类型

Azure 使用资源类型和 ID 的概念来标识订阅中的所有内容。 同样的,Azure Monitor 根据资源类型(也称为“命名空间”)将核心监视数据组织为指标和日志。 不同的指标和日志可用于不同的资源类型。 服务可能与多种资源类型关联。

资源类型也是 Azure 中运行的每个资源的资源 ID 的一部分。 例如,虚拟机的一种资源类型是 Microsoft.Compute/virtualMachines。 有关服务及其关联资源类型的列表,请参阅资源提供程序

有关应用程序网关的资源类型的详细信息,请参阅应用程序网关监视数据参考

数据存储

对于 Azure Monitor:

  • 指标数据存储在 Azure Monitor 指标数据库中。
  • 日志数据存储在 Azure Monitor 日志存储中。 Log Analytics 是 Azure 门户中可以查询此存储的工具。
  • Azure 活动日志是一个单独的存储区,在 Azure 门户中有自己的接口。
  • 可选择将指标和活动日志数据路由到 Azure Monitor 日志数据库存储,以便可使用 Log Analytics 查询数据并将其与其他日志数据关联。

有关 Azure Monitor 如何存储数据的详细信息,请参阅 Azure Monitor 数据平台

对于应用程序网关,资源特定的模式将创建三个表:

  • AGWAccessLogs
  • AGWPerformanceLogs
  • AGWFirewallLogs

注意

资源特定的选项目前在所有公共区域中可用

现有用户可以继续使用 Azure 诊断,也可以通过将诊断设置中的切换开关切换到“资源特定”或将 API 目标中的切换开关切换到“专用”来选择使用专用表。双模式不可行。 所有日志中的数据可以流向 Azure 诊断或专用表。 但是,可以同时指定多个诊断设置,其中一个数据流指向 Azure 诊断,另一个数据流使用资源特定的表。

在 Log Analytics 中选择目标表:所有 Azure 服务最终都会使用资源特定的表。 在进行这种转换的过程中,可以在诊断设置中使用切换按钮选择 Azure 诊断或资源特定的表。 默认情况下,该切换开关设置为“资源特定”,在此模式下,新选定类别的日志将发送到 Log Analytics 中的专用表,而现有流保持不变。 请参阅以下示例。

门户中应用程序网关的资源 ID 的屏幕截图。

工作区转换:选择“资源特定”选项可以在使用工作区转换引入数据之前筛选和修改数据。 这种方法可以提供精细控制,使你能够通过降低数据成本并增强安全性来重点关注日志中最相关的信息。

有关设置工作区转换的详细说明,请参阅教程:使用 Azure 门户将工作区转换添加到 Azure Monitor 日志

Azure Monitor 平台指标

Azure Monitor 为大多数服务提供平台指标。 这些指标是:

  • 针对每个命名空间单独定义。
  • 存储在 Azure Monitor 时序指标数据库中。
  • 是轻型数据,并且能够支持准实时警报。
  • 用于跟踪资源随时间推移的性能变化。

集合:Azure Monitor 会自动收集平台指标。 不需要任何配置。

路由:通常还可将平台指标路由到 Azure Monitor 日志/Log Analytics,从而可以使用其他日志数据对其进行查询。 有关详细信息,请参阅指标诊断设置。 有关如何为服务配置诊断设置,请参阅在 Azure Monitor 中创建诊断设置

有关可以为 Azure Monitor 中的所有资源收集的所有指标的列表,请参阅 Azure Monitor 中支持的指标

Azure 门户中每个应用程序网关的“概述”页包含以下指标:

  • 请求总数合计
  • 失败的请求合计
  • 按 HttpStatus 列出的响应状态合计
  • 吞吐量合计
  • CurrentConnection 合计
  • 按 BackendPool HttpSettings 列出的正常主机平均计数
  • 按 BackendPool HttpSettings 列出的不正常主机平均计数

有关 Azure 应用程序网关的可用指标列表,请参阅应用程序网关监视数据参考

有关可用的 Web 应用程序防火墙 (WAF) 指标,请参阅应用程序网关 WAF v2 指标应用程序网关 WAF v1 指标

Azure Monitor 资源日志

借助资源日志,可以深入了解 Azure 资源已执行的操作。 日志是自动生成的,但必须将日志路由到 Azure Monitor 日志以保存或查询它们。 日志按类别组织。 给定的命名空间可能具有多个资源日志类别。

收集:在创建诊断设置并将日志路由到一个或多个位置之前,不会收集和存储资源日志。 创建诊断设置时,请指定要收集的日志类别。 可以通过多种方式创建和维护诊断设置,包括 Azure 门户、编程方式以及通过 Azure Policy。

路由:建议的默认设置是将资源日志路由到 Azure Monitor 日志,以便可以使用其他日志数据查询它们。 其他位置(例如 Azure 存储、Azure 事件中心和某些 Azure 监视合作伙伴)也可用。 有关详细信息,请参阅 Azure 资源日志资源日志目标

有关收集、存储和路由资源日志的详细信息,请参阅 Azure Monitor 中的诊断设置

有关 Azure Monitor 中所有可用资源日志类别的列表,请参阅 Azure Monitor 中支持的资源日志

Azure Monitor 中的所有资源日志都具有相同的标头字段,后跟特定于服务的字段。 Azure Monitor 资源日志架构概述了常见架构。

Azure Monitor 日志中的数据以表形式存储,每个表具有自己独有的属性集。

请参阅应用程序网关监视数据参考以了解:

  • 为应用程序网关收集的资源日志类型的列表。
  • 由 Azure Monitor 日志使用并可通过 Log Analytics 查询的表的列表。
  • 应用程序网关的可用资源日志类别、其关联的 Log Analytics 表以及日志架构。

Azure 活动日志

活动日志包含订阅级事件,这些事件跟踪从资源外部看到的每个 Azure 资源的操作;例如,创建新资源或启动虚拟机。

收集:活动日志事件会自动生成并收集在单独的存储中,以便在 Azure 门户中查看。

路由:可将活动日志数据发送到 Azure Monitor 日志,以便可以将它们与其他日志数据一起进行分析。 其他位置(例如 Azure 存储、Azure 事件中心和某些 Azure 监视合作伙伴)也可用。 有关如何路由活动日志的详细信息,请参阅 Azure 活动日志概述

分析监视数据

有许多工具可用于分析监视数据。

Azure Monitor 工具

Azure Monitor 支持以下基本工具:

支持更复杂可视化效果的工具包括:

  • 仪表板,它支持将不同类型的数据合并到 Azure 门户的单个窗格中。
  • 工作簿,它们是可在 Azure 门户中创建的可自定义报表。 工作簿可以包括文本、指标和日志查询。
  • Power BI,它是一项业务分析服务,可提供跨各种数据源的交互式可视化效果。 可将 Power BI 配置为自动从 Azure Monitor 导入日志数据,以利用这些可视化效果。

通过 GoAccess 分析访问日志

我们发布了一个资源管理器模板,用于安装和运行应用程序网关访问日志的常用 GoAccess 日志分析器。 GoAccess 提供了宝贵的 HTTP 流量统计信息,例如唯一访问者、请求的文件、主机、操作系统、浏览器和 HTTP 状态代码等。 有关更多详细信息,请参阅 GitHub 的资源管理器模板文件夹中的自述文件

Azure Monitor 导出工具

可以使用以下方法将数据从 Azure Monitor 中提取到其他工具中:

要开始使用适用于 Azure Monitor 的 REST API,请参阅 Azure 监视 REST API 演练

Kusto 查询

可使用 Kusto 查询语言 (KQL) 来分析 Azure Monitor 日志/Log Analytics 存储中的监视数据。

重要

在门户的服务菜单中选择“日志”时,会打开 Log Analytics,并且其查询范围设置为当前服务。 此范围意味着日志查询将仅包含来自该资源类型的数据。 如果希望运行的查询包含来自其他 Azure 服务的数据,请从“Azure Monitor”菜单中选择“日志”。 有关详细信息,请参阅 Azure Monitor Log Analytics 中的日志查询范围和时间范围

有关任何服务的常见查询的列表,请参阅 Log Analytics 查询界面

以下示例显示了适用于应用程序网关的一些有用查询。

// Requests per hour 
// Count of the incoming requests on the Application Gateway. 
// To create an alert for this query, click '+ New alert rule'
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| summarize AggregatedValue = count() by bin(TimeGenerated, 1h), _ResourceId
| render timechart 
// Failed requests per hour 
// Count of requests to which Application Gateway responded with an error. 
// To create an alert for this query, click '+ New alert rule'
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess" and httpStatus_d > 399
| summarize AggregatedValue = count() by bin(TimeGenerated, 1h), _ResourceId
| render timechart
// Top 10 Client IPs 
// Count of requests per client IP. 
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess"
| summarize AggregatedValue = count() by clientIP_s
| top 10 by AggregatedValue
// Errors by user agent 
// Number of errors by user agent. 
// To create an alert for this query, click '+ New alert rule'
AzureDiagnostics
| where ResourceType == "APPLICATIONGATEWAYS" and OperationName == "ApplicationGatewayAccess" and httpStatus_d > 399
| summarize AggregatedValue = count() by userAgent_s, _ResourceId
| sort by AggregatedValue desc

警报

在监视数据中发现特定情况时,Azure Monitor 警报会主动向你发出通知。 有了警报,你就可以在客户注意到你的系统中的问题之前找出和解决问题。 有关详细信息,请参阅 Azure Monitor 警报

Azure 资源的常见警报具有许多来源。 有关 Azure 资源常见警报的示例,请参阅示例日志警报查询Azure Monitor 基线警报 (AMBA) 站点提供了 Azure 登陆区域 (ALZ) 方案的关键警报指标、仪表板和指南。

通用警报模式对 Azure Monitor 警报通知的使用体验进行了标准化。 有关详细信息,请参阅常见警报架构

警报类型

可以针对 Azure Monitor 数据平台中的任何指标或日志数据源发出警报。 警报具有许多不同类型,具体取决于要监视的服务以及要收集的监视数据。 不同类型的警报各有优缺点。 有关详细信息,请参阅选择正确的监视警报类型

以下列表介绍了可以创建的 Azure Monitor 警报类型:

  • 指标警报会定期评估资源指标。 指标可以是平台指标、自定义指标、Azure Monitor 中的日志转换为的指标或 Application Insights 指标。 指标警报还可以应用多个条件和动态阈值。
  • 日志警报支持用户使用 Log Analytics 查询按照预定义的频率评估资源日志。
  • 当发生匹配所定义条件的新活动日志事件时,会触发活动日志警报。 资源运行状况警报和服务运行状况警报是报告服务和资源运行状况的活动日志警报。

还可以为某些 Azure 服务创建以下类型的警报:

  • Application Insights 资源上的智能检测警报会就 Web 应用程序中的潜在性能问题和故障异常自动向你发出警报。 可以在 Application Insights 资源上迁移智能检测,以便为不同的智能检测模块创建警报规则。
  • Prometheus 警报:针对 Prometheus 指标的警报,这些指标存储在适用于 Prometheus 的 Azure Monitor 托管服务中。 该警报规则基于 PromQL,它是一种开源查询语言。 你的服务可能不支持此类型警报。 目前,Prometheus 用于具有来宾操作系统的有限服务集,例如 Azure 虚拟机和 Azure 容器实例。
  • 对于某些 Azure 资源(包括虚拟机、Azure Kubernetes 服务 [AKS] 资源和 Log Analytics 工作区),提供了现成可用的建议警报规则

监视多个资源

通过将相同的指标警报规则应用于同一 Azure 区域中的多个相同类型资源,可以进行大规模的监视。 将为每个受监视的资源发送单独通知。 有关支持的 Azure 服务和云,请参阅使用一个警报规则监视多个资源

注意

如果要创建或运行在服务中运行的应用程序,Azure Monitor Application Insights 提供其他类型的警报。

若要使用 ARM 模板配置警报,请参阅配置 Azure Monitor 警报

应用程序网关警报规则

下表列出了为应用程序网关建议的一些警报规则。 这些警报只是示例。 可以为 Azure 应用程序网关监视数据参考中列出的任何指标、日志条目或活动日志条目设置警报。

应用程序网关 v2

警报类型 条件 说明
指标 计算单位利用率超过了平均利用率的 75% 计算单位是对应用程序网关的计算使用量的度量。 检查过去 1 个月内的平均计算单位使用量,并设置在计算单位使用量超出 75% 的平均使用量时会发出的警报。
指标 容量单位利用率超过了峰值利用率的 75% 容量单位根据吞吐量、计算和连接计数来表示总体网关使用量。 检查过去 1 个月内的最大容量单位使用量,并设置在容量单位使用量超出 75% 的高峰使用量时会发出的警报。
指标 不正常主机计数超过了阈值 指示应用程序网关无法成功探测的后端服务器数。 此警报捕获应用程序网关实例无法连接到后端的问题。 如果此数字超出后端容量的 20%,则会发出警报。
指标 响应状态(4xx、5xx)超过了阈值 当应用程序网关响应状态为 4xx 或 5xx 时发出此警报。 可能会由于暂时性问题而偶然出现 4xx 或 5xx 响应。 应该在生产环境中观察网关,以确定警报的静态阈值或对其使用动态阈值。
指标 失败的请求数超过了阈值 当失败的请求数指标超过了阈值时发出此警报。 应该在生产环境中观察网关,以确定警报的静态阈值或对其使用动态阈值。
指标 后端最后一个字节响应时间超过了阈值 指示从开始与后端服务器建立连接,到收到响应正文的最后一个字节的间隔时间。 创建一个在后端响应延迟比常规值高出某个阈值时会发出的警报。
指标 应用程序网关总时间超过了阈值 此值是从应用程序网关收到 HTTP 请求的第一个字节的时间到将最后一个响应字节发送到客户端的时间的间隔。 应该创建一个在后端响应延迟比常规值高出某个阈值时会发出的警报。

应用程序网关 v1

警报类型 条件 说明
指标 CPU 利用率超过 80% 正常情况下,CPU 使用率不应经常超过 90%。 这种情况可能会导致应用程序网关后面托管的网站出现延迟,并破坏客户端体验。
指标 不正常主机计数超过了阈值 指示应用程序网关无法成功探测的后端服务器数。 此警报捕获应用程序网关实例无法连接到后端的问题。 如果此数字超出后端容量的 20%,则会发出警报。
指标 响应状态(4xx、5xx)超过了阈值 当应用程序网关响应状态为 4xx 或 5xx 时发出此警报。 可能会由于暂时性问题而偶然出现 4xx 或 5xx 响应。 应该在生产环境中观察网关,以确定警报的静态阈值或对其使用动态阈值。
指标 失败的请求数超过了阈值 当失败的请求数指标超过了阈值时发出此警报。 应该在生产环境中观察网关,以确定警报的静态阈值或对其使用动态阈值。

在监视数据中发现重要情况时,Azure Monitor 警报会主动通知你。 有了警报,你就可以在客户注意到你的系统中的问题之前确定和解决它们。 可以在指标日志活动日志上设置警报。 不同类型的警报各有优缺点。

如果你要创建或运行一个使用应用程序网关的应用程序,请参阅 Azure Monitor Application Insights 了解其他类型的警报。

顾问建议

如果在资源操作期间出现严重情况或即将发生变化,则门户中的“概述”页面上会显示一个警报

可以在“监视”下的“顾问建议”中找到警报的详细信息和建议补丁。 在正常操作期间,不会显示任何顾问建议。

有关 Azure 顾问的详细信息,请参阅 Azure 顾问概述