Azure Web Apps – Troubleshooting external http/https calls using Kudu

I recently saw some strange issues with a customer’s Azure Web App where as part of the application they relied on an API call to an external source which was failing. This presented almost as a network routing issue to external resources with “connection timeout” errors.

Working with the Azure support team, we confirmed there was an issue (I’m still waiting the full details from Microsoft as to what..) on the underlying VM/machine.

In one case we resolved by scaling up and then scaling back down the Web App instance which made Azure migrate the Web App to a different underlying machine and in another case we had to escalate to a product team in Microsoft for them to manually migrate the Web App to a different machine as we kept being placed back onto the problematic machine.

At first we were unsure if this was an application/site issue, Azure issue or firewall issue at the 3rd parties side.

By using the Kudu tools in Azure Web Apps we can perform some basic diagnostics and testing to ensure that external http/https calls are possible from the underlying machine our PaaS site is running on.

For example, if we have an Azure hosted site, which requires to make lookup calls to an external API hosted by another provider this can be a useful testing/verification step in event of issues.

You can access the Kudu tools from the Azure portal:-

a

b

Or by navigating to https://abc.scm.azurewebsites.net where abc is the name of your Web App.

c

Choose Debug Console > CMD

d

To test a URL enter curl https://yourexternalurlhere.com and press enter

A successful http:// connection will display the raw HTML like this example –

e

You may sometimes see an SSL error when testing some https:// sites successfully this is often perfectly normal as CURL can’t read the cert fully.

f

If you have a DNS issue expect to see this error –

g

For an external URL you are having connectivity issues with, expect to see timeout errors like this –

h