Azure App Service is a service used to create and deploy scalable, mission-critical web apps.
The production App Service must be able to resolve and reach its regional Application Insights Live Metrics endpoint over TCP 443/TLS 1.2; test that path from the production Kudu environment rather than assuming its effective routing matches development.
Test the failing path from production
QuickPulse is the Application Insights Live Metrics component. Live Metrics uses different endpoints from normal telemetry, so successful log or telemetry ingestion does not prove that QuickPulse connectivity works.^1^
- Open App Service → Development Tools → Advanced Tools → Go.
- In Kudu, select Tools → Debug Console → CMD.
- Test DNS and HTTPS from both production and development:
nslookup <region>.livediagnostics.monitor.azure.com
curl -v --connect-timeout 20 \
https://<region>.livediagnostics.monitor.azure.com
These are the documented Linux App Service tests for DNS and outbound connectivity.^2^
Use the region encoded in the Application Insights connection string rather than assuming it matches the App Service region. Also test the applicable global Live Metrics hosts if they appear in DNS or network logs:
-
live.applicationinsights.azure.com -
rt.applicationinsights.microsoft.com -
rt.services.visualstudio.com -
<region>.livediagnostics.monitor.azure.com
All require outbound port 443; the regional Live Metrics endpoint currently uses IPv4.^3^
A successful curl may return an HTTP response that is not useful to a browser; the important results are successful DNS resolution, TCP connection, and TLS negotiation. A connection timeout matching the WebJob error confirms an effective network-path problem.
Compare the effective production path
Since the Terraform resources are nearly identical, compare the settings that can change the actual route:
- VNet integration and
WEBSITE_PRIVATE_IP - Route All
- Integration-subnet NSG rules
- User-defined routes
- Azure Firewall or network virtual appliance rules
- Custom DNS server settings
- Proxy environment variables
- Application Insights connection strings and endpoint suffixes
- Any Azure Monitor Private Link Scope/private DNS association
For a VNet-integrated Linux app, run:
set | grep WEBSITE_PRIVATE_IP
set | grep -E 'WEBSITE_DNS|HTTP_PROXY|HTTPS_PROXY|NO_PROXY'
nslookup <region>.livediagnostics.monitor.azure.com
curl -v https://<region>.livediagnostics.monitor.azure.com
If production resolves the hostname differently from development, correct its DNS/private-link configuration. If resolution matches but only production times out, inspect the production subnet’s UDR, NSG, firewall, and Route All path. Prefer an AzureMonitor service-tag rule where supported instead of allowing the single logged IP, because endpoint addresses can change.^3^
If the failure is intermittent
Intermittent timeouts that coincide with other outbound failures can indicate SNAT or TCP connection exhaustion. In the portal, open:
App Service → Diagnose and solve problems → Availability and Performance → SNAT Port Exhaustion
App Service instances initially receive 128 preallocated SNAT ports, and repeated new connections to the same destination address and port can temporarily exhaust them.^4^
If diagnostics confirm exhaustion, the supported mitigations include connection reuse/pooling, scaling out, private endpoints where applicable, or routing outbound traffic through a NAT gateway. Do not apply these merely from the QuickPulse message; first confirm correlated SNAT failures.
Disabling Live Metrics, if it is not required
Only disable Live Metrics if the component is created by instrumentation that you control. For the Azure Monitor OpenTelemetry Node.js distro, Live Metrics defaults to enabled and can be disabled with enableLiveMetrics:^5^
{
"enableLiveMetrics": false,
"enableStandardMetrics": true
}
Point APPLICATIONINSIGHTS_CONFIGURATION_FILE to that JSON if using a custom configuration file. This setting is not established as a supported switch for the Kudu WebJob runner itself, so first identify whether the parent App Service’s Node/OpenTelemetry instrumentation is producing the message.
Finally, verify the WebJob’s own exit path separately in App_Data/jobs/<type>/<jobname> or its execution history. Kudu owns WebJob execution logging, and a WebJob remaining Running can also mean that the script—or a child process it launched—never exited, even when the last visible message came from QuickPulse.^6^
References
- Troubleshoot Live Metrics Issues - Azure | Microsoft Learn
- Troubleshoot virtual network integration with Azure App Service
- Azure Monitor endpoint access and firewall configuration
- Troubleshoot intermittent outbound connection errors in Azure App Service
- Azure Monitor OpenTelemetry for JavaScript
- How WebJobs run in Azure App Service