<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: HosheBartar</title>
    <description>The latest articles on DEV Community by HosheBartar (@hoshebartar).</description>
    <link>https://dev.to/hoshebartar</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4201353%2F97cca493-759d-4058-8a59-d2964ff88f84.png</url>
      <title>DEV Community: HosheBartar</title>
      <link>https://dev.to/hoshebartar</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/hoshebartar"/>
    <language>en</language>
    <item>
      <title>Which resource or meter carries your Azure cost? A group-and-compare check you can do by hand</title>
      <dc:creator>HosheBartar</dc:creator>
      <pubDate>Sun, 15 Nov 2026 15:12:21 +0000</pubDate>
      <link>https://dev.to/hoshebartar/which-resource-or-meter-carries-your-azure-cost-a-group-and-compare-check-you-can-do-by-hand-4ap9</link>
      <guid>https://dev.to/hoshebartar/which-resource-or-meter-carries-your-azure-cost-a-group-and-compare-check-you-can-do-by-hand-4ap9</guid>
      <description>&lt;p&gt;"Azure SQL Database went up" is a start, not an answer. Which database? And was it compute hours or stored data? The service view of your bill cannot say, because it is the wrong grouping for that question.&lt;/p&gt;

&lt;p&gt;Most cost questions are answered by the same move: pick the grouping that matches the question, list every item, and compare each one with the period just before. You can do it with Cost analysis and a spreadsheet.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: pick the grouping that fits the question
&lt;/h2&gt;

&lt;p&gt;In the Azure portal, open &lt;strong&gt;Cost Management &amp;gt; Cost analysis&lt;/strong&gt; on the subscription or billing scope, and use &lt;strong&gt;Group by&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Service name&lt;/strong&gt;: which product family costs most. Good for a first look.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource group name&lt;/strong&gt;: which environment or team, if your groups follow them.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Resource&lt;/strong&gt;: which single database, app or storage account.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Meter&lt;/strong&gt;: what you are billed &lt;em&gt;for&lt;/em&gt; inside a service: compute hours, stored data, operations, data transfer. Several resources can share one meter.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Subscription&lt;/strong&gt;: only useful on a scope that holds more than one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A rule of thumb: go one level down from where the surprise showed up. A service grew? Group by resource, then by meter.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: export two equal periods
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Set the date range to the last 30 complete days. Azure publishes cost a day or two late, so leave the newest day or two out.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download&lt;/strong&gt; the grouped view as CSV.&lt;/li&gt;
&lt;li&gt;Do the same for the 30 days just before, with the same grouping and the same scope.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The two periods must have the same number of days, or every change you compute is skewed.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 3: join them and compute four columns
&lt;/h2&gt;

&lt;p&gt;Put both exports in one sheet, joined on the item name (&lt;code&gt;XLOOKUP&lt;/code&gt; or a pivot table works). For each item compute:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost&lt;/strong&gt; in the recent period.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share&lt;/strong&gt;: cost divided by the total of the list. Take the total from the same export, not from another screen, so shares and costs cannot disagree.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Previous period&lt;/strong&gt;: the cost in the earlier 30 days.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Change&lt;/strong&gt;: recent minus previous, in money, and as a percentage of the previous cost.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sort by cost, largest first.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: keep the rows people drop
&lt;/h2&gt;

&lt;p&gt;Three kinds of rows usually fall out of a hand-made comparison, and they are often the interesting ones:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;New items&lt;/strong&gt;: a cost now, nothing before. A percentage makes no sense here (there is nothing to divide by), so label them "New" instead of showing a huge number.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Gone items&lt;/strong&gt;: a cost before, nothing now. A lookup from the recent list never finds them. List them separately; they explain part of a falling total, and they confirm that a cleanup really happened.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Items without a name&lt;/strong&gt;: some cost is recorded against the subscription itself, not a resource group or a resource. A reservation purchase or a support plan are typical. Keep them as rows of their own, or your list no longer adds up to the invoice.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 5: read the list
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;A large share with a small change is your baseline. It matters for architecture decisions, not for this month's surprise.&lt;/li&gt;
&lt;li&gt;A small share with a large change is where to look first. The same resource grouped by meter then says whether compute, storage or traffic moved.&lt;/li&gt;
&lt;li&gt;Do not colour rises red and falls green. A rise can be planned growth, and a fall can be an outage.&lt;/li&gt;
&lt;li&gt;If the scope is billed in two currencies, do one sheet per currency. Adding them without an exchange rate gives a number that means nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Doing it without the spreadsheet
&lt;/h2&gt;

