Azure App Services Test

Azure App Service is a managed cloud service that allows you to deploy a web application and make it available to your customers on the Internet in a very short amount of time. Since such web applications are typically of a business-critical nature, customers insist on their continuous availability and peak performance at all times. To avoid customer complaints, cloud administrators should  constantly check the availability, responsiveness, and resource utilization of every web application deployed on the Azure App Service, swiftly identify those applications that are experiencing availability, operational, or overall performance issues, and rapidly initiate measures to eliminate the bottleneck. The Azure App Services Test test helps administrators in this regard.

By continuously tracking the status of each web application deployed on the Azure App Service, this test points administrators to applications that are not running. Additionally, the test periodically checks the TCP connection to each web application, thereby alerting administrators to those applications that may be running, but are inaccessible over the network. HTTP responses sent by the application are also scrutinized, and HTTP errors promptly captured and reported, so that administrators can quickly figure out why an application is unavailable.

Also, by monitoring the responsiveness of applications to web requests, the test pinpoints applications that are responding slowly to these requests and why - is it because of a latent network connection? is it owing to a slow backend server? is it due to heavy request load on the application? or is poor application throughput the bottleneck? Furthermore, the test also measures the CPU usage of each web application, thus leading administrators to those applications that are hogging CPU and adversely impacting the performance of other web applications.

Target of the Test: Microsoft Azure Subscription

Agent deploying the test: A remote agent

Output of the test: One set of results for each web application hosted by the Azure App Service of the target Azure subscription

Configurable parameters for the test
Parameters Description

Test Period

How often should the test be executed.

Host

The host for which the test is to be configured.

Subscription ID

Specify the GUID which uniquely identifies the Microsoft Azure Subscription to be monitored. To know the ID that maps to the target subscription, do the following:

  1. Login to the Microsoft Azure Portal.

  2. When the portal opens, click on the Subscriptions option (as indicated by Figure 1).

    Figure 1 : Clicking on the Subscriptions option

  3. Figure 2 that appears next will list all the subscriptions that have been configured for the target Azure AD tenant. Locate the subscription that is being monitored in the list, and check the value displayed for that subscription in the Subscription ID column.

    Figure 2 : Determining the Subscription ID

  4. Copy the Subscription ID in Figure 2 to the text box corresponding to the SUBSCRIPTION ID parameter in the test configuration page.

Tenant ID

Specify the Directory ID of the Azure AD tenant to which the target subscription belongs. To know how to determine the Directory ID, refer to Configuring the eG Agent to Monitor a Microsoft Azure Subscription Using Azure ARM REST API.

Client ID, Client Password, and Confirm Password

To connect to the target subscription, the eG agent requires an Access token in the form of an Application ID and the client secret value. For this purpose, you should register a new application with the Azure AD tenant. To know how to create such an application and determine its Application ID and client secret, refer to Configuring the eG Agent to Monitor a Microsoft Azure Subscription Using Azure ARM REST API. Specify the Application ID of the created Application in the Client ID text box and the client secret value in the Client Password text box. Confirm the Client Password by retyping it in the Confirm Password text box.

Proxy Host and Proxy Port

In some environments, all communication with the Azure cloud could be routed through a proxy server. In such environments, you should make sure that the eG agent connects to the cloud via the proxy server and collects metrics. To enable metrics collection via a proxy, specify the IP address of the proxy server and the port at which the server listens against the Proxy Host and Proxy Port parameters. By default, these parameters are set to none, indicating that the eG agent is not configured to communicate via a proxy, by default.

Proxy Username, Proxy Password and Confirm Password

If the proxy server requires authentication, then, specify a valid proxy user name and password in the Proxy Username and Proxy Password parameters, respectively. Then, confirm the password by retyping it in the Confirm Password text box.

Detailed Diagnosis

To make diagnosis more efficient and accurate, the eG Enterprise embeds an optional detailed diagnostic capability. With this capability, the eG agents can be configured to run detailed, more elaborate tests as and when specific problems are detected. To enable the detailed diagnosis capability of this test for a particular server, choose the On option. To disable the capability, click on the Off option.

The option to selectively enable/disable the detailed diagnosis capability will be available only if the following conditions are fulfilled:

  • The eG manager license should allow the detailed diagnosis capability
  • Both the normal and abnormal frequencies configured for the detailed diagnosis measures should not be 0.
Measures reported by the test:
Measurement Description Measurement Unit Interpretation

Status

Indicates the current state of this website.

 

The values reported by this measure and its numeric equivalents are mentioned in the table below:

Measure Value Numeric Value
Running 1
Stopped 2
Unknown 0

Note:

By default, this measure reports the Measure Values listed in the table above to indicate the current state of this website. The graph of this measure however, is represented using the numeric equivalents only - 0 to 2.

The detailed diagnosis of this measure if enabled, lists the URL that is used to hit the web app, the service plan, the web space of the web app and the tier of the web app.

Is site enabled?

Indicates whether/not this web app is enabled.

 

The values reported by this measure and its numeric equivalents are mentioned in the table below:

Measure Value Numeric Value
Enabled 0
Offline 1

Note:

