When you're planning to onboard new hosts, you want a cost estimate before the spend shows up in your bill. This tutorial shows you how to derive an average GiB-hours-per-host figure from your existing fleet and use it to project the incremental cost at daily, monthly, and annual cadence.
All USD figures in this tutorial use the public list price of $1,000 per 100,000 GiB-hours (March 2026). Actual costs depend on your negotiated DPS contract. Use these queries for directional analysis and relative comparisons, not invoice reconciliation.
This tutorial is for FinOps practitioners, platform engineers, and anyone responsible for capacity planning who needs a quick cost estimate before a new deployment goes live.
In this tutorial, you'll learn how to:
dt.system.events table in at least one environment.dt.system.events.For simple cases (for example, you want to roughly double your current Full-Stack Monitoring footprint), Account Management may already give you enough to work with.
If you need a more precise estimate (for example, because the new hosts are a different size than your current fleet, or you need a number to put in a budget request), continue to the next step.
Replace 200 on the fieldsAdd new_hosts line with the number of hosts you plan to onboard.
fetch dt.system.events, from: -30d| filter event.kind == "BILLING_USAGE_EVENT"| filter event.type == "Full-Stack Monitoring"| dedup event.id| summarize total_gib_hours = sum(billed_gibibyte_hours), by: {dt.entity.host}| summarizecurrent_host_count = count(),avg_daily_gib_per_host = avg(total_gib_hours) / 30.0| fieldsAdd new_hosts = 200| fieldsAdd incremental_daily_gib_hours = new_hosts * avg_daily_gib_per_host| fieldsAdd incremental_daily_cost_usd = incremental_daily_gib_hours / 100000.0 * 1000| fieldsAdd incremental_monthly_cost_usd = incremental_daily_cost_usd * 30| fieldsAdd incremental_annual_cost_usd = incremental_daily_cost_usd * 365| fields current_host_count, avg_daily_gib_per_host, new_hosts,incremental_daily_gib_hours, incremental_daily_cost_usd,incremental_monthly_cost_usd, incremental_annual_cost_usd
The result is a single row: the first three fields describe your existing fleet, and the latter three are the incremental cost estimate.
Fleet baseline:
| current_host_count | avg_daily_gib_per_host | new_hosts |
|---|---|---|
1,240 | 1.61 | 200 |
Incremental cost estimate:
| incremental_daily_cost_usd | incremental_monthly_cost_usd | incremental_annual_cost_usd |
|---|---|---|
$3.22 | $96.50 | $1,174.30 |
incremental_annual_cost_usd is your planning number. Add it to your current Full-Stack Monitoring run rate (which you found in Calculate your daily burn rate) to get the combined projected annual cost.
avg_daily_gib_per_host is your fleet average. If the new hosts are a different profile (for example, large database servers instead of small app pods), the estimate will be off. In that case, add a tag filter before the first summarize to scope the average to hosts of the same type:
| filter dt.entity.host.tags contains "type:database"
| dedup event.id is mandatory in every billing query. Dynatrace refreshes metering records when correcting measurements. Without it, the same consumption period is counted multiple times and figures appear 10–30% higher than they are.
You now have a repeatable process for estimating the cost of new infrastructure before it lands in your bill. Specifically, you can: