你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

Azure 应用程序网关监视数据参考

本文包含此服务的所有监视参考信息。

有关可为应用程序网关收集的数据以及如何使用这些数据的详细信息,请参阅监视 Azure 应用程序网关

指标

本部分列出了为此服务自动收集的所有平台指标。 这些指标也是 Azure Monitor 中支持的所有平台指标的全局列表的一部分。

有关指标保留的信息,请参阅 Azure Monitor 指标概述

Microsoft.Network/applicationGateways 支持的指标

下表列出了可用于 Microsoft.Network/applicationGateways 资源类型的所有指标。 此表后面包含了许多指标的更多说明详细信息。

  • 并非所有列都显示在每个表中。
  • 某些列可能超出了页面的查看区域。 选择“展开表”以查看所有可用列。

表标题

  • 类别 - 指标组或分类。
  • 指标 - 在 Azure 门户中显示的指标显示名称。
  • REST API 中的名称 - 在 REST API 中引用的指标名称。
  • 单位 - 度量单位。
  • 聚合 - 默认的聚合类型。 有效值:平均值(平均)、最小值(最小值)、最大值(最大值)、总计(总和)、计数。
  • 维度 - 适用于指标的维度
  • 时间粒度 - 对指标采样的间隔。 例如,PT1M 表示该指标每分钟采样一次,PT30M 表示每 30 分钟一次,PT1H 表示每小时一次,以此类推。
  • DS 导出 - 是否可通过诊断设置将指标导出到 Azure Monitor 日志。 要了解如何导出指标的信息,请参阅在 Azure Monitor 中创建诊断设置
指标 REST API 中的名称 Unit 聚合 维度 时间粒度 DS 导出
应用程序网关总时间

处理请求和发送响应所花费的时间。 这是从应用程序网关接收到 HTTP 请求的第一个字节到响应发送操作完成这两个时间点之间的时间间隔。 必须注意,这通常包括应用程序网关处理时间、请求和响应数据包遍历网络的时间,以及后端服务器做出响应所花费的时间。
ApplicationGatewayTotalTime 毫秒 平均值、最大值 Listener PT1M
每个正常主机每分钟的请求数

池中每个正常后端主机每分钟的平均请求计数
AvgRequestCountPerHealthyHost 计数 平均值 BackendSettingsPool PT1M
WAF 机器人防护匹配数

匹配的机器人规则
AzwafBotProtection 计数 总计(总和) Action、、CategoryModeCountryCodePolicyNamePolicyScope PT1M
WAF 自定义规则匹配数

匹配的自定义规则
AzwafCustomRule 计数 总计(总和) Action、、CustomRuleIDModeCountryCodePolicyNamePolicyScope PT1M
WAF JS 质询请求计数

WAF 评估的 JS 质询请求总数
AzWAFJSChallengeRequestCount 计数 总计(总和) Action、、PolicyNameRule、、PolicyScope PT1M
WAF 托管规则匹配数

匹配的托管规则
AzwafSecRule 计数 总计(总和) Action、、ModeRuleGroupIDRuleIDCountryCodePolicyName、、 PolicyScopeRuleSetName PT1M
WAF 总请求数

WAF 评估的请求总数
AzwafTotalRequests 计数 总计(总和) Action、、CountryCodeMethodModePolicyNamePolicyScope PT1M
后端连接时间

与后端服务器建立连接所花费的时间
BackendConnectTime 毫秒 平均值、最大值 Listener、、BackendServerBackendPool、、BackendHttpSetting PT1M
后端第一个字节响应时间

从开始与后端服务器建立连接,到收到响应标头的第一个字节的间隔时间,大致相当于后端服务器的处理时间
BackendFirstByteResponseTime 毫秒 平均值、最大值 Listener、、BackendServerBackendPool、、BackendHttpSetting PT1M
后端最后一个字节响应时间

从开始与后端服务器建立连接,到收到响应正文的最后一个字节的间隔时间
BackendLastByteResponseTime 毫秒 平均值、最大值 Listener、、BackendServerBackendPool、、BackendHttpSetting PT1M
后端响应状态

后端成员生成的 HTTP 响应代码数。 这不包括应用程序网关生成的任何响应代码。
BackendResponseStatus 计数 总计(总和) BackendServer、、BackendPoolBackendHttpSetting、、HttpStatusGroup PT1M
Web 应用程序防火墙阻止的请求规则分发

Web 应用程序防火墙阻止的请求规则分发
BlockedCount 计数 总计(总和) RuleGroup, RuleId PT1M
接收的字节数

应用程序网关从客户端收到的字节总数
BytesReceived 字节 总计(总和) Listener PT1M
发送的字节数

应用程序网关向客户端发送的字节总数
BytesSent 字节 总计(总和) Listener PT1M
当前容量单位数

已消耗的请求单位数
CapacityUnits 计数 平均值 <无> PT1M
客户端 RTT

客户端与应用程序网关之间的往返时间。 此指标指示建立连接和返回确认所用的时间
ClientRtt 毫秒 平均值、最大值 Listener PT1M
当前计算单位数

消耗的计算单位数
ComputeUnits 计数 平均值 <无> PT1M
CPU 使用率

应用程序网关的当前 CPU 利用率
CpuUtilization 百分比 平均值 <无> PT1M
当前连接数

使用应用程序网关建立的当前连接计数
CurrentConnections 计数 总计(总和) <无> PT1M
预估计费容量单位数

预估收费容量单位数
EstimatedBilledCapacityUnits 计数 平均值 <无> PT1M
失败的请求数

应用程序网关已提供服务的失败请求计数
FailedRequests 计数 总计(总和) BackendSettingsPool PT1M
固定计费容量单位数

最小收费容量单位数
FixedBillableCapacityUnits 计数 平均值 <无> PT1M
正常的主机计数

正常的后端主机数
HealthyHostCount 计数 平均值 BackendSettingsPool PT1M
Web 应用程序防火墙规则分发总数

传入流量的 Web 应用程序防火墙规则分发总数
MatchedCount 计数 总计(总和) RuleGroup, RuleId PT1M
每秒新连接数

每秒使用应用程序网关建立的新连接数
NewConnectionsPerSecond 每秒计数 平均值 <无> PT1M
响应状态

应用程序网关返回的 Http 响应状态
ResponseStatus 计数 总计(总和) HttpStatusGroup PT1M
吞吐量

应用程序网关每秒提供的字节数
Throughput 每秒字节数 平均值 <无> PT1M
客户端 TLS 协议

与应用程序网关建立了连接的客户端发起的 TLS 和非 TLS 请求数。 若要查看 TLS 协议分布,请按“TLS 协议”维度进行筛选。
TlsProtocol 计数 总计(总和) Listener, TlsProtocol PT1M
请求总数

应用程序网关已提供服务的成功请求计数
TotalRequests 计数 总计(总和) BackendSettingsPool PT1M
运行不正常的主机计数

不正常的后端主机数
UnhealthyHostCount 计数 平均值 BackendSettingsPool PT1M

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

应用程序网关 v2 SKU 的计时指标

应用程序网关 v2 SKU 提供了许多与请求和响应相关的内置计时指标,这些指标均以毫秒为单位。 下面是前面指标表中已列出的计时指标的详细说明。

  • 后端连接时间。 此值包括网络延迟,以及后端服务器 TCP 堆栈建立新连接所用的时间。 对于 TLS,还包括握手所用时间。
  • 后端第一个字节响应时间。 此值近似于以下各项的总和:后端连接时间,请求从应用程序网关到达后端所用的时间,后端应用程序响应所用的时间(即服务器生成内容和可能提取数据库查询所用的时间),以及响应的第一个字节从后端到达应用程序网关所用的时间。
  • 后端最后一个字节响应时间。 此值近似于后端第一个字节响应时间和数据传输时间的总和。 此数字会因请求的对象大小和服务器网络的延迟而有很大差异。
  • 应用程序网关总时间。 此间隔是从应用程序网关接收到 HTTP 请求的第一个字节到最后一个响应字节已发送给客户端之间的时间。
  • 客户端 RTT。 客户端与应用程序网关之间的平均往返时间。

应用程序网关 v2 SKU 的指标

对于应用程序网关 v2 SKU,以下指标可用。 下面是前面指标表中已列出的指标的详细说明。

  • 接收的字节数。 此指标仅考虑应用程序网关观察到的请求内容大小。 它不包括数据传输,例如 TLS 标头协商、TCP/IP 数据包标头或重新传输。
  • 发送的字节数。 此指标仅考虑应用程序网关提供服务的响应内容大小。 这不包括数据传输,例如 TCP/IP 数据包标头或重新传输。
  • 客户端 TLS 协议。 TLS 和非 TLS 请求计数。
  • 当前容量单位数。 容量单位有三个决定因素:计算单位、持久连接和吞吐量。 每个容量单位最多包括 1 个计算单位、2500 个持久连接,或 2.22-Mbps 吞吐量。
  • 当前计算单位数。 影响计算单位的因素包括每秒 TLS 连接数、URL 重写计算和 WAF 规则处理。
  • 当前连接数。 从客户端到应用程序网关的活动并发连接总数。
  • 预估计费容量单位数。 使用 v2 SKU 时,消耗会驱动定价模型。 容量单位测量在固定价格的基础上按消耗量计收的费用。 *“估计计费容量单位数”指示用于估计计费的容量单位数。 此数量按当前容量单位数(流量负载均衡所需的容量单位数)和固定计费容量单位数(保持预配的最小容量单位数)之间的较大值来计算。
  • 失败的请求数。 此值包括从应用程序网关生成的 5xx 代码,以及从后端生成的 5xx 代码。 可以进一步筛选请求计数,以显示每个/特定后端池 http 设置组合的计数。
  • 固定计费容量单位数。 根据应用程序网关配置中的最小缩放单元数设置保持预配的最小容量单元数。 一个实例将转换为 10 个容量单位。
  • 每秒新连接数。 每秒从客户端到应用程序网关以及从应用程序网关到后端成员建立的新 TCP 连接的平均数目。
  • 响应状态。 可以进一步对响应状态代码分布进行归类来显示 2xx、3xx、4xx 和 5xx 类别的响应。
  • 吞吐量。 此指标仅考虑应用程序网关提供服务的内容大小。 它不包括数据传输,例如 TLS 标头协商、TCP/IP 数据包标头或重新传输。
  • 请求总数。 应用程序网关提供服务的成功请求数。 可以筛选请求计数,以显示每个/特定后端池 http 设置组合的计数。

应用程序网关 v2 SKU 的后端指标

对于应用程序网关 v2 SKU,以下后端指标可用。 下面是前面指标表中已列出的后端指标的详细说明。

  • 后端响应状态。 后端返回的 HTTP 响应状态代码计数,不包括应用程序网关生成的任何响应代码。 可以对响应状态代码分布进行归类来显示 2xx、3xx、4xx 和 5xx 类别的响应。|
  • 正常的主机计数。 运行状况探测确定正常的主机数。 可以按每个后端池进行筛选来显示特定后端池中的正常主机数。
  • 运行不正常的主机计数。 运行状况探测确定运行不正常的主机数。 可以按每个后端池进行筛选来显示特定后端池中的运行不正常的主机数。
  • 每个正常主机每分钟的请求数。 后端池中的每个正常成员在一分钟内收到的平均请求数。 请使用 BackendPool HttpSettings 维度指定后端池。

应用程序网关 v1 SKU 的指标

对于应用程序网关 v1 SKU,以下指标可用。 下面是前面指标表中已列出的指标的详细说明。

  • CPU 使用率。 显示分配给应用程序网关的 CPU 的使用率。 在正常情况下,CPU 使用率不应经常超过 90%,因为这种情况可能会导致托管在应用程序网关后面的网站出现延迟,并且可能会中断客户端体验。 可以通过修改应用程序网关的配置(具体方法是:增加实例计数和/或移到更大的 SKU 大小)来间接控制或改进 CPU 使用率。

  • 当前连接数。 使用应用程序网关建立的当前连接计数。

  • 失败的请求数。 因连接问题而失败的请求数。 此计数包括由于超过“请求超时”HTTP 设置而失败的请求,以及由于应用程序网关和后端之间的连接问题而失败的请求。 此计数不包括由于没有可用的正常后端而导致的失败。 来自后端的 4xx 和 5xx 响应也不被视为此指标的一部分。

  • 响应状态。 应用程序网关返回的 HTTP 响应状态。 可以进一步对响应状态代码分布进行归类来显示 2xx、3xx、4xx 和 5xx 类别的响应。

  • 吞吐量。 应用程序网关每秒提供服务的字节数。

  • 请求总数。 应用程序网关已提供服务的成功请求计数。 可以进一步筛选请求计数,以显示每个/特定后端池 http 设置组合的计数。

应用程序网关 v1 SKU 的后端指标

对于应用程序网关 v1 SKU,以下后端指标可用。 下面是前面指标表中已列出的后端指标的详细说明。

  • 正常的主机计数。 由运行状况探测判定为正常的后端数。 可以按每个后端池进行筛选来显示特定后端池中的正常主机数。

  • 运行不正常的主机计数。 由运行状况探测判定为不正常的后端数。 可以按每个后端池进行筛选来显示特定后端池中的不正常主机数。

后端运行状况 API

请参阅应用程序网关 - 后端运行状况,详细了解用于检索应用程序网关的后端运行状况的 API 调用。

示例请求:

POST
https://management.azure.com/subscriptions/subid/resourceGroups/rg/providers/Microsoft.Network/
applicationGateways/appgw/backendhealth?api-version=2021-08-01

发送此 POST 请求后,应该会看到“HTTP 202 已接受”响应。 在响应头中,找到 Location 标头并使用该 URL 发送新的 GET 请求。

GET
https://management.azure.com/subscriptions/subid/providers/Microsoft.Network/locations/region-name/operationResults/GUID?api-version=2021-08-01

TLS/TCP 代理指标

应用程序网关支持 TLS/TCP 代理监视。 随着应用程序网关现在提供第 4 层代理功能,有一些常用指标同时适用于第 7 层和第 4 层。 有一些第 4 层特定指标。 以下列表总结了适用于第 4 层使用情况的指标。

  • 当前连接数
  • 每秒新连接数
  • 吞吐量
  • 正常的主机计数
  • 运行不正常的主机计数
  • 客户端 RTT
  • 后端连接时间
  • 后端第一个字节响应时间。 BackendHttpSetting 维度同时包括第 7 层和第 4 层后端设置。

有关详细信息,请参阅前面的说明和指标表

这些指标仅适用于第 4 层。

  • 后端会话持续时间。 后端连接的总时间。 从新连接开始到其终止的平均持续时间。 BackendHttpSetting 维度同时包括第 7 层和第 4 层后端设置。
  • 连接生存期。 与应用程序网关的客户端连接的总时间。 从新连接开始到其终止的平均持续时间(以毫秒为单位)。

TLS/TCP 代理后端运行状况

应用程序网关的第 4 层代理提供通过门户和 REST API 监视后端池各成员的运行状况的功能。

屏幕截图显示了后端池各个成员的运行状况。

指标维度

有关指标维度定义的信息,请参阅多维指标

此服务具有以下与其指标关联的维度。

  • 操作
  • BackendHttpSetting
  • BackendPool
  • BackendServer
  • BackendSettingsPool
  • 类别
  • CountryCode
  • CustomRuleID
  • HttpStatusGroup
  • 侦听器
  • 方法
  • 模式
  • PolicyName
  • PolicyScope
  • RuleGroup
  • RuleGroupID
  • RuleId
  • RuleSetName
  • TlsProtocol

注意

如果应用程序网关中有多个侦听器,请在比较不同的延迟指标时始终按“侦听器”维度进行筛选,以获取更有意义的推理结果。

资源日志

本部分列出了可为此服务收集的资源日志类型。 本部分拉取自 Azure Monitor 支持的所有资源日志类别类型列表。

Microsoft.Network/applicationGateways 支持的资源日志类别

Category 类别显示名称 日志表 支持基本日志计划 支持引入时间转换 示例查询 导出成本
ApplicationGatewayAccessLog 应用程序网关访问日志 AGWAccessLogs

包含所有日志,可用于查看应用程序网关访问模式和分析重要信息。 此日志包括调用方的 IP、请求的 URL、响应延迟、返回代码,以及传入和传出的字节数。

ApplicationGatewayFirewallLog 应用程序网关防火墙日志 AGWFirewallLogs

包含所有日志,可用于查看通过配置了 Web 应用程序防火墙的应用程序网关的检测或防护模式记录的请求。

ApplicationGatewayPerformanceLog 应用程序网关性能日志 AGWPerformanceLogs

包含所有日志,可用于查看应用程序网关实例的性能。 此日志会捕获每个实例的性能信息,包括提供服务的总请求数、吞吐量(以字节为单位)、提供服务的请求总数、失败的请求计数,以及正常和运行不正常的后端实例计数。性能日志仅可用于 v1 SKU。

  • 访问日志。 可以使用访问日志来查看应用程序网关访问模式和分析重要信息。 此类信息包括调用方的 IP、请求的 URL、响应延迟、返回代码以及输入和输出字节数。系统每 60 秒收集一次访问日志。 此日志包含每个应用程序网关实例的一条记录。 instanceId 属性标识应用程序网关实例。

  • 防火墙日志。 可以使用防火墙日志来查看通过配置了 Web 应用程序防火墙的应用程序网关的检测或防护模式记录的请求。 防火墙日志每 60 秒收集一次。

  • 性能日志。 可以使用性能日志来查看应用程序网关实例的性能。 此日志会捕获每个实例的性能信息,包括服务的总请求数、吞吐量(以字节为单位)、失败请求计数、运行正常和运行不正常的后端实例计数。 每隔 60 秒会收集一次性能日志。

    注意

    性能日志仅适用于 v1 SKU。 对于 v2 SKU,请对性能数据使用指标

访问日志类别