&lt;p&gt;The steps above are worth doing once by hand. Repeating them for every question is the tedious part.&lt;/p&gt;

&lt;p&gt;(I build CostGuard, an Azure cost tool on Azure Marketplace with a Free plan, so weigh this accordingly.) Its &lt;strong&gt;Cost Explorer&lt;/strong&gt; page does this for the scope you pick: you choose service, resource group, resource, meter or subscription, and it lists every item with its cost, its share, its cost in the same number of days before and its change. Items with no cost before are marked "New", items billed only in the days before are named under the list, and cost without a resource group or a resource keeps a row of its own.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe9qvkkhlhz2grrdadjna.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe9qvkkhlhz2grrdadjna.webp" alt="The four figures of CostGuard's Cost Explorer list for the last 30 days of a sample workspace: the total with its number of items, the change against the 30 days before, the largest item with its share, and the number of new items." width="800" height="94"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It only reads cost: the connection uses the built-in Reader role, so it cannot change anything in your Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cost data arrives a day or two late, by hand or in any tool, so a range that ends today is not final.&lt;/li&gt;
&lt;li&gt;A comparison says &lt;em&gt;what&lt;/em&gt; moved, not &lt;em&gt;why&lt;/em&gt;. Someone still has to know that the new replica was planned.&lt;/li&gt;
&lt;li&gt;CostGuard holds no exchange rates: each currency is listed on its own and nothing is converted.&lt;/li&gt;
&lt;li&gt;Cost Explorer is on the Starter plan and up; the Free plan shows a labelled sample of the page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full walkthrough of the page: &lt;a href="https://hoshebartar.com/en/help/cost-explorer?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-cost-explorer" rel="noopener noreferrer"&gt;https://hoshebartar.com/en/help/cost-explorer?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-cost-explorer&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Which grouping do you reach for first when an Azure bill surprises you: service, resource group, resource or meter?&lt;/p&gt;

</description>
      <category>azure</category>
      <category>finops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>Is your Azure cost a spike, a step or just the week's rhythm? A day-of-week check you can do by hand</title>
      <dc:creator>HosheBartar</dc:creator>
      <pubDate>Sun, 08 Nov 2026 15:18:02 +0000</pubDate>
      <link>https://dev.to/hoshebartar/is-your-azure-cost-a-spike-a-step-or-just-the-weeks-rhythm-a-day-of-week-check-you-can-do-by-hand-4dhj</link>
      <guid>https://dev.to/hoshebartar/is-your-azure-cost-a-spike-a-step-or-just-the-weeks-rhythm-a-day-of-week-check-you-can-do-by-hand-4dhj</guid>
      <description>&lt;p&gt;The invoice says the month cost more. The daily chart in Cost analysis looks busy. Before anyone starts deleting resources, it helps to know which of three shapes you are looking at:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;A spike&lt;/strong&gt;: one tall day, then back to normal. Usually a batch job, a data load, a load test or a one-off purchase.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A step&lt;/strong&gt;: the line moves up and stays up. Usually new or larger infrastructure: a scaled-up SKU, a new environment, a replica nobody removed.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A rhythm&lt;/strong&gt;: a regular dip every few days. Usually resources that run on office hours, and the dips are the quiet days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;They need different responses, and you can tell them apart with a Cost analysis export and a spreadsheet in about fifteen minutes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 1: export daily cost for two periods
&lt;/h2&gt;

&lt;p&gt;In the Azure portal, open &lt;strong&gt;Cost Management &amp;gt; Cost analysis&lt;/strong&gt; on the subscription (or the billing scope you care about).&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Choose the &lt;strong&gt;Daily costs&lt;/strong&gt; view, or set granularity to &lt;strong&gt;Daily&lt;/strong&gt; in the accumulated view.&lt;/li&gt;
&lt;li&gt;Set the date range to the last 28 complete days. Azure publishes cost a day or two after it is incurred, so leave the most recent day or two out; they are not final.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download&lt;/strong&gt; the view as CSV.&lt;/li&gt;
&lt;li&gt;Repeat for the 28 days just before.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;28 days is deliberate: it holds every day of the week exactly four times, so no weekday is over-represented.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 2: overlay the two periods
&lt;/h2&gt;

