One of the best ways to control Azure costs is to use automated tools that point to the places where your money is spent. These tools let you analyze the costs on dashboards and notify when your Azure spending crosses some predefined thresholds. The tools described below all belong to Azure Cost Management.
The easiest way to find inefficiencies in an Azure environment is to use the recommendations available in the Cost pane of Azure Advisor. This automatic tool looks for unused or underutilized resources and other grave problems in the deployment. It is definitely worth checking out as it doesn’t cost anything and can show the pain points across multiple subscriptions. Apart from cost recommendations, Advisor can help you with security, performance, and high availability.
Another step to be taken is to craft some cost analysis dashboards. The UI that Azure provides for this is very intuitive and it enables looking at the costs in different granularities, timespans, and splits. To be able to make use of the dashboards to the fullest, it’s a good idea to combine them with proper tagging (which we already covered) and to have proper resource organization in the first place, as the Cost Management dashboards operate on Azure scopes.
The third necessary and fairly easy tool in the box is setting up budgets and cost alerts. Budgets can be set up on Subscriptions or any other scope that is applicable to Cost Management for a set time interval, with periodic reset. In the simplest case, when a particular percentage of the budget is spent, we can configure a notification email to be sent to the stakeholders. However, here’s where a more advanced and sophisticated strategy for automated cost control can be employed as well: When combining budget notifications with Azure Monitor action groups, we can prepare advanced automation using Action Group Webhooks, Azure Functions, Logic Apps, and more to trigger virtually any action, e.g. stopping or downsizing the resources, effectively making your Azure environment self-regulating.