仅当在每个应用程序网关实例上启用访问日志时,才会生成访问日志,如启用日志记录中所述。 数据存储在启用日志记录时指定的存储帐户中。 如下所示,应用程序网关的每次访问都以 JSON 格式记录。

注意

有关 TLS/TCP 代理相关信息,请访问数据参考

对于应用程序网关和 WAF v2 SKU:

说明
instanceId 处理请求的应用程序网关实例。
clientIP 应用程序网关的直接客户端的 IP。 如果另一个代理位于应用程序网关的前面,则此值将显示该前置代理的 IP。
httpMethod 请求所用的 HTTP 方法。
requestUri 所收到请求的 URI。
UserAgent HTTP 请求标头中的用户代理。
httpStatus 从应用程序网关返回到客户端的 HTTP 状态代码。
httpVersion 请求的 HTTP 版本。
receivedBytes 接收的数据包的大小(以字节为单位)。
sentBytes 发送的数据包的大小(以字节为单位)。
clientResponseTime 应用程序网关发送到客户端的第一个字节和最后一个字节之间的时间差(以秒为单位)。 有助于衡量应用程序网关处理响应或慢速客户端的时间。
timeTaken 处理客户端请求的第一个字节以及将响应中的最后一个字节发送到客户端所需的时长(以为单位)。 必须注意,“所用时间”字段通常包括请求和响应数据包在网络上传输的时间。
WAFEvaluationTime WAF 处理请求所需的时长(以为单位)。
WAFMode 值可以是“检测”或“预防”。
transactionId 唯一标识符,用于关联从客户端收到的请求。
sslEnabled 与后端池的通信是否使用了 TLS。 有效值为 on 和 off。
sslCipher 用于 TLS 通信的密码套件(如果已启用 TLS)。
sslProtocol 使用的 SSL/TLS 协议(如果已启用 TLS)。
sslClientVerify 将客户端证书验证的结果显示为“成功”或“失败”。 “失败”状态将包含错误信息。
sslClientCertificateFingerprint 已建立的 TLS 连接的客户端证书的 SHA1 指纹。
sslClientCertificateIssuerName 已建立的 TLS 连接的客户端证书的“颁发者 DN”字符串。
serverRouted 应用程序网关将请求路由到的后端服务器。
serverStatus 后端服务器的 HTTP 状态代码。
serverResponseLatency 后端服务器的响应延迟(以为单位)。
host 请求的主机标头中列出的地址。 如果使用标头重写进行重写,此字段将包含更新的主机名。
originalRequestUriWithArgs 此字段包含原始请求 URL。
requestUri 在应用程序网关上执行重写操作后,此字段将包含 URL。
upstreamSourcePort 应用程序网关在启动与后端目标的连接时使用的源端口。
originalHost 此字段包含原始请求主机名。
error_info 4xx 和 5xx 错误的原因。 显示失败请求的错误代码。 本文错误代码表中的更多详细信息。
contentType 应用程序网关正在处理或传送的内容或数据的类型。
{
    "timeStamp": "2021-10-14T22:17:11+00:00",
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "listenerName": "HTTP-Listener",
    "ruleName": "Storage-Static-Rule",
    "backendPoolName": "StaticStorageAccount",
    "backendSettingName": "StorageStatic-HTTPS-Setting",
    "operationName": "ApplicationGatewayAccess",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "appgw_2",
        "clientIP": "185.42.129.24",
        "clientPort": 45057,
        "httpMethod": "GET",
        "originalRequestUriWithArgs": "\/",
        "requestUri": "\/",
        "requestQuery": "",
        "userAgent": "Mozilla\/5.0 (Windows NT 6.1; WOW64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/52.0.2743.116 Safari\/537.36",
        "httpStatus": 200,
        "httpVersion": "HTTP\/1.1",
        "receivedBytes": 184,
        "sentBytes": 466,
        "clientResponseTime": 0,
        "timeTaken": 0.034,
        "WAFEvaluationTime": "0.000",
        "WAFMode": "Detection",
        "transactionId": "592d1649f75a8d480a3c4dc6a975309d",
        "sslEnabled": "on",
        "sslCipher": "ECDHE-RSA-AES256-GCM-SHA384",
        "sslProtocol": "TLSv1.2",
        "sslClientVerify": "NONE",
        "sslClientCertificateFingerprint": "",
        "sslClientCertificateIssuerName": "",
        "serverRouted": "52.239.221.65:443",
        "serverStatus": "200",
        "serverResponseLatency": "0.028",
        "upstreamSourcePort": "21564",
        "originalHost": "20.110.30.194",
        "host": "20.110.30.194",
        "error_info":"ERRORINFO_NO_ERROR",
        "contentType":"application/json"
    }
}

