Scenario: How to scale out web app base on custom metrics. For example: request, response time and etc.
Currently, Web App Linux only CPU and memory are available.
Here is the end to end steps/screenshots:
**Step 1. Use the portal to create an Azure AD application and service principal that can access resources
Click “App registration”

“New registration”

Enter a Name and click Register

In Overview page, you can find the Application Id and Tenant Id.

Create a client secret.


- Copy the client secret in Azure Portal

For more information: https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-create-service-principal-portal
**Step 2. Add app roles in your application and receive them in the token
Go to your resource group and “Access Control” and “Add a role assignment”

Select “Contributor” and select your app (Registered in Step1)

Go to your App Service Plan

Select “Reader” Role

Publish your function app.

Test Your Function App in Azure Portal

Verify the Instance Count in Azure Portal

Get the Function URI:


Test it in browser.

Verify it in Azure Portal

For more information: https://docs.microsoft.com/en-us/azure/active-directory/develop/howto-add-app-roles-in-azure-ad-apps
**Step 3. Setup an alert to change capacity
Create an alert and choose a custom metric

Create a action group and action type “Webhook”, the function URI is from step2.8

Save alert

Simulate a User Load and verify the Instance Count:




- Instance Count changed to 5

1 | using System; |
HTH. 2019-11-18 By Jacky