Monitoring an Azure Application
Updated: April 23, 2014
Authors: Larry Franks, Rama Ramani
One of the challenges with hosting an application in Azure is how to determine the overall health and performance of your application. Since your application may be distributed across multiple instances, the number of which may change at any time (if you are dynamically scaling), you need a way to determine the health of each instance, as well as the overall health of the entire deployment. If your application uses Azure services such as storage or Microsoft Azure SQL Database, you must also monitor these services to understand the overall health of your solution.
The following can be used to collect monitoring and diagnostic information on the Azure Platform:
Azure Management Portal – Displays the status of a hosted service, including each instance of the service.
Azure Service Management REST API – Provides an API that can be used to programmatically retrieve the same status information displayed in the Management Portal.
Azure Diagnostics – Captures performance monitor information, Windows and application-level log files, as well as custom logging and tracing information for a hosted service.
Azure SQL Database Dynamic Management Views – Provides information useful in diagnosing performance problems when using Azure SQL Database.
Custom application telemetry is one of the core necessities of building a cloud application and a valuable data source for monitoring an application, especially at cloud scale. Please refer to the Telemetry section in this link - http://social.technet.microsoft.com/wiki/contents/articles/17987.cloud-service-fundamentals.aspx
Azure Management Portal
The Azure Management Portal monitors and displays the state of your hosted applications, and can be used to determine the overall health of the application deployment. In general, the status messages displayed in the management portal provide a high-level view into the health of a hosted application.
To view the status of your application in the Azure Management Portal, select Hosted Services, Storage Accounts & CDN, and then select Hosted Services. The services will be displayed in the center of the page, along with the status. Expanding each service allows you to view the role and role instance status.
|The Azure Management Portal status messages may not accurately reflect all failure conditions that occur for a hosted application, and should not be used as the sole method of determining the health of your application. For example, a failure that manifests as a failure on a web page, or improper rendering of a web page, would not trigger a status message in the management portal. To obtain more detailed information on the health of your application, you should use Azure Diagnostics.|
Azure Service Management REST API
The status information displayed in the Azure Management Portal can also be obtained programmatically by using the Azure Service Management REST API. The specific APIs that return status information are Get Hosted Service Properties and Get Deployment.
For more information on the Azure Service Management REST API, see the Azure Service Management REST API Reference.
Monitoring and Diagnostics
Azure Diagnostics provides you with the ability to aggregate performance counters and logs from your hosted application instances, as well as any custom log files, tracing, and instrumentation output that your application produces. Since each application instance only provides a limited amount of non-durable storage, you must provide a Windows Storage account as a durable storage location. Azure Diagnostics provides a mechanism for scheduling periodic copies of diagnostic information to the storage account.
When configuring Azure Diagnostics, you should carefully consider the performance counters and logs you need to collect as well as the rate at which you collect the information. The diagnostic process on each instance of your application has a FIFO buffer that can be quickly overwritten if you allocate too little space for the amount of data you are processing, set too long an interval for copying data from the buffer to Azure Storage, or have an extremely high sample rate for performance counter information. You must also consider what data needs to be copied to durable storage, as you will be charged for the amount of Azure Storage taken up by diagnostics data.
For more information on working with Azure Diagnostics, see Collecting Logging Data by Using Azure Diagnostics.
Azure Management Pack
If you are familiar with System Center Operations Manager (SCOM,) you may want to use the Azure Management Pack to make Azure diagnostics information available within SCOM.
Azure Storage Analytics
If your application uses Azure Storage, you can enable Storage Analytics to collect logging and metrics information such as request logging, storage capacity information, and information about transactions to your storage account. Storage Analytics is exposed as a REST API, which is accessible from anywhere on the Internet. Access to this API requires authentication using the storage account name and access key.
Azure SQL Database Dynamic Management Views
Dynamic Management Views provide information that is useful in diagnosing performance issues with Azure SQL Database, such as long-running queries, poor query plans, or number of connections to a database. Dynamic Management Views are accessed using Transact-SQL statements, and require a connection to your Azure SQL Database Server.
For more information, see Monitoring Azure SQL Database Using Dynamic Management Views.