注意

clientIP 值为 127.0.0.1 的访问日志源自在应用程序网关实例上运行的内部安全进程。 可以放心地忽略这些日志条目。

对于应用程序网关 Standard 和 WAF SKU (v1):

说明
instanceId 处理请求的应用程序网关实例。
clientIP 请求的起始 IP。
clientPort 请求的起始端口。
httpMethod 请求所用的 HTTP 方法。
requestUri 所收到请求的 URI。
RequestQuery 服务器路由:将请求发送到的后端池实例。
X-AzureApplicationGateway-LOG-ID:用于请求的相关 ID。 它可用于排查后端服务器上的流量问题。
SERVER-STATUS:应用程序网关从后端接收的 HTTP 响应代码
UserAgent HTTP 请求标头中的用户代理。
httpStatus 从应用程序网关返回到客户端的 HTTP 状态代码。
httpVersion 请求的 HTTP 版本。
receivedBytes 接收的数据包的大小(以字节为单位)。
sentBytes 发送的数据包的大小(以字节为单位)。
timeTaken 处理请求并发送响应所需的时长(以毫秒为单位)。 此值按特定的时间间隔(从应用程序网关接收第一个 HTTP 请求字节到完成响应发送操作所需的时间)来计算。 必须注意,“所用时间”字段通常包括请求和响应数据包在网络上传输的时间。
sslEnabled 与后端池的通信是否使用了 TLS/SSL。 有效值为 on 和 off。
host 向后端服务器发送请求时所针对的主机名。 如果正在重写后端主机名,则此名称将反映该主机名。
originalHost 应用程序网关从客户端接收请求时所针对的主机名。
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/PEERINGTEST/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayAccess",
    "time": "2017-04-26T19:27:38Z",
    "category": "ApplicationGatewayAccessLog",
    "properties": {
        "instanceId": "ApplicationGatewayRole_IN_0",
        "clientIP": "203.0.113.97",
        "clientPort": 46886,
        "httpMethod": "GET",
        "requestUri": "/phpmyadmin/scripts/setup.php",
        "requestQuery": "X-AzureApplicationGateway-CACHE-HIT=0&SERVER-ROUTED=10.4.0.4&X-AzureApplicationGateway-LOG-ID=aaaa0000-bb11-2222-33cc-444444dddddd&SERVER-STATUS=404",
        "userAgent": "-",
        "httpStatus": 404,
        "httpVersion": "HTTP/1.0",
        "receivedBytes": 65,
        "sentBytes": 553,
        "timeTaken": 205,
        "sslEnabled": "off",
        "host": "www.contoso.com",
        "originalHost": "www.contoso.com"
    }
}

如果应用程序网关无法完成请求,则其会将以下原因代码之一存储在访问日志的 error_info 字段中。

4XX 错误 4xx 错误代码指示客户端请求出现问题,应用程序网关无法满足该请求。
ERRORINFO_INVALID_METHOD 客户端发送了不符合 RFC 的请求。 可能的原因:客户端使用服务器不支持的 HTTP 方法、拼写错误的方法、不兼容的 HTTP 协议版本等。
ERRORINFO_INVALID_REQUEST 由于语法不正确,服务器无法满足请求。
ERRORINFO_INVALID_VERSION 应用程序网关收到包含无效或不受支持的 HTTP 版本的请求。
ERRORINFO_INVALID_09_METHOD 客户端使用 HTTP 协议版本 0.9 发送请求。
ERRORINFO_INVALID_HOST “Host”标头中提供的值缺失、格式不正确或者与预期的 host 值不匹配。 例如,没有基本侦听器,并且多站点侦听器的所有主机名都不与 host 值匹配。
ERRORINFO_INVALID_CONTENT_LENGTH content-Length 标头中客户端指定的内容长度与请求中内容的实际长度不匹配。
ERRORINFO_INVALID_METHOD_TRACE 客户端发送了应用程序网关不支持的 HTTP TRACE 方法。
ERRORINFO_CLIENT_CLOSED_REQUEST 客户端在空闲超时期限过去之前关闭了与应用程序网关的连接。 检查客户端超时期限是否大于应用程序网关的空闲超时期限
ERRORINFO_REQUEST_URI_INVALID 指示客户端请求中提供的统一资源标识符 (URI) 出现问题。
ERRORINFO_HTTP_NO_HOST_HEADER 客户端发送的请求没有主机头。
ERRORINFO_HTTP_TO_HTTPS_PORT 客户端向 HTTPS 端口发送了纯 HTTP 请求。
ERRORINFO_HTTPS_NO_CERT 指示客户端未在相互 TLS 身份验证期间发送正确配置的有效 TLS 证书。
5XX 错误 说明
ERRORINFO_UPSTREAM_NO_LIVE 应用程序网关找不到任何活动或可访问的后端服务器来处理传入请求。
ERRORINFO_UPSTREAM_CLOSED_CONNECTION 后端服务器意外或在请求完全处理完毕之前关闭了连接。 出现这种情况可能是由于后端服务器达到其限制、崩溃等。
ERRORINFO_UPSTREAM_TIMED_OUT 与服务器建立的 TCP 连接已关闭,因为连接花费的时间超过了配置的超时值。

