Whether you consider yourself a FinOps practitioner, someone who’s enthusiastic about driving cloud efficiency and maximizing the value you get from the cloud or were just asked to look at ways to reduce cost, the FinOps toolkit has something for you. This month, you’ll find a new solution for staying informed about cost optimization opportunities with FinOps alerts, expanded coverage of managed exports in FinOps hubs, the addition of the reservation break-even point and performance improvements in Power BI reports, and much more! Read on for details.
In this update:
- Stay informed with FinOps alerts
- FinOps hubs managed exports for price and reservation datasets
- Listening to the community: Reservation recommendation improvements
- Data quality improvements in FinOps hubs
- Performance improvements for Power BI reports
- Other new and noteworthy updates
- What’s next
New to the FinOps toolkit?
In case you haven’t heard, the FinOps toolkit is an open-source collection of tools and resources that help you learn, adopt, and implement FinOps in the Microsoft Cloud. The foundation of the toolkit is the Implementing FinOps guide that helps you get started with FinOps whether you’re using native tools in the Azure portal, looking for ways to automate and extend those tools, or if you’re looking to build your own FinOps tools and reports. To learn more about the toolkit, how to provide feedback, or how to contribute, see FinOps toolkit documentation.
Stay informed with FinOps alerts
When your organization’s cloud usage grows beyond a small team, you’ll start to realize that managing the cloud and ensuring efficient use of cloud resources is a full-time job. While most teams will maintain steady-state usage, you might see new, updated, and even deleted resources on a weekly or even daily basis. And while it’s great to see teams cleaning up resources, it’s very common for people to delete only the primary resources within a workload, which has a tendency to leave resources that continue to incur costs on a daily basis. This can be a huge waste and is where FinOps alerts can help.
FinOps alerts raise awareness of cost optimization opportunities like unused resources to help teams automate efficiency efforts. Like FinOps workbooks, FinOps alerts use Azure Resource Graph to inspect resource configuration and identify resources that are no longer being used. By default, FinOps alerts monitor your subscriptions for idle and unused:
- App gateways
- IP addresses
- Load balancers
- Managed disks
- Snapshots
- Stopped (not deallocated) virtual machines
FinOps alerts start with email notifications to a set of stakeholders, but we encourage you to take this even further to meet your needs. Maybe you want to ping engineers in Teams or create work items in Azure DevOps or an internal tracking system. Or maybe you want to take it further and actually delete specific resources. You could even create a tiered system where you tag resources with a date to track when notifications have been sent out and delete them automatically if engineers haven’t responded for 3 months, or whatever makes sense for your organization.
The key thing to remember is that FinOps alerts provide a template that you can and should customize to meet your needs. Start with the default email notifications and build onto that as you learn and grow. Every organization is different and how you adopt FinOps alerts will depend on how your FinOps culture has evolved. Tune alerts to meet your needs and enjoy the benefits of a more efficient cloud environment!
To learn more, see About FinOps alerts and let us know what you’d like to see next.
FinOps hubs managed exports for price and reservation datasets
FinOps hubs provide a data pipeline that ingests data into storage for lightweight reporting for small accounts or Azure Data Explorer for enterprise-grade analytics at scale. And while it’s easy to configure Cost Management exports into hub storage, many organizations have been leveraging managed exports, which create and run exports on your behalf. This month, managed exports have been expanded to support price sheet, reservation detail, reservation transaction, and VM reservation recommendation exports as well.
Armed with a more complete set of data, you can begin to join datasets and answer more interesting questions. Most interesting are the price sheet and reservation recommendations datasets, which are used in the Power BI reports and Data Explorer dashboard. The price sheet data is used to populate missing prices and costs in the cost and usage dataset, which can in turn be used to calculate cost savings from negotiated and commitment discounts. And reservation recommendations are obviously used to identify opportunities to save money by purchasing new reservations. While reservation details and transactions are not yet included in the out of the box reports, you can also leverage them to gain deeper insights into reservation usage within your accounts.
Next up in this area is configurability of managed exports, which will allow you select which exports you want FinOps hubs to manage for you. We’re also expanding the data we ingest to include Azure Advisor recommendations and custom recommendations, like the data you’ll find in FinOps workbooks and FinOps alerts.
Listening to the community: Reservation recommendation improvements
There’s a lot to share about reservation recommendations in FinOps hubs and Power BI reports. Let’s start with one of the top 10 feature requests: Showing the break-even point for reservation recommendations.
Before we get into the changes, let me explain what the break-even point is. The break-even point is the time it would have taken for you to spend the same amount as the purchase price on the uncommitted usage. Let’s say you purchase a commitment discount for $100 and the contracted, on-demand price is $1/day. Your break-even point for that would be 100 days since $1/day * 100 = $100 (the price of the commitment discount). This is useful because once you hit the break-even point, all usage beyond that is effectively “free” and you are saving against what you would have paid if you continued to use resources on-demand. So, if you can prioritize SKUs with the biggest savings and the quickest break-even point, you’ll increase your savings – or, more accurately, cost avoidance.
With that in mind, the break-even point for reservations was added in two places: First, you’ll find two columns in the list of reservation recommendations that show the break-even point date and how many months until the break-even point is reached. These assume 100% utilization, so please do keep that in mind. The second is a new chart that shows potential savings compared to the break-even point number of months.
Beyond the break-even point, organizations with MCA billing profiles can now leverage Cost Management exports to ingest reservation recommendations for Power BI, with or without FinOps hubs.
Organizations using FinOps hubs can also look forward to expanded support for multiple reservation recommendation exports. With almost 100 variations for reservation recommendation datasets based on service, shared vs. subscription scope, and lookback period, having the ability to ingest multiple proves invaluable.
Lastly, organizations using FinOps hubs with Data Explorer will also find a collection small, but critical bug fixes including:
- Changed how reservations are summarized in KQL reports to ensure only the latest version is selected.
- Fixed the date applied to some recommendations due to edge cases in recommendation data.
- Removed duplicate recommendations created for the Canada Central region.
- Fixed an issue where the x_IngestionTime column was not being populated.
Everything here stemmed from the feedback we’ve heard from the FinOps toolkit community. While these are not the only feature requests we’re working on, we hope they show our dedication to delivering the features you need. If you haven’t already, please do take some time to review the top feature requests, vote up (👍) and share those you’re interested in, and add your own feature requests to let us know what you would like to see.
Data quality improvements in FinOps hubs
One of the key advantages of FinOps hubs is data quality and completeness. Each month, we strive to identify and resolve issues and gaps to minimize the amount of work you need to do to get the answers you need. This is a large part of why more and more organizations are turning to FinOps hubs to report on cost savings. FinOps hubs takes the cost and usage data from Cost Management and augments it to populate missing prices and costs or fix bugs and inconsistencies which have not been addressed in the underlying platform yet. In March, we continued this mission with two changes to our Data Explorer ingestion process to address case-sensitivity issues and missing data.
First, case-sensitivity refers to handling the differences between upper- and lower-case letters when filtering, grouping, or joining data. The risk of not handling inconsistent casing is that you might group by an ID and see two or more rows that have the same logical value, but different case. To work around this, BillingAccountId and CommitmentDiscountId are now lowercased in the cost and price datasets. We also updated the cost data transform to handle case-sensitivity of the x_BillingProfileId column during the cost/price join (where we populate missing prices). This last one shouldn’t impact anything beyond populating more rows with missing prices/costs.
Second – and possibly more interesting to most – we made some small tweaks to handle missing prices and costs in the data we get from Cost Management. To share some context, Cost Management doesn’t include the contracted (on-demand) unit price or cost for various scenarios like EA reservation usage when cost allocation is enabled, MCA reservation usage, and Marketplace usage and purchases. This means summing ListCost or ContractedCost columns may not account for charges where the cost isn’t available. To work around this, FinOps hubs joins prices and costs to account for some of the changes, but over time, we’ve discovered more scenarios that weren’t yet covered. In March, we focused on covering small differences from rounding errors and scenarios where the list and contracted prices are not available in the price sheet. These should lead to increased cost savings for all newly ingested data.
Taking this one step further, the new Data Explorer dashboard for FinOps hub 0.9 includes a Data ingestion > Data quality section that helps you identify the missing and incorrect costs within your accounts. We encourage you to explore this to get a clearer picture of your savings calculations.
Along the same lines, we also updated Power BI to accurately reflect savings. This means that the ListCost - EffectiveCost may not always equal the TotalSavings value. Again, this is because of the missing ListCost values. When we see $0 ListCost and $100 EffectiveCost, for instance, we assume there is $0 savings. This leads to a presentation of $0 - $100 = $0, which clearly isn’t correct math, but it does accurately reflect the savings. You’ll see this difference drop over time as we address more of the gaps in the underlying data.
It’s important to note that these changes were made to the Data Explorer ingestion process and will not impact historical data that is already available. To apply these fixes to historical data, you can re-ingest data into Data Explorer using the ingestion_ExecuteETL pipeline in your hub Data Factory instance. You can accomplish that by re-exporting data in Cost Management for the desired months or by manually triggering the pipeline for the scopes and months you’re interested in.
We’re already hard at work at the next set of investments in this space, which should cover the biggest gaps. Stay tuned for updates, keep your hub instance upgraded to the latest release, and let us know if you spot any gaps or unexpected results by posting a question in the discussion forum or creating a new issue.
Performance improvements for Power BI reports
Last month, I talked about the performance improvements we made to the Power BI reports, some of those being optional. This month, we disabled the Deprecated: Perform Extra Query Optimizations parameter by default to leverage those optimizations. We discussed this last month, but this parameter enables the following updates to the Costs dataset in Power BI storage reports:
- Support for FOCUS 1.0-preview.
- Tracking data quality issues with the x_SourceChanges column.
- Fixing x_SkuTerm values to be numbers for MCA.
- Informative x_FreeReason column to explain why a row might have no cost.
- Unique name columns to help distinguish between multiple objects with the same display name.
If you need any of these changes to be maintained going forward, please let us know by submitting an issue to request the specific changes you need be maintained. In the meantime, you can enable the Deprecated: Perform Extra Query Optimizations parameter. This parameter will be removed in or after our July release.
Going forward, we will generally try to avoid augmenting the data we pull directly from storage accounts due to the performance and scalability impact for storage-based reports. If you need data augmentation, please use FinOps hubs with Data Explorer, where data transformation and augmentation can be performed at scale in a performant manner.
Looking beyond the cost and usage data, 0.9 also brings improvements to Azure Resource Graph queries used in the Governance and Workload optimization reports. Specifically, all reports have been optimized to handle cases where there is no data and improve readability and performance of the queries.
Other new and noteworthy updates
Many small improvements and bug fixes go into each release, so covering everything in detail can be a lot to take in. But I do want to call out a few other small things that you may be interested in.
In FinOps hubs:
- Documented the roles that will be assigned as part of the deployment in the template details.
- Changed the deployment template to only deploy Key Vault when configured as a remote hub.
- This will not remove existing Key Vault instances. Please delete them manually if not using this instance as a remote (secondary) hub.
- Added resource-specific tags to the stop all triggers deployment script.
- Updated the deployment script to set the settings.json scopes property to an array.
- Removed the trusted external tenants setting due to an error causing redeployments to fail. Please enable this after deploying FinOps hubs the first time.
- Removed the Managed Identity Contributor permission assigned to managed identities used during the deployment.
-
- The deployment cannot remove role assignments. You can safely remove role assignments from the managed identities to limit access.
- Do not delete the managed identities. Deleting managed identities can result in errors during upgrades.
In Power BI reports:
- Added support for promoted tags with spaces in the tag key.
- Fixed the "The import Storage URL matches no exports" error.
- Fixed core count double-counting on the Hybrid Benefit page.
- Fixed savings to include negotiated discounts on the Total savings page.
- Fixed issue with breaking storage account recommendations when resource tags are duplicated after tag inheritance.
In open data:
- Added the "southcentralus2" region.
- Renamed an incorrect “Central Canada” reference to “Canada Central”.
- Added the "1K/Day" pricing unit.
- Added 69 new and updated 19 existing resource types.
- Added 2 new resource type to service mappings.
- Added 3 new dataset examples for MCA reservation datasets.
What’s next
I’m excited about what’s coming over the next few months. Here are a few of the things we’re looking at:
- FinOps hubs will add support for ingesting data into Microsoft Fabric eventhouses and introduce recommendations, similar to what you see in Azure Optimization Engine and FinOps workbooks.
- Power BI reports will add support for Microsoft Fabric lakehouses.
- FinOps hubs and Power BI will both get updated to the latest FOCUS release.
- FinOps workbooks will continue to get recurring updates, expand to more FinOps capabilities, and add cost from FinOps hubs.
- Azure Optimization Engine will continue to receive small updates as we begin to bring some capabilities into FinOps hubs in upcoming releases.
- Each release, we’ll try to pick at least one of the highest voted issues (based on 👍 votes) to continue to evolve based on your feedback, so keep the feedback coming!
To learn more, check out the FinOps toolkit roadmap, and please let us know if there’s anything you’d like to see in a future release. Whether you’re using native products, automating and extending those products, or using custom solutions, we’re here to help make FinOps easier to adopt and implement.