By default, this measure reports the Measure Values listed in the table above to indicate whether the web app is enabled or not. The graph of this measure however, is represented using the numeric equivalents only - 0 or 1.

Usage state

Indicates the current availability of management information of this web app.

 

The values reported by this measure and its numeric equivalents are mentioned in the table below:

Measure Value Numeric Value
Yes 1
No 0

Note:

By default, this measure reports the Measure Values listed in the table above to indicate the current availability of management information of this web app. The graph of this measure however, is represented using the numeric equivalents only - 0 or 1.

Compute mode

Indicates the compute mode of this web app.

 

The values reported by this measure and its numeric equivalents are mentioned in the table below:

Measure Value Numeric Value
Limited 1
Normal 0

Note:

By default, this measure reports the Measure Values listed in the table above to indicate the compute mode of this web app. The graph of this measure however, is represented using the numeric equivalents only - 0 or 1.

SSL state

Indicates whether/not this web app is SSL-enabled.

 

The values reported by this measure and its numeric equivalents are mentioned in the table below:

Measure Value Numeric Value
True 1
False 0

Note:

By default, this measure reports the Measure Values listed in the table above to indicate whether/not this web app is SSL-enabled. The graph of this measure however, is represented using the numeric equivalents only - 0 or 1.

CPU time

Indicates the amount of time the CPU was actually executing instructions for this web app during the last measurement period.

Secs

 

No of requests

Indicates the total number of requests to this web app during the last measurement period.

Number

 

Data in

Indicates the rate at which the data was received from this web app during the last measurement period.

Mbps

 

Data out

Indicates the rate at which data was sent from this web app during the last measurement period.

Mbps

 

HTTP success

Indicates the number of times the HTTP requests were successful during the last measurement period.

Number

 

HTTP redirection

Indicates the number of times the HTTP request were redirected to this web app during the last measurement period.

Number

 

HTTP client error

Indicates the total number of HTTP client errors encountered by this web app during the last measurement period.

Number

Ideally, the value of this measure should be zero.

HTTP server error

Indicates the number of HTTP server errors encountered by this web app during the last measurement period.

Number

Ideally, the value of this measure should be zero.

HTTP unauthorized

Indicates the number of HTTP 401 errors i.e., unauthorized errors encountered by this web app during the last measurement period.

Number

Ideally, the value of this measure should be zero.

HTTP forbidden

Indicates the number of HTTP forbidden errors encountered by this web app.

Number

Ideally, the value of this measure should be zero.

HTTP not found

Indicates the number of HTTP 404 errors i.e, HTTP not found errors encountered by this web app.

Number

Ideally, the value of this measure should be zero.

HTTP not acceptable

Indicates the number of HTTP 406 errors encountered by this web app during the last measurement period.

Number

Ideally, the value of this measure should be zero.

Memory working set

Indicates the amount of physical memory required for the working set of this web app.

MB

 

Average memory working set

Indicates the average amount of memory required for the working set of this web app.

MB

 

Average response time

Indicates the average time taken by this web app to respond to requests.

Secs

A high value for this measure indicates that the web app is taking too long to respond.

Total response time

Indicates the total time taken by this web app to respond to requests.

Secs

A high value for this measure indicates that the web app is taking too long to respond.

TCP availability

Indicates whether the test managed to establish a TCP connection to this web app.

Percent

Failure to establish a TCP connection may imply that either the web app is not up, or is not operating correctly. In some cases of extreme overload, the failure to establish a TCP connection may be a transient condition. As the load subsides, the web app may start functioning properly again.

TCP connection time

Quantifies the time for establishing a TCP connection to this web app.

Secs

Typically, the TCP connection establishment must be very small (of the order of a few milliseconds).

Server response time

Indicates the time period between when the connection was established and when the server sent back a HTTP response header to this web app.

Secs

While the total response time may depend on several factors, the server response time is typically, a very good indicator of a server bottleneck (e.g., because all the available server threads or processes are in use).

Content validity

Validates whether this web app was successful in executing the request made to it.

Percent

A value of 100% indicates that the content returned by the test is valid. A value of 0% indicates that the content may not be valid. This capability for content validation is especially important for multi-tier web applications. For example, a user may not be able to login to the web site but the server may reply back with a valid HTML page where in the error message, say, "Invalid Login" is reported. In this case, the availability will be 100 % (since we got a valid HTML response). If the test is configured such that the content parameter should exclude the string "Invalid Login," in the above scenario content validity would have a value 0.

Response code

Indicates the response code returned by this web app.

Number

A value between 200 and 300 indicates a good response. A 4xx value indicates a problem with the requested content (eg., page not found). A 5xx value indicates a server error.

Content length

Indicates the size of the content returned by this web app.

KB

Typically the content length returned by the server for a specific URL should be the same across time. Any change in this metric may indicate the need for further investigation on the server side.

Data transfer time

Indicates the time taken for a data transfer between the drive and the host system.

Secs

Data transfer time being high denotes a problem.

SSL certificate validity

Indicates the number of days from the current day for which the SSL certificate of this web app will be valid.

Number

A low value for this measure implies that the SSL certificate is about to expire. You may want to renew the certificate or deploy a new SSL certificate to ensure continued accessibility of the web app.