防火墙日志类别

仅当为每个应用程序网关启用防火墙日志时,才会生成防火墙日志,如启用日志记录中所述。 此日志还需要在应用程序网关上配置 Web 应用程序防火墙。 数据存储在启用日志记录时指定的存储帐户中。 将记录以下数据:

说明
instanceId 为其生成了防火墙数据的应用程序网关实例。 对于多实例应用程序网关,每个实例有一行数据。
clientIp 请求的起始 IP。
clientPort 请求的起始端口。
requestUri 所收到请求的 URI。
ruleSetType 规则集类型。 可用值为 OWASP。
ruleSetVersion 所使用的规则集版本。 可用值为 2.2.9 和 3.0。
ruleId 触发事件的规则 ID。
message 触发事件的用户友好消息。 详细信息部分提供了更多详细信息。
action 针对请求执行的操作。 可用值包括“阻止”和“允许”(用于自定义规则)、“匹配”(当规则与请求的一部分匹配时),以及“检测到”和“阻止”(这些值都适用于强制规则,具体取决于 WAF 是处于检测模式还是防护模式)。
site 为其生成日志的站点。 目前仅列出 Global,因为规则是全局性的。
详细信息 触发事件的详细信息。
details.message 规则的说明。
details.data 在请求中找到的与规则匹配的特定数据。
details.file 包含规则的配置文件。
details.line 配置文件中触发了事件的行号。
hostname 应用程序网关的主机名或 IP 地址。
transactionId 给定事务的唯一 ID,它有助于对同一请求中发生的多个违反规则的情况进行分组。
{
    "timeStamp": "2021-10-14T22:17:11+00:00",
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayFirewall",
    "category": "ApplicationGatewayFirewallLog",
    "properties": {
        "instanceId": "appgw_2",
        "clientIp": "185.42.129.24",
        "clientPort": "",
        "requestUri": "\/",
        "ruleSetType": "OWASP_CRS",
        "ruleSetVersion": "3.0.0",
        "ruleId": "920350",
        "message": "Host header is a numeric IP address",
        "action": "Matched",
        "site": "Global",
        "details": {
            "message": "Warning. Pattern match \\\"^[\\\\d.:]+$\\\" at REQUEST_HEADERS:Host .... ",
            "data": "20.110.30.194:80",
            "file": "rules\/REQUEST-920-PROTOCOL-ENFORCEMENT.conf",
            "line": "791"
        },
        "hostname": "20.110.30.194:80",
        "transactionId": "592d1649f75a8d480a3c4dc6a975309d",
        "policyId": "default",
        "policyScope": "Global",
        "policyScopeName": "Global"
    }
}

性能日志类别

仅当在每个应用程序网关实例上启用性能日志时,才会生成性能日志,如启用日志记录中所述。 数据存储在启用日志记录时指定的存储帐户中。 每隔 1 分钟生成性能日志数据。 这仅适用于 v1 SKU。 对于 v2 SKU,请对性能数据使用指标。 将记录以下数据:

说明
instanceId 正在为其生成性能数据的应用程序网关实例。 对于多实例应用程序网关,每个实例有一行数据。
healthyHostCount 后端池中运行正常的主机数。
unHealthyHostCount 后端池中运行不正常的主机数。
requestCount 服务的请求数。
latency 从实例到请求服务后端的请求的平均延迟(以毫秒为单位)。
failedRequestCount 失败的请求数。
throughput 自最后一个日志后的平均吞吐量,以每秒字节数为单位。
{
    "resourceId": "/SUBSCRIPTIONS/{subscriptionId}/RESOURCEGROUPS/{resourceGroupName}/PROVIDERS/MICROSOFT.NETWORK/APPLICATIONGATEWAYS/{applicationGatewayName}",
    "operationName": "ApplicationGatewayPerformance",
    "time": "2016-04-09T00:00:00Z",
    "category": "ApplicationGatewayPerformanceLog",
    "properties":
    {
        "instanceId":"ApplicationGatewayRole_IN_1",
        "healthyHostCount":"4",
        "unHealthyHostCount":"0",
        "requestCount":"185",
        "latency":"0",
        "failedRequestCount":"0",
        "throughput":"119427"
    }
}

