Monitoring failed requests in your Azure Application Gateway is crucial for maintaining a healthy and responsive application. This blog post dives into the improved capabilities for identifying and analyzing these failures, empowering you to diagnose issues efficiently.
Previously Limited Visibility:
- Limited Information: Previously, the Azure portal only displayed the total count of failed requests, hindering detailed analysis.
- Accessing Individual Requests: Extracting specific failed requests from log files was cumbersome due to the complex storage structure.
Empowering Visibility with Log Queries:
- Detailed Insights: Azure Monitor Log Queries unlock the ability to retrieve a comprehensive list of failed requests, including:
- HTTP Status Code: Pinpoints the nature of the error (e.g., 404 – “Not Found”).
- Request URI: Reveals the specific URL that triggered the failure.
- Timestamp: Provides the exact time the request occurred.
Unveiling Failed Requests:
- Navigate to the Logs section of your Application Gateway in the Azure portal.
- Use the following query:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayAccessLog"
| where httpStatus_d >= 400
| project httpStatus_d, requestUri_s, TimeGenerated
This query filters the logs for entries with:
- ResourceProvider: “MICROSOFT.NETWORK” (identifies Application Gateway logs)
- Category: “
ApplicationGatewayAccessLog
” (specifies access logs) - httpStatus_d >= 400: includes only requests with error codes (400 and above)
The results will show the status code, request URL, and timestamp for each failed request.
Enhancing Monitoring Further:
- Multiple Domains: For applications handling multiple domains, incorporate the host_s field in the query to differentiate requests.
- Dynamic Monitoring: Create a customized Azure dashboard widget that dynamically displays the hourly summary of failed requests using this query:
AzureDiagnostics
| where ResourceProvider == "MICROSOFT.NETWORK" and Category == "ApplicationGatewayAccessLog"
| where httpStatus_d >= 400
| summarize count(httpStatus_d) by httpStatus_d, requestUri_s, bin(TimeGenerated, 1h)
| order by count_httpStatus_d desc
| project httpStatus_d, requestUri_s, TimeGenerated, count_httpStatus_d
Beyond the Basics:
- Advanced Analysis: Log queries support further filtering and aggregation, allowing deeper analysis of specific failure patterns.
- Proactive Monitoring: Integrate these queries with alert rules to receive notifications when failures exceed predefined thresholds.
Conclusion:
By leveraging Azure Monitor Log Queries, you unlock a powerful tool for gaining in-depth knowledge about failed requests within your Application Gateway. This enhanced visibility empowers you to streamline troubleshooting, optimize application performance, and deliver a superior user experience.