Requires chart version
5.8.2 (platform 4.129.1).Turn on cost alerts
Turn on the feature flag and give Thoras a Slack incoming webhook:thoras below), and reference it instead of setting
slackWebhookUrl:
helm upgrade your release. The worker checks the rules once at startup,
then hourly. Thoras uses the same webhook for its other Slack notifications,
such as errors when slackErrorsEnabled is on.
With thorasDashboard.read_only set, the Alerts tab lists the rules but
can’t create, change or delete them. The rules keep running.
Create an alert
Open Cost analysis -> Alerts and select New alert:- Name — shown in the table and in the Slack message.
- Threshold — in US dollars for estimated cost, or in your billing currency for billed cost.
- Cost source — Estimated or Billed. See
Cost sources. The choice appears only when the
billed_costdashboard extra is on; otherwise every rule uses estimated cost. Before chart5.13.0, the extra iscluster_daily_cost; see Deprecations. - Period — Daily, Weekly or Monthly. See When an alert is sent.
- Edit scope — the namespaces and workloads the rule covers. With no scope, an estimated rule covers all managed workloads, and a billed rule covers the whole cluster.
read-write mode, from platform
4.132.0.
Cost sources
The cost and usage report is usable once the worker has read it and found your
cluster’s pods in it, the same rule the Billed cost tab follows. Like the
graph, a scoped billed rule then counts only workloads that an AIScaleTarget
covers.
Scoped billed rules read the cost and usage report from chart version
5.14.0
(platform 4.133.0). Earlier versions always split the cluster’s bill for a
scope, which needs Cost Explorer collection.When an alert is sent
Periods are in UTC, and only completed days count:- Daily — a completed day.
- Weekly — Monday to Sunday, through yesterday.
- Monthly — the calendar month, through yesterday.
The Slack message
An alert posts a message titled Budget alert: <rule name> with:- The cost, the threshold and the overage, for example
$661.57,$500.00and$161.57 (32%). - Scope and Period, for example
Monthly · November 2026. - Cost through, when the cost covers only part of the period so far.
- A note on where the cost comes from:
- “Estimated from requests and node pricing”
- “Billed by your cloud provider, before commitments”
- “Billed by AWS: each pod’s share of its node’s cost, from your cost and usage report”
- “Not included: N days with no allocation data”, when a split bill has days it couldn’t split for the scope, or “Not included: N days the cost and usage report doesn’t cover”, when the report starts partway through the period or is missing days in it.
- “Incomplete pricing: …”, when some pods could not be priced. See Missing or Partial Pricing.
Rule status
The Status column shows the result of the rule’s last check. Hover over the icon next to it for details.
The Latest cost column shows the cost of the latest period the rule checked.
Troubleshooting
No Alerts tab —featureFlags.enableCostAlerts is off. Turn it on and
helm upgrade.
No Cost source choice — the billed_cost dashboard extra is off, so every
rule uses estimated cost. Turn on
Cost Explorer collection or the
cost and usage report, and the extra.
“Error: billed cost is not being collected; enable the cost and usage
collector or switch the rule to estimated cost” — the rule needs Cost Explorer
collection. Before chart 5.14.0, every billed rule does. From 5.14.0, a rule
with no scope does, and so does a rule with a scope until the cost and usage
report is usable. Turn on thorasWorker.enableCostAndUsageCollector, set up the
cost and usage report for a scoped rule on 5.14.0 or later, or switch the rule
to estimated cost.
“Error: no Slack webhook is configured” — set slackWebhookUrl, or
slackWebhookUrlSecretRefName and slackWebhookUrlSecretRefKey, as in
Turn on cost alerts.
“Error: posting to the Slack webhook: …” — Slack refused the message or
couldn’t be reached. Check that the webhook is still active, and that the worker
can reach hooks.slack.com if a network policy limits its egress.
“Error: the cost and usage report is not updating: …” — a scoped billed rule
reads the cost and usage report, but the worker hasn’t read it for two days, or
it has no cost stored for the cluster. The rule still alerts on the days the
report covers. Check the worker logs and the
cost and usage report troubleshooting.
“Error: estimated cost is incomplete: …” — some pods in the period could not
be priced, so the cost covers the priced pods only. See
Missing or Partial Pricing.