注意

延迟时间的计算是从接收到 HTTP 请求的第一个字节开始,到发出 HTTP 响应的最后一个字节为止。 它是应用程序网关处理时间加上后端的网络耗时,再加上后端处理请求所花费的时间之和。

Azure Monitor 日志和日志分析表

Azure 应用程序网关使用 Azure 诊断表来存储资源日志信息。 以下列与此相关。

properties 说明
requestUri_s 客户端请求的 URI。
消息 参考性消息,例如“SQL 注入攻击”
userAgent_s 客户端请求的用户代理详细信息
ruleName_s 用来为此请求提供服务的请求传递规则
httpMethod_s 客户端请求的 HTTP 方法
instanceId_s 要将客户端请求路由到其中以进行评估的 Appgw 实例
httpVersion_s 客户端请求的 HTTP 版本
clientIP_s 发出请求的 IP
host_s 客户端请求的主机头
requestQuery_s 作为客户端请求的一部分的查询字符串
sslEnabled_s 是否为客户端请求启用了 SSL

Azure Monitor 日志表

本节列出了与此服务相关的 Azure Monitor 日志表,日志分析可使用 Kusto 查询来查询这些表。 这些表包含资源日志数据,此外还可能包含其他数据,具体取决于所收集并路由到这些表的内容。

应用程序网关 Microsoft.Network/applicationGateways

TLS/TCP 代理日志

应用程序网关的第 4 层代理通过访问日志提供日志数据。 仅当在网关的诊断设置中配置了这些日志时,才会生成并发布这些日志。 另请参阅:受支持的 Azure Monitor 资源日志类别

注意

目前,只能通过 AzureDiagnostics 表获取包含 TLS 侦听器的相互身份验证详细信息的列。

类别 资源日志类别
ResourceGroup 应用程序网关资源所属的资源组。
SubscriptionId 应用程序网关资源的订阅 ID。
ResourceProvider 对于应用程序网关,此值为 MICROSOFT.NETWORK。
资源 应用程序网关资源的名称。
ResourceType 此值为 APPLICATIONGATEWAYS。
ruleName 为连接请求提供服务的传递规则的名称。
instanceId 处理请求的应用程序网关实例。
clientIP 请求的起始 IP。
receivedBytes 从客户端接收到网关的数据(以字节为单位)。
sentBytes 从网关发送到客户端的数据(以字节为单位)。
listenerName 与客户端建立前端连接的侦听器的名称。
backendSettingName 用于后端连接的后端设置的名称。
backendPoolName 从中选择目标服务器来建立后端连接的后端池的名称。
protocol TCP(无论是 TCP 还是 TLS,协议值始终为 TCP)。
sessionTime 会话持续时间(以秒为单位)(此值适用于 client->appgw 会话)。
upstreamSentBytes 发送到后端服务器的数据(以字节为单位)。
upstreamReceivedBytes 从后端服务器接收的数据(以字节为单位)。
upstreamSessionTime 会话持续时间(以秒为单位)(此值适用于 appgw->backend 会话)。
sslCipher 用于 TLS 通信的密码套件(针对 TLS 协议侦听器)。
sslProtocol 使用的 SSL/TLS 协议(针对 TLS 协议侦听器)。
serverRouted 将流量路由到的后端服务器 IP 和端口号。
serverStatus 200 - 会话已成功完成。 400 - 无法分析客户端数据。 500 - 内部服务器错误。 502 - 错误的网关。 例如,当无法访问上游服务器时。 503 - 服务不可用。 例如,如果访问受到连接数量限制。
ResourceId 应用程序网关资源 URI。

活动日志

链接表列出了可在此服务的活动日志中记录的操作。 这些操作是活动日志中所有可能的资源提供程序操作的子集。

有关活动日志条目架构的详细信息,请参阅活动日志架构

可以使用 Azure 活动日志来查看提交到 Azure 订阅的所有操作及其状态。 默认会收集活动日志条目。 可以在 Azure 门户中查看它们。 Azure 活动日志以前称为操作日志审核日志

默认情况下,Azure 会生成活动日志。 日志可在 Azure 事件日志存储中保留 90 天。 了解有关这些日志的详细信息,请参阅查看事件和活动日志一文。