&lt;p&gt;Put both periods side by side, day 1 next to day 1, and chart them as two lines &lt;strong&gt;on one axis that starts at zero&lt;/strong&gt;. An axis that starts at the lowest value makes a 5% wobble look like a cliff.&lt;/p&gt;

&lt;p&gt;Now read the shape:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One point far above both lines: a &lt;strong&gt;spike&lt;/strong&gt;. Find the date, then group that one day by &lt;em&gt;Service name&lt;/em&gt; or &lt;em&gt;Resource&lt;/em&gt; in Cost analysis to see what ran.&lt;/li&gt;
&lt;li&gt;The current line runs at the old level, then jumps and stays higher until the end: a &lt;strong&gt;step&lt;/strong&gt;. Note the first high day; the change was made then. Group the days after it by resource group or resource and compare them with the days before.&lt;/li&gt;
&lt;li&gt;Both lines go up and down together on the same weekdays: a &lt;strong&gt;rhythm&lt;/strong&gt;, and the next step measures it.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Step 3: average by day of the week
&lt;/h2&gt;

&lt;p&gt;Add a column with the weekday of each date (&lt;code&gt;=TEXT(A2,"dddd")&lt;/code&gt; in Excel or Google Sheets), then average the cost per weekday with a pivot table or &lt;code&gt;AVERAGEIF&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Two rules keep this honest:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Average only the days that have a cost record.&lt;/strong&gt; A missing day in the export is not a free day; Azure may not have delivered it yet. Count the days behind each average and show the count.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Compare averages, not totals&lt;/strong&gt;, when the two periods have a different number of recorded days.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;What the result tells you:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;clear gap between working days and the rest&lt;/strong&gt; usually comes from resources that run on office hours, or from workloads driven by your users' working week.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;flat week&lt;/strong&gt; comes from resources that run all the time. That is normal for production. If development and test resources are just as expensive on quiet days, they are candidates for an auto-shutdown schedule or for scaling down outside working hours.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Do not label any day a "weekend" in a shared sheet: which days are quiet depends on where your team and your customers are.&lt;/p&gt;

&lt;h2&gt;
  
  
  Step 4: month by month, by average day
&lt;/h2&gt;

&lt;p&gt;If your range crosses months, compare months by &lt;strong&gt;average cost per recorded day&lt;/strong&gt;, not by total. A month you only cover in part (say 12 days of 15) would otherwise look cheaper than it was.&lt;/p&gt;

&lt;h2&gt;
  
  
  Doing it on every refresh
&lt;/h2&gt;

&lt;p&gt;The steps above are worth doing once by hand, so you know what you are looking at. Repeating them every week is where it gets tedious.&lt;/p&gt;

&lt;p&gt;(I build CostGuard, an Azure cost tool on Azure Marketplace with a Free plan, so weigh this accordingly.) Its &lt;strong&gt;Cost trend&lt;/strong&gt; page does this for the scope you pick: the daily line laid over the period just before on an axis from zero, the daily average and its change, the highest, lowest and latest recorded day, the average by day of the week once the range covers 14 days, and a month-by-month table that marks partial months.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl9p8fi16gsdq3x1tm7b1.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fl9p8fi16gsdq3x1tm7b1.webp" alt="CostGuard's table by day of the week for a sample workspace: seven rows, each with its average cost, a bar and the number of days with cost, the working days clearly higher than the rest." width="662" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It only reads cost: the connection uses the built-in Reader role, so it cannot change anything in your Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Cost data arrives a day or two late, by hand or in any tool; the newest days can still change.&lt;/li&gt;
&lt;li&gt;The day-of-week average says &lt;em&gt;when&lt;/em&gt; cost is higher, not &lt;em&gt;why&lt;/em&gt;. You still group by service or resource to find the cause.&lt;/li&gt;
&lt;li&gt;CostGuard holds no exchange rates, so a scope billed in two currencies is read one currency at a time.&lt;/li&gt;
&lt;li&gt;Cost trend is on the Starter plan and up; the Free plan shows a labelled sample of the page.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full walkthrough of the page, figure by figure: &lt;a href="https://hoshebartar.com/en/help/cost-trend?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-cost-trend" rel="noopener noreferrer"&gt;https://hoshebartar.com/en/help/cost-trend?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-cost-trend&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do you read your daily Azure cost: a dashboard, a weekly export, or only when the invoice arrives?&lt;/p&gt;

