Microsoft Azure is one of the top 3 cloud computing providers. They offer a large number of products that enable any organization, from SMB to Enterprise, to deploy and manage application services at any scale.
Monitoring Azure Service Using Azure Monitor
Like every other major cloud computing service, Microsoft offers multiple monitoring tools, under the Azure Monitor umbrella, that you can use to understand what’s happening with your services. Azure Monitor provides the following capabilities:
- Log analytics
- Application Insights
Metrics: “Metrics in Azure Monitor are the series of measured values and counts that are collected and stored over time. There are standard (or “platform”) metrics, and custom metrics. The standard metrics are provided to you by the Azure platform itself. Standard metrics reflect the health and usage statistics of your Azure resources. Whereas custom metrics are sent to Azure by your applications using the Application Insights API for custom events and metrics, Windows Azure Diagnostics (WAD) extension, or by Azure Monitor REST API.” – https://docs.microsoft.com/en-us/azure/azure-monitor/platform/metrics-charts
Every cloud computing provider MUST make a metrics monitor available to their customers since time series metrics are critical to understanding what is happening at the infrastructure component level (meaning any component that application services depend upon). Seemingly standard practice these days for cloud vendor monitoring, Microsoft collects metric data at 1 minute intervals. This is very low granularity data intended to show you trends, not the granularity you normally want for troubleshooting contention issues within your application services. Of course, low granularity data is better than not having any data at all.
Logs: “Azure Monitor can collect different sources as log data and store it for correlation and analysis using its query language.” – https://docs.microsoft.com/en-us/azure/azure-monitor/azure-monitor-log-hub
Ingesting large quantities of log files and then creating meaningful information from that data is a difficult task. This is especially true at massive scale as you would experience with a major cloud provider like Azure. Ingesting, indexing, and analyzing all log data from many services takes significant time and there is an inherent delay in this process. The Azure docs state this delay to be anywhere from 2-5 minutes. If you want to use log files to create metrics with alerts it’s important to understand that you will encounter meaningful delays in receiving these alerts. There are more efficient ways to use log information to help you identify the root cause of problems and we will discuss that later in this article.
“Azure Monitor Application Insights provides deep code-level application performance monitoring.” – https://docs.microsoft.com/en-us/azure/azure-monitor/azure-monitor-app-hub
Microsoft enables code level application monitoring via SDKs that you add to your projects. The process requires a non-trivial amount of effort and knowledge
but it does provide the functionality required to gain visibility into your running applications.
Distributed tracing has become the defacto standard for monitoring microservices (or highly distributed architectures) and Microsoft supports distributed tracing of Python and Go
via OpenCensus compatibility.
Microsoft Azure Monitor can only be used to monitor components and services running within Microsoft Azure. If you have a multi-cloud strategy, or if you want a monitoring solution with better granularity and less manual effort, you will need to look at other commercial monitoring solutions.
Monitoring and Tracing Azure Services Using Instana
Instana simplifies and enhances the monitoring of your Azure services and application code, monitors everywhere you need it to (Azure, AWS, Google, on-prem, etc), and provides high fidelity data that includes 1 second granularity metrics and distributed traces for EVERY request.
The documentation contains the latest information on the Azure services that are automatically monitored by Instana. Support is continually expanding to encompass the most popular and important services provided by Microsoft. Currently, Instana supports metric monitoring for the following Azure services:
To provide visibility and insight into Azure based cloud environments, Instana automatically discovers and monitors your Azure services. Our agent is easily installed inside or outside your Azure infrastructure. You can download the agent from the Instana management portal and install it on any (virtual) machine that has access to Azure.
Azure Remote Services monitoring will:
- Provide real-time insights into metadata, configuration, metrics
- Watch the health of each service and alert on issues
- Enable service discovery leveraging service information (see Service Configuration)
- Place this insight within the context of the rest of your infrastructure/services
A major benefit of using Instana to monitor Azure services and your application services is that each request is traced by Instana for a full, end to end view (Figure 1). There is no sampling of any kind ever, so you will always have complete data to identify the root cause of any problematic request.
Figure 1 – Instana distributed trace of application request through Azure services
In addition to distributed tracing, all of the Azure metrics are automatically analyzed and correlated to the application service components (Figure 2). If any requests slow down passing through any Azure services, you will definitely know it and you will also have all supporting data (like metric KPIs) instantly available to help you understand the root cause (Figure 3).
Figure 2 – Instana dashboard showing CosmosDB metrics and meta-data
Figure 3 – Instana screenshot showing automatic identification of issue with CosmosDB
Potentially more important than each individual request are the aggregate dashboards that are provided for each Azure application service (Figure 4). These dashboards analyze all of the trace data over the selected time period and show trends in health and performance. It’s easy to identify problems with any service at a glance using the various charts contained within each dashboard.
Figure 4 – Instana service dashboard showing aggregate information for all requests through this service
Just as with every other technology monitored by Instana, Azure monitoring includes automatic and continuous discovery, dependency mapping, metric monitoring, distributed tracing, anomaly detection, and filter based analytics across the complete trace data set. If you want deep visibility of your Microsoft Azure services combined with distributed tracing of your microservices then you should sign up for a free trial of Instana and see for yourself.