Monitoring a Windows Azure Application
Authors: Larry Franks, Rama Ramani
One of the challenges with hosting an application in Windows 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 Windows Azure services such as storage or Windows 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 Windows Azure Platform:
Windows Azure Management Portal – Displays the status of a hosted service, including each instance of the service.
Windows Azure Service Management REST API – Provides an API that can be used to programmatically retrieve the same status information displayed in the Management Portal.
Windows Azure Diagnostics – Captures performance monitor information, Windows and application-level log files, as well as custom logging and tracing information for a hosted service.
Windows Azure Storage Analytics – Provides logging and metrics data for Windows Azure Storage.
Windows Azure SQL Database Dynamic Management Views – Provides information useful in diagnosing performance problems when using SQL Database.
Windows Azure Management Portal
The Windows 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. For a complete list of the status messages returned in the management portal, as well as their meaning, see Identifying the Status Messages in the Management Portal.
To view the status of your application in the Windows 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 Windows 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 Windows Azure Diagnostics.|
Windows Azure Service Management REST API
The status information displayed in the Windows Azure Management Portal can also be obtained programmatically by using the Windows 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 Windows Azure Service Management REST API, see the Windows Azure Service Management REST API Reference.
Monitoring and Diagnostics
Windows 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. Windows Azure Diagnostics provides a mechanism for scheduling periodic copies of diagnostic information to the storage account.
When configuring Windows 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 Windows 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 Windows Azure Storage taken up by diagnostics data.
For more information on working with Windows Azure Diagnostics, see Collecting Logging Data by Using Windows Azure Diagnostics.
Windows Azure Management Pack
If you are familiar with System Center Operations Manager (SCOM,) you may want to use the Windows Azure Management Pack to make Windows Azure diagnostics information available within SCOM. For more information, see Monitoring Windows Azure Applications.
Windows Azure Storage Analytics
If your application uses Windows 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.
For more information, see Storage Analytics Overview.
Windows Azure SQL Database Dynamic Management Views
Dynamic Management Views provide information that is useful in diagnosing performance issues with 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 SQL Database Server.
For more information, see Monitoring Windows Azure SQL Database Using Dynamic Management Views.