</description>
      <category>azure</category>
      <category>finops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>Where is this month's Azure cost heading? A month-end estimate you can do by hand</title>
      <dc:creator>HosheBartar</dc:creator>
      <pubDate>Sun, 01 Nov 2026 17:34:20 +0000</pubDate>
      <link>https://dev.to/hoshebartar/where-is-this-months-azure-cost-heading-a-month-end-estimate-you-can-do-by-hand-35op</link>
      <guid>https://dev.to/hoshebartar/where-is-this-months-azure-cost-heading-a-month-end-estimate-you-can-do-by-hand-35op</guid>
      <description>&lt;p&gt;Halfway through the month, someone asks: "Where will we land?" The invoice will not tell you for weeks, and Cost Management's built-in forecast is a line on a chart that is hard to explain to a team. Here is a month-end estimate you can do by hand in a spreadsheet, explain in one sentence, and check against your budget. Then how we automated it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Get the recorded daily cost
&lt;/h2&gt;

&lt;p&gt;In the Azure portal, open &lt;strong&gt;Cost Management &amp;gt; Cost analysis&lt;/strong&gt; for the subscription, choose the &lt;strong&gt;Daily costs&lt;/strong&gt; view for the current month, and download it as CSV. You now have one row per day with its cost.&lt;/p&gt;

&lt;p&gt;Two things to know before you use it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost arrives a day or two late.&lt;/strong&gt; The last day or two in the file are usually incomplete. Find the latest day you trust; call it the &lt;em&gt;latest recorded day&lt;/em&gt;. Everything after it is "remaining".&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Keep one currency.&lt;/strong&gt; If your scope is billed in more than one currency, do the estimate per currency. Adding USD and EUR without a rate gives a number that means nothing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Average the latest seven days
&lt;/h2&gt;

&lt;p&gt;Take the latest seven days with recorded cost and average them. Seven days covers a full week, so weekend dips and weekday peaks cancel out. If the month has fewer than seven recorded days, average what you have.&lt;/p&gt;

&lt;p&gt;Example: the latest seven days cost 120, 118, 131, 125, 90, 88, 128. The average is 114.29 a day.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Add a trend once you have two weeks
&lt;/h2&gt;

&lt;p&gt;With 14 or more recorded days, compare the average of the latest seven days with the average of the seven before them. If the earlier week averaged 107.14, the daily cost rose by about 7.14 a week, or about 1.02 a day. Add that daily step to each day ahead: day one is 115.31, day two 116.33, and so on. Never let a day go below zero.&lt;/p&gt;

&lt;p&gt;Without a trend, a cost that is climbing steadily is underestimated every time.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Add up the month
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Recorded so far:&lt;/strong&gt; the sum of the recorded days this month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forecast for the remaining days:&lt;/strong&gt; the sum of your forecast days, from the day after the latest recorded day to the last day of the month.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Forecast to month end:&lt;/strong&gt; the two added together.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Then put two numbers next to it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Your monthly budget&lt;/strong&gt;, in the same currency: the forecast as a share of it, and how much over or under.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Last month's recorded cost&lt;/strong&gt; for the same subscriptions: the change as an amount and a percentage.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  5. Put a band around it, and say what it is
&lt;/h2&gt;

&lt;p&gt;Add 10% either side of each forecast day and sum again, with the recorded cost in front. That gives a low and a high month-end figure. Be clear with your team about what this is: not a probability, and not a confidence interval. It shows how far a 10% miss on every remaining day would move the month. Early in the month the band is wide, because most of the month is still forecast; near the end it is narrow.&lt;/p&gt;

&lt;h2&gt;
  
  
  The automated way
&lt;/h2&gt;

