使用 Log Analytics 检查应用程序网关日志

应用程序网关正常运行后,可以启用日志来检查资源发生的事件。 例如,应用程序网关防火墙日志提供有关 Web 应用程序防火墙 (WAF) 正在评估、匹配和阻止的内容的见解。 通过 Log Analytics,可以检查防火墙日志内的数据,从而获得更多见解。 有关日志查询的详细信息,请参阅 Azure Monitor 中的日志查询概述

在本文中,我们将了解 Web 应用程序防火墙 (WAF) 日志。 你可以用类似的方式设置其他应用程序网关日志

先决条件

发送日志

若要将防火墙日志导出到 Log Analytics,请参阅应用程序网关的诊断日志。 当 Log Analytics 工作区中有防火墙日志时,你可以查看数据、编写查询、创建可视化效果,并将这些内容添加到门户仪表板。

通过运行示例浏览数据

使用 AzureDiagnostics 表时,可以通过运行以下查询来查看防火墙日志中的原始数据:

AzureDiagnostics 
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| limit 10

这类似于以下示例:

Log Analytics 查询的屏幕截图。

使用特定于资源的表时,可以通过运行以下查询来查看防火墙日志中的原始数据。 若要了解特定于资源的表,请访问监视数据参考

AGWFirewallLogs
| limit 10

可以向下钻取数据,并在此绘制图表或创建可视化效果。 下面是你可以使用的 AzureDiagnostics 查询的一些更多示例。

按 IP 匹配/阻止的请求

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by clientIp_s, bin(TimeGenerated, 1m)
| render timechart

按 URI 匹配/阻止的请求

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by requestUri_s, bin(TimeGenerated, 1m)
| render timechart

排名靠前的匹配的规则

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize count() by ruleId_s, bin(TimeGenerated, 1m)
| where count_ > 10
| render timechart

前五个匹配的规则组

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayFirewallLog"
| summarize Count=count() by details_file_s, action_s
| top 5 by Count desc
| render piechart

添加到仪表板

创建查询后,可将其添加到仪表板。 选择日志分析工作区右上方的“固定到仪表板”。 上述四个查询固定到示例仪表板后,这些数据就可以一目了然:

屏幕截图显示了可在其中添加查询的 Azure 仪表板。

后续步骤

应用程序网关的后端运行状况、诊断日志和指标