Operations is very important aspect of software applications. And in my opinion, many times this aspect is neglected by many of us, especially developers.
In this article, let’s have a look at a monitoring service from Azure, namely Azure Monitor.
What is Azure Monitor ?
Azure Monitor is a comprehensive solution for collecting, analyzing and acting on the telemetry from cloud and/or on-premises solutions. Thus Azure Monitor helps you to increase availability and performance of your applications.
The telemetry collected is presented in such a form that it is very easy to identify problems or bottlenecks in the applications or infrastructure. You can proactively identify the issues by analyzing the telemetry.
Some of the examples of how Azure monitor can be useful:
- Applications can log the telemetry in Azure Application Insights and then this can be used to detect and diagnose issues in the applications and their dependencies
- Infrastructure issues can be proactively monitored and corrected by using Azure Monitor for VM and Azure Monitor for containers
- Support operations at scale with smart alerts and automated actions.
- Create visualizations with Azure dashboards and workbooks.
Let’s have look at some basic terms related to Azure Monitor and some basic concepts. Below is the architecture diagram from official documentation.
As the diagram shows, different type of Azure resources send telemetry to Azure monitor and then Monitor provides ways to visualize, analyze and respond to the incidents.
Metrics are the numerical values that describe some aspect of system at a particular point in time. They are lightweight and capable of supporting near real-time scenarios making them particularly useful for alerting and quickest detection of issues.
While collecting the metrics, Azure collects some other information too, like time at which metric was collected, metric name, its value, etc.
There is also retention period associated with metrics.
Logs contain different kinds of data organized in the form of records. Logs can contain numeric values like Azure Monitor Metrics but typically contain text data with detailed descriptions.
Logs can contain numeric values like Azure Monitor Metrics but typically contain text data with detailed descriptions. Applications can have their own way of logging, they can also add metrics in the log text in order to help the analysis.
Monitoring data is useful only if it can improve your visibility into your applications or infrastructure. Various monitoring solutions and services such as Application Insights, Azure Monitor for containers, provide deep insights into your applications and infrastructure.
Visualize and Analyze
For many Azure resources, you’ll see data collected by Azure Monitor right in their Overview page in the Azure portal. Have a look at any virtual machine for example, and you’ll see several charts displaying performance metrics.
Click on any of the graphs to open the data in metrics explorer in the Azure portal, which allows you to chart the values of multiple metrics over time. You can view the charts interactively or pin them to a dashboard to view them with other visualizations.
You can also use Power BI platform to import data from Azure Monitor and create reports / dashboards based on this data.
There are various ways by which your system may want to respond.
If the demand is high, you can configure rules to increase the capacity of resources. This is called as autoscaling. e.g. if one instance of app service is not able to handle the load and resource utilization is more than 80% for the instance, then add a new instance.
Alerts in Azure Monitor proactively notify you of critical conditions and potentially attempt to take corrective action. Alert rules are based on numeric metric values, the rules can have complex logic.
The Alert rules have actions groups, which contain unique set of recipients and actions.
Azure monitor can further be integrated with Azure Event Hub or Logic Apps to process the logs and performing automated analysis and showing the logs in intended formats.
Azure monitor also provides APIs which can be used to extract data just in case you want to write custom logic.
I hope you find this information useful. Let me know your thoughts.