&lt;p&gt;(I build CostGuard, an Azure cost tool sold on Azure Marketplace.) Its Forecast overview page automates this on the Pro plan: the cost recorded so far plus a Baseline forecast for the remaining days, made from the latest seven days with a daily trend once fourteen days are recorded, refreshed about once an hour, held against the budget of the scope and against last month.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe3jf56qmekubpn5g8j2t.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fe3jf56qmekubpn5g8j2t.webp" alt="CostGuard's forecast figures for a sample workspace in US dollars: the forecast to month end with the number of subscriptions it covers, recorded so far, the forecast for the remaining days, the method's band, the budget with the forecast's share, and last month with the change." width="798" height="172"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;It also says which subscriptions the forecast covers and which it leaves out, and why, so "Covers 2 of 4 subscriptions in scope" is never hidden inside a total. The day-by-day table shows the recorded days first, then a forecast amount for each remaining day.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3awzf5uw8yewwskhxiq.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fg3awzf5uw8yewwskhxiq.webp" alt="CostGuard's day-by-day table of the month for a sample workspace: the recorded days with their bars, then a forecast day for each remaining day of the month." width="800" height="743"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;It is an estimate from recorded cost, not a bill. The invoice can differ.&lt;/li&gt;
&lt;li&gt;A seven-day average does not know about the batch job you plan for the 28th. A one-off spike in the last seven days also inflates it.&lt;/li&gt;
&lt;li&gt;The band is fixed at 10% by the method; it does not measure how likely the forecast is.&lt;/li&gt;
&lt;li&gt;Amounts in different currencies are never added or compared, and no exchange rate is applied.&lt;/li&gt;
&lt;li&gt;In CostGuard, forecasting is a Pro feature; each subscription needs an active Baseline forecast scenario before it is covered. CostGuard only reads your Azure cost; nothing in Azure is changed.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full walkthrough of the page, figure by figure:&lt;br&gt;
&lt;a href="https://hoshebartar.com/en/help/forecast-overview?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-forecast-overview" rel="noopener noreferrer"&gt;https://hoshebartar.com/en/help/forecast-overview?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-forecast-overview&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;How do you answer "where will we land this month": the portal forecast, a spreadsheet, or a gut feeling?&lt;/p&gt;

</description>
      <category>azure</category>
      <category>finops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>Which Azure budget needs action? A pace check you can do by hand</title>
      <dc:creator>HosheBartar</dc:creator>
      <pubDate>Sun, 25 Oct 2026 14:15:33 +0000</pubDate>
      <link>https://dev.to/hoshebartar/which-azure-budget-needs-action-a-pace-check-you-can-do-by-hand-1fhn</link>
      <guid>https://dev.to/hoshebartar/which-azure-budget-needs-action-a-pace-check-you-can-do-by-hand-1fhn</guid>
      <description>&lt;p&gt;Azure budget alerts tell you when a budget crosses a share of its amount: 50%, 80%, 100%. That is useful, but a 50% alert on day 25 of the month and a 50% alert on day 6 mean very different things. The second one is a problem; the first one is fine.&lt;/p&gt;

&lt;p&gt;Here is a simple pace check you can do by hand for any budget, and then how we automated it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. List your budgets and their scopes
&lt;/h2&gt;

&lt;p&gt;In the Azure portal, open &lt;strong&gt;Cost Management &amp;gt; Budgets&lt;/strong&gt;. A budget is set on a scope (a subscription, a resource group, a management group or a billing scope), has an amount and a reset period, and sends alerts on actual or forecasted cost at the thresholds you set. A budget never stops anything: it measures and notifies.&lt;/p&gt;

&lt;p&gt;Write down, for each budget: the scope, the amount, the period and the spend so far this period.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Compute two shares
&lt;/h2&gt;

&lt;p&gt;For each budget:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Share used&lt;/strong&gt; = spend so far / amount&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Share of the period elapsed&lt;/strong&gt; = days gone / days in the period&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Example: a monthly budget of 1,000, day 12 of 30, spend so far 550.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Share used: 55%&lt;/li&gt;
&lt;li&gt;Share of the period elapsed: 40%&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The budget is not over, and it may not even have fired its first alert yet if you set it at 80%. But it is spending faster than the calendar: at an even pace it would be at 400, not 550.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Grade them
&lt;/h2&gt;

