Cloud native apps need a lot of monitoring. It’s not that they are inherently unstable, but there are concurrency and consistency issues in distributed application development that can lead to bugs that are difficult to track and reproduce, especially when built on a multi-tenant platform that you use. can not check . Things get harder to manage when you’re dealing with autoscaling or starting services on demand with serverless approaches like Azure Functions.
What is needed is a native monitoring technology baked into the platform along with the tools needed to work with that data, either by analyzing logs and statistics or reacting to that data automatically. It’s an approach that gives us the elements needed to both build an observation platform and the levers to turn it into a modern control framework.
The public cloud is an example of where classic control techniques fail. It’s too complex to check by defining the exact output state based on the current input, so we can’t build a classic controller around our applications. Instead, we need to move to modern control theory approaches where we use the output of a service to determine the state of its internal systems, and then artificial intelligence that controls it to work within a set of constraints.
Introducing Azure Monitor
In Azure, that’s the role of Azure Monitor, a tool to collect, collect, and store logs and metrics from all your apps and services. Much of what Azure Monitor does is enabled once you enable a service and add it to a resource group. You can use tools such as App Insights to build support for Azure Monitor into your own code, use its agents in your virtual infrastructure, and retrieve data from the touchpoints in the Azure platform services. It helps manage what can be a lot of information, especially when you run code on a global scale.
Data is collected as near-real-time metrics or as log files, which also contain telemetry data. The result is a mix of data that provides point-in-time and time series information. Azure Monitor provides a dashboard where you can view and analyze your data, as well as APIs that allow it to be a source for other applications, such as triggering automations through Logic Apps or Power BI dashboards for admin desktops. When working in the Azure portal, you can use the Log Analytics tool.
Azure Monitor provides the analytics framework used by Azure Application Insights, VM Insights, and Container Insights. These help you extend it to your devops environment, giving you tools to work with your code, with Kubernetes, and with Linux and Windows virtual machines in an infrastructure-as-a-service (IaaS) environment . Cloud applications are heterogeneous and combine platform as a service and IaaS, platform applications and your own code, hosted on that platform, in those VMs or in that container environment. It makes sense to have a single monitoring environment that can pull in data from anywhere, analyze it, and generate appropriate alerts.
It is possible to use rules to bring together different alerts to deliver the right alerts for your applications based on specific metrics. You can even send alerts to specific people so that database support technicians get database alerts and infrastructure alerts go to site reliability technicians. Building alerts into your devops model ensures application resilience even when automated systems can’t keep them online. Rules can then be used to automate specific operations, such as autoscaling services when response times drop or when the load exceeds preset limits.
You don’t need to do much to enable Azure Monitor for Azure services. It is automatically enabled when you create an Azure resource of any type. These basic features are free, but you must pay for additional log recording and storage. Here you can choose pay-as-you-go options for $2.99 per GB per day or select one of several plans that commit you to a fixed amount of data per day, from 100 GB for $219.20 per day up to 5,000 GB for $9,016 per day. Dedicated recording is for very large sites that generate a lot of log data. Once ingested, data is stored for free for up to 31 days, with longer term storage billed at $0.13 per GB per month.
There are other costs if you need to add additional custom metrics or perform a search more than a million times per month. You must pay for more than 10 alerts and for more than a certain number of alerts per month. There is also a cost if you choose to use automated text messages or voice alerts for on-call technicians.
Working with Azure Monitor
Using the Azure Monitor portal is easy enough. In the Azure portal, select Monitor to open the web view. The overview page shows you new services and gives you a starting point for tools to explore statistics and logs and set up any alerts.
Exploring metrics gives you quick insight into an application. For example, an Azure-hosted web app running in Azure App Services can be examined to see how much memory and CPU it’s using and what response codes it generates, in addition to a wide range of possible metrics. These can be plotted, filtered, and used to build dashboards for your application. You could see if there is a correlation between CPU usage and response failures. Charts can be plotted using a range of chart types, from line and bar charts to a grid of values. After you create a chart, you can add it to your application dashboard.
Similar tools help you work with logs, using Kusto, Microsoft’s scaling data query language, to explore your logs. Working with Kusto makes sense. It is designed for fast queries and big data analysis using an SQL-like query language. It’s a read-only tool, so you don’t have to worry about inexperienced technicians accidentally deleting or editing data. All Kusto can do is process data, ready to use and display. For example, if you know that a problem has occurred between two timestamps, you can use Kusto to fine-tune all your log data to extract everything relevant in that time period. Log data can be exported to Power BI for better visualizations.
Generate alerts based on statistics
Creating an alert is relatively easy, using a basic workflow to choose the resource to monitor and then choosing a condition to use to generate an alert. You may be using a static Azure website and want to know when it is updated from GitHub by a DependaBot action. You can create a rule to detect this and then email the appropriate technicians to indicate that an automated site update has occurred.
The whole process is relatively simple. You work with the default actions set when you create an Azure resource, so there’s no need to add custom actions for most operations. Microsoft regularly updates the service with new tools and often has tools ready to use as soon as a service or technology becomes widely available. It instrumented the .NET 6 support of Azure App Services on day zero.
Azure Monitor is a tool for your devops and engineering teams for site reliability. In addition to the metrics you need to track, the built-in analytics tools help you build more complex tools to understand how your application works. However, this is only part of Azure’s cloud-native application management suite. Once you’ve used Azure Monitor to collect, collect, and process your data, you can use it with other tools. Data can be exported to a security platform to identify potential breaches or to a Cognitive Services-based tool to predict system requirements so you can scale preemptively and avoid transient outages.
Copyright © 2021 IDG Communications, Inc.