&lt;p&gt;A grading that is easy to explain to a team:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Over&lt;/strong&gt;: 100% or more of the amount spent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;At risk&lt;/strong&gt;: 50% or more spent, but not all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;On track&lt;/strong&gt;: less than 50% spent.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Ahead of pace&lt;/strong&gt;: share used larger than share of the period elapsed, while the amount is not yet spent.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Sort the list with the worst first, and you know which budget to look at.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Keep the traps in mind
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Cost arrives late.&lt;/strong&gt; Azure cost data is usually a day or two behind, so "spend so far" is spend up to a day or two ago.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Currencies.&lt;/strong&gt; If your subscriptions are billed in different currencies, never add the amounts together without an exchange rate you trust.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Do not prorate the amount.&lt;/strong&gt; Compare the full amount with the spend so far; the pace check is a separate signal, not a forecast.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The automated way
&lt;/h2&gt;

&lt;p&gt;I build &lt;a href="https://hoshebartar.com" rel="noopener noreferrer"&gt;CostGuard&lt;/a&gt;, an Azure cost tool for small SaaS teams on Azure Marketplace, and its Budgets page does this check for every budget. (Disclosure: I build CostGuard, so take this part as the maker's description.)&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhcet05rv7chn06q6xym.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fmhcet05rv7chn06q6xym.webp" alt="CostGuard's Budgets list for a sample workspace: each budget with its scope, period, amount, the usage of this period and its grade." width="800" height="637"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Each budget covers the whole workspace, a subscription, a resource group or a service, per day, week, month, quarter or year (calendar periods in UTC).&lt;/li&gt;
&lt;li&gt;The &lt;strong&gt;This period&lt;/strong&gt; column shows the spend, a bar of the share used with a mark at the share of the period elapsed, what remains or by how much it is over, and the day of the period ("Day 12 of 30").&lt;/li&gt;
&lt;li&gt;Every budget is graded over, at risk or on track with the 50% and 100% rule above, and "Ahead of the period's pace" is shown when it applies. The list puts the most urgent first.&lt;/li&gt;
&lt;li&gt;When no figure can be stated (no cost import yet, cost only in another currency), the row says why instead of showing zero.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0shzte5bff9sfsgfrc5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fm0shzte5bff9sfsgfrc5.webp" alt="Three rows of the This period column: the spend, a bar of the share used with a mark at the share of the period elapsed, the share used and the day of the period." width="535" height="336"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;CostGuard only reads your Azure data with the Reader role; it never changes anything in Azure.&lt;/p&gt;

&lt;h2&gt;
  
  
  Honest limits
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Email alerts run against one budget only: the enabled monthly budget of the whole workspace. Every other budget shows its usage on the page and raises no alert.&lt;/li&gt;
&lt;li&gt;"Ahead of the period's pace" compares two shares; it is not a forecast.&lt;/li&gt;
&lt;li&gt;Each budget has one currency, and nothing is converted: cost in another currency is named, not added.&lt;/li&gt;
&lt;li&gt;Budgets are on the Starter plan and up (5 on Starter, 20 on Growth, unlimited on Pro). There is a Free plan on Azure Marketplace, where the page shows a labelled sample.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The whole page, section by section: &lt;a href="https://hoshebartar.com/en/help/budgets?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-budgets" rel="noopener noreferrer"&gt;Budgets: see which budget needs action&lt;/a&gt;&lt;/p&gt;

</description>
      <category>azure</category>
      <category>finops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
    <item>
      <title>How to see when your Azure Sponsorship credit will run out</title>
      <dc:creator>HosheBartar</dc:creator>
      <pubDate>Fri, 23 Oct 2026 00:20:46 +0000</pubDate>
      <link>https://dev.to/hoshebartar/how-to-see-when-your-azure-sponsorship-credit-will-run-out-3gif</link>
      <guid>https://dev.to/hoshebartar/how-to-see-when-your-azure-sponsorship-credit-will-run-out-3gif</guid>
      <description>&lt;p&gt;Azure Sponsorship credit doesn't end with a warning. It lasts until usage consumes the whole grant or until its end date, whichever comes first, and Azure doesn't publish the remaining balance to apps. If your startup runs on it, the useful question isn't "how much is left?" but "on what day does it run out at our current rate, and is that before the end date?"&lt;/p&gt;

&lt;p&gt;Here is how to answer that by hand, and how we automated it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Read the balance in the Sponsorships portal
&lt;/h2&gt;

&lt;p&gt;The Azure Sponsorships portal shows the balance, but only to a person who is signed in. There is no app access, so no tool (ours included) can read that number for you.&lt;/p&gt;

&lt;p&gt;Two things to keep in mind when you read it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It is a snapshot. It tells you what is left, not when it will be gone.&lt;/li&gt;
&lt;li&gt;Azure reports usage to apps about a day and a half late, so any estimate built from reported usage trails the portal slightly.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  2. Work out the run-out day yourself
&lt;/h2&gt;

&lt;p&gt;Three numbers are enough: the grant (its starting amount), the usage so far, and the number of days since the grant's first day.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;average per day = used / days since the first day
days left       = (grant - used) / average per day
run-out day     = today + days left
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then compare the run-out day with the grant's end date:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Before the end date:&lt;/strong&gt; you will start paying before the sponsorship ends. Time to look at what is growing.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;After the end date:&lt;/strong&gt; the grant will expire with credit unused. The unused amount is roughly the remaining credit minus the average per day for each day left until the end date.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A since-start average is simple and stable, but it reacts slowly: a cost jump last week moves the run-out day only a little. Redo the math regularly, and again after any new deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Decide when someone should look
&lt;/h2&gt;

&lt;p&gt;The moments that matter are 50%, 75% and 90% used, the day the run-out date moves before the end date, and 30 days before the end date if credit is still left. A spreadsheet and a calendar reminder will do, as long as someone owns them.&lt;/p&gt;

&lt;h2&gt;
  
  
  The automated way: CostGuard
&lt;/h2&gt;

&lt;p&gt;(I build CostGuard, an Azure cost tool for small SaaS teams, sold on Azure Marketplace.)&lt;/p&gt;

&lt;p&gt;Because the balance isn't available to apps, CostGuard estimates it. It reads the usage Azure reports for your connected Sponsored subscriptions from the grant's first day and prices it at the Sponsorship offer's rates. For each grant you track it shows:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;the estimated run-out day at the current rate, and whether that is before the end date&lt;/li&gt;
&lt;li&gt;estimated used and remaining, and the average use per day&lt;/li&gt;
&lt;li&gt;the unused amount expected at the end date, if any&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8e1gjephoe0eshfpfds5.webp" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8e1gjephoe0eshfpfds5.webp" alt="CostGuard's Azure credits outlook for a sample workspace: three tracked grants, one estimated to run out before its end date, one not estimated yet and one fully used." width="799" height="600"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Workspace owners and admins get one alert when a grant reaches 50, 75 or 90% estimated used, is estimated fully used, will run out before its end date at the current rate, or ends within 30 days with credit unused.&lt;/p&gt;

&lt;p&gt;Setup takes three steps: record the grant with its starting amount in USD and its end date, choose "Track usage" and enter the sponsorship's first day, then read the grant's outlook after the next check.&lt;/p&gt;

&lt;h3&gt;
  
  
  Honest limits
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;It is an estimate, not a balance read from Azure. Because of the reporting lag, the portal can show a little more usage.&lt;/li&gt;
&lt;li&gt;Usage that has no Sponsorship price isn't counted, so the estimate can run low.&lt;/li&gt;
&lt;li&gt;Only grants recorded in USD are estimated.&lt;/li&gt;
&lt;li&gt;It needs only the Reader role on each Sponsored subscription and never changes anything in Azure.&lt;/li&gt;
&lt;li&gt;Credit tracking is on the Growth plan and up.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The full walkthrough, with every field and state explained, is in the &lt;a href="https://hoshebartar.com/en/help/azure-credits?utm_source=devto&amp;amp;utm_medium=article&amp;amp;utm_campaign=kb-azure-credits" rel="noopener noreferrer"&gt;Azure credits help article&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>azure</category>
      <category>finops</category>
      <category>cloud</category>
      <category>saas</category>
    </item>
  </channel>
</rss>
