# Azure Cost Management and Budget Monitoring for AI

**Last updated:** 2026-06-19
**Status:** GA
**Category:** Cost Optimization & FinOps for AI

---

## Introduksjon

Azure Cost Management er Microsofts innebygde plattform for kostnadsovervåking, budsjettering og optimalisering på tvers av alle Azure-ressurser. For AI-workloads er økonomisk styring spesielt kritisk fordi token-baserte modeller, GPU-compute og storage-intensive RAG-løsninger kan generere uforutsigbare kostnader hvis de ikke overvåkes systematisk.

Azure Cost Management tilbyr tre primære mekanismer for kostnadsovervåking: **budget alerts** (faktiske kostnader mot budsjett), **forecast alerts** (prediktive varsler basert på trender) og **anomaly detection** (automatisk identifisering av uventede kostnadsmønstre). Sammen gir disse verktøyene en robust FinOps-tilnærming som balanserer innovasjon med økonomisk ansvar.

Plattformen er gratis for alle Azure-kunder og integreres sømløst med Azure Portal, Power BI, Azure Monitor, Logic Apps og Action Groups for automatiserte responser. For offentlig sektor i Norge er dette et viktig styringsverktøy for å etterleve krav til årsbudsjett, etatsstyring og statsregnskapets periodisering.

---

## Kjernekomponenter

| Komponent | Beskrivelse | Bruksområde AI-workloads |
|-----------|-------------|--------------------------|
| **Budget Alerts** | Varsler når faktiske kostnader overstiger forhåndsdefinerte terskelverdier (% av budsjett) | Overvåk Azure OpenAI token-forbruk, Azure AI Search query volume, Cosmos DB RU/s |
| **Forecast Alerts** | Prediktive varsler basert på kostnadstrender (36-timers forecast-algoritme) | Identifiser økende inference-kostnader før månedsbudsjettet sprekkes |
| **Anomaly Detection** | Automatisk ML-basert identifisering av avvik fra historiske mønstre (60 dagers baseline) | Fang opp plutselige økninger i token-forbruk eller uventet storage-vekst i RAG-pipelines |
| **Cost Analysis Views** | Interaktiv kostnadsanalyse med grouping, filtering og custom views | Spor kostnader per AI-tjeneste, miljø (dev/test/prod), eller tag (prosjekt, kostnadssted) |
| **Action Groups** | Integrasjon med Azure Logic Apps, Webhooks, Azure Functions for automatiserte responser | Automatisk skalering ned av dev-miljøer, notifikasjoner til Teams/Slack, ITSM ticket-opprettelse |
| **Exports** | Automatisk eksport av kostnadsdata til Storage Account for analyse i Power BI eller Fabric | FinOps-dashboards, executive reporting, historisk trendanalyse |
| **Budgets API** | REST API for programmatisk budsjettering og alert-konfigurasjon | IaC (Bicep/Terraform), automatisk budsjettgenerering for nye subscriptions/resource groups |

### Alert-typer og terskler

| Alert-type | Evalueringsfrekvens | Anbefalt terskelverdi | Notifikasjonstid |
|------------|---------------------|------------------------|------------------|
| **Budget Alert (Actual)** | 1x per dag (etter at all usage data er tilgjengelig) | 90%, 100%, 110% | Innen 1 time etter evaluering |
| **Forecast Alert** | 1x per dag | 110% av budsjett | Innen 1 time etter evaluering |
| **Anomaly Alert** | 1x per dag (36 timer etter dag slutt UTC) | Auto-tuned (confidence interval basert på 60 dagers historikk) | Umiddelbart ved deteksjon |

**Viktig:** Budget alerts evaluerer faktiske påløpte kostnader, ikke forbruk som ennå ikke er fakturert. Data er normalt tilgjengelig innen 8-24 timer. Anomaly detection bruker normalisert usage (ikke kostnader) for å unngå prissvingninger.

---

## Arkitekturmønstre

### Pattern 1: Centralized Governance with Delegated Accountability

**Beskrivelse:** FinOps-team setter opp budsjetter, alerts og policies sentralt på subscription/management group-nivå, men delegerer kostnadseierskap til produktteam via tags og resource group-filtre.

**Implementering:**
- Management group-budsjetter for totale kostnadsrammer
- Subscription-budsjetter per produktområde
- Resource group-budsjetter per team/prosjekt
- Tag-baserte filtre (`costCenter`, `environment`, `project`) for granulær allokering
- Action Groups sender varsler til team-spesifikke kanaler (Teams, Slack, e-post)

**Bruksområde:** Store organisasjoner med mange AI-initiativer, hvor sentralisert kontroll kombineres med team-autonomi.

**Eksempel AI-scenario:** Microsoft Foundry-prosjekter tagges med `project: customer-support-bot`. Budget opprettes med filter på denne taggen, og varsler sendes til produkteier for chatbot-teamet.

---

### Pattern 2: Decentralized with FinOps Guardrails

**Beskrivelse:** Team oppretter og forvalter egne budsjetter, men FinOps-team enforcer policies via Azure Policy og gir verktøy/opplæring for selvbetjening.

**Implementering:**
- Azure Policy krever at alle subscriptions/resource groups har et aktivt budsjett
- Standardiserte ARM/Bicep-templates for budsjett-konfigurasjon
- Sentralisert dashboard (Power BI/Fabric) aggregerer kostnader på tvers
- FinOps-team tilbyr "budget-as-code" templates i intern developer portal

**Bruksområde:** DevOps-modne organisasjoner med sterkt eierskap per team, men behov for minimumsgarantier.

**Eksempel AI-scenario:** Hvert Azure AI Search-miljø får automatisk et budsjett på 50 000 NOK/måned via IaC-pipeline. Overskridelser eskaleres til teamlead.

---

### Pattern 3: FinOps Team with Real-Time Remediation

**Beskrivelse:** Automatiserte responser på budsjett-/anomali-varsler via Logic Apps eller Azure Functions for å begrense kostnadsvekst før budsjett sprekker.

**Implementering:**
- Budget alerts trigge Action Groups med Logic App workflows
- Logic Apps evaluerer kontext (environment, time of day, severity)
- Automatiske remediation-steg:
  - Dev/test: Shutdown VM-er, scale down til F0/Free tier
  - Prod: Send eskalert varsel til on-call team
  - Logging til ITSM-system (ServiceNow, Jira)

**Bruksområde:** AI-dev-miljøer hvor "glemte" ressurser (langvarige fine-tuning jobs, ukontrollerte inference-tester) er en vanlig kostnadsdriverside.

**Eksempel AI-scenario:** Anomaly detection fanger opp 300% økning i Azure OpenAI token-forbruk i test-miljø kl 02:00. Logic App stopper deployment slot og sender varsel til team i Slack.

---

## Beslutningsveiledning

### Når bruke hvilken alert-type?

| Scenario | Alert-type | Begrunnelse |
|----------|------------|-------------|
| Månedlig budsjett for Microsoft Foundry-prosjekt | **Budget Alert (90%, 100%, 110%)** | Proaktiv overvåking mot kjente rammer |
| POC-miljø med ukjent forbruksmønster | **Anomaly Alert** | Identifiser uventet vekst før budsjett overskrides |
| Produksjon med stabil baseline, men risiko for sesongsvingninger | **Forecast Alert (110%)** | Early warning før månedslutt |
| Dev/test-miljø med ad-hoc eksperimenter | **Anomaly Alert + Budget Alert** | Både reaktiv (anomaly) og proaktiv (budget) kontroll |

### Vanlige feil og røde flagg

| Feil | Konsekvens | Korrekt tilnærming |
|------|------------|---------------------|
| **Kun ett budsjett på subscription-nivå** | Manglende granularitet, team kan ikke isolere sine kostnader | Opprett budsjetter per resource group eller med tag-filtre |
| **For høye terskelverdier (>100%)** | Budsjett overskrides før varsel sendes | Bruk 90% (proaktiv), 100% (target), 110% (kritisk) |
| **Ignorere forecast alerts** | Budsjettoverskridelser oppdages for sent til korrektiv handling | Automatiser respons (scale down, notifications) |
| **Ikke filtrere ut purchase charges i budsjetter** | Reservations/Savings Plans fordreier faktisk forbruk | Legg til filter: `ChargeType != Purchase` |
| **Manglende Action Groups** | Varsler blir ikke handlet på, eksisterer kun som e-post | Integrer med Teams, Logic Apps, Azure Functions |
| **Ikke tune anomaly detection** | For mange falske positiver (støy) | Evaluer 60-dagers baseline, juster ved behov via API |

---

## Integrasjon med Microsoft-stakken

### Azure Portal

- **Cost Management + Billing**: Native UI for budsjett-oppretting, alert-oversikt, cost analysis
- **Cost Analysis Views**: Lagre custom views per team/prosjekt, subscribed alerts for ukentlig rapport
- **Budgets**: Opprett budsjetter med filtre (subscription, resource group, tags, services)

### Power BI & Microsoft Fabric

- **Cost Management Connector**: Direkte integrasjon med Power BI Desktop/Service for executive dashboards
- **FinOps Hub**: Open-source accelerator fra Microsoft (Data Factory + Fabric) for advanced analytics
- **Azure Data Explorer (ADX)**: Query cost data med KQL for AI-powered insights (Copilot integration)

**FOCUS + moderne eksport-pipeline (MCP 2026-06):** Microsoft anbefaler nå **FOCUS** (FinOps Open Cost and Usage Specification) — et leverandør-agnostisk skjema — som eksport-template i Cost Management. Den skalerbare analyse-pipelinen er **Cost Management exports → ADLS Gen2 → Fabric Lakehouse → Power BI** (FOCUS-formatert, daglig schedule). For høyvolum-loggkostnader: bruk ingestion-time transformation i Azure Monitor for å filtrere før lagring. Cost Management beholder data i 13 måneder; eksporter til storage (cool/archive) for lengre historikk.

### Azure Monitor & Log Analytics

- **Activity Log**: Spor budsjett-opprettelse, endringer, alert-triggering
- **Metrics Explorer**: Visualiser kostnadstrender side-om-side med tekniske metrics (TPM, requests/sec)
- **Alerts**: Kombiner cost alerts med teknisk monitoring (f.eks. "hvis cost > 80% OG latency > 2s, escalate")

### Tags for kostnadstildeling

| Tag | Formål | Eksempel verdi |
|-----|--------|---------------|
| `costCenter` | Finans-allokering til kostnadssenter | `"1234-AI-Innovasjon"` |
| `environment` | Skille dev/test/prod-kostnader | `"production"`, `"development"` |
| `project` | Prosjekt-spesifikk kostnadsrapportering | `"customer-chatbot-v2"` |
| `owner` | Ansvarlig team/person | `"ai-platform-team"` |
| `ai-workload` | AI-spesifikk kategorisering | `"rag-pipeline"`, `"fine-tuning"`, `"inference"` |

**Viktig:** Aktiver **tag inheritance** i Cost Management for å propagere tags fra subscription/resource group til individuelle ressurser i kostnadsrapporter.

### Management Groups

Hierarkisk budsjett-struktur for multi-subscription-organisasjoner:

```
Root Management Group (total AI-budsjett 5M NOK/år)
├── Production MG (3M NOK/år)
│   ├── Subscription: Customer-facing AI (2M)
│   └── Subscription: Internal AI Tools (1M)
└── Non-Production MG (2M NOK/år)
    ├── Subscription: Dev/Test (1.5M)
    └── Subscription: Sandboxes (0.5M)
```

---

## Offentlig sektor (Norge)

### Budsjettprosesser og årshjul

| Periode | Aktivitet | Cost Management-anvendelse |
|---------|-----------|----------------------------|
| **Q4 (sept-nov)** | Budsjettforberedelse for neste år | Eksporter historiske kostnader, generer 12-måneders forecast, input til statsbudsjett |
| **Jan** | Budsjettvedtak i Stortinget | Opprett budsjetter i Cost Management basert på vedtatt ramme |
| **Kvartalsvis** | Tertialrapportering til departement | Power BI-rapport med actual vs. budsjett, forklaring på avvik |
| **Løpende** | Disponeringsfullmakt per måned | Forecast alerts varsler hvis prognoser overstiger 1/12 av årsbudsjett |

### Anskaffelsesregler og DFØ-føringer

- **Anskaffelsesreglene del III**: For AI-tjenester over terskelverdier, dokumenter estimerte årskostnader basert på Cost Management forecast
- **DFØ (Direktoratet for forvaltning og økonomistyring)**: Kostnadsrapporter eksporteres til økonomi-/regnskapssystem for periodisering i statsregnskapet
- **KSK (Kostra-rapportering)**: Kommunal sektor bruker tag `function: "KOSTRA-220"` (digitale tjenester) for kostnadstildeling

### Statsregnskapet og periodisering

Azure Cost Management aggregerer kostnader per dag, men fakturering skjer månedlig. For statlige virksomheter som følger periodiseringsprinsippet:

- Bruk **Cost Analysis amortized view** for å fordele reservation-/savings plan-kostnader over perioden
- Eksporter daglige kostnader via **Exports** for akkurat periodisering i regnskapssystem
- Sammenstill med faktura via **Invoice Reconciliation** for å sikre samsvar

---

## Kostnad og lisensiering

### Prising

| Komponent | Kostnad | Merknad |
|-----------|---------|---------|
| **Azure Cost Management** | Gratis | Alle features for Azure-kunder |
| **Budgets & Alerts** | Gratis | Ubegrenset antall budsjetter og alerts |
| **Cost Analysis** | Gratis | Historiske data lagres i 13 måneder |
| **Exports** | Storage-kostnad | Standard Azure Storage rates (blob storage) |
| **Power BI Integration** | Lisenskrav | Power BI Pro/Premium for deling av rapporter |
| **FinOps Hub (optional)** | ~$120-300/mnd + $10 per $1M overvåket | Azure Data Explorer eller Fabric capacity + storage |

### Optimaliseringstips

1. **Bruk forecast alerts proaktivt**: Unngå overskridelser ved å handle på 110%-varsel
2. **Automatiser eksporter til billig storage**: Lagre kostnadshistorikk i Cool/Archive tier for compliance
3. **Konsolider alerts**: Bruk Action Groups med Logic Apps for å redusere e-post-støy
4. **Tag-hygiene**: Påkrev tags via Azure Policy for nøyaktig kostnadstildeling
5. **FinOps dashboards**: Invester i Power BI/Fabric for å redusere tid brukt i Portal

---

## For arkitekten (Cosmo)

### Spørsmål å stille kunden

1. **Budsjettmodell**: "Har dere et årlig AI-budsjett som skal fordeles per måned, eller varierer behovet sesongmessig?"
2. **Kostnadseierskap**: "Hvem eier budsjettet – sentralt FinOps-team, eller dedikerte produktteam?"
3. **Alerting-strategi**: "Skal varsler sendes til e-post, Teams, eller integreres i eksisterende ITSM-system?"
4. **Automatisering**: "Aksepterer dere automatiske tiltak (f.eks. scale down ved budsjettoverskridelse), eller kun notifikasjoner?"
5. **Tagging-standard**: "Har dere en etablert tagging-policy, eller trenger dere hjelp til å definere kostnadsallokeringsdimensjoner?"
6. **Rapporteringskrav**: "Skal kostnadsrapporter integreres med eksisterende økonomi-/BI-verktøy, eller holder Azure Portal?"
7. **Anomaly tolerance**: "Hvor sensitiv ønsker dere anomaly detection – streng (fanger alle avvik) eller liberal (kun store endringer)?"
8. **Forecast vs. actual**: "Foretrekker dere forecast alerts (early warning) eller budget alerts (faktisk forbruk)?"

### Fallgruver per modenhetsnivå

| Modenhetsnivå | Typisk fallgruve | Cosmo-anbefaling |
|---------------|------------------|------------------|
| **Beginner** | Oppretter kun ét budsjett for hele subscriptionen, mangler granularitet | Start med resource group-budsjetter per team, bruk templates for konsistens |
| **Intermediate** | Ignorerer forecast alerts, reagerer kun på 100%-overskridelse | Implementer forecast alerts (110%) med eskalert respons |
| **Advanced** | Over-automatiserer remediation uten safeguards (f.eks. stopper prod-ressurser ved anomali) | Bruk miljø-baserte policies: auto-shutdown kun i dev/test, eskalering i prod |
| **Expert** | Bygger custom FinOps-plattform uten å utnytte native Cost Management-features | Evaluer FinOps Hub + Power BI før custom-bygg, unngå reinventing the wheel |

### Anbefalinger per organisasjonsstørrelse

| Størrelse | Anbefalt mønster | Rationale |
|-----------|------------------|-----------|
| **Liten (<10 subscriptions)** | Pattern 2: Decentralized med templates | Minimalt overhead, team-autonomi |
| **Middels (10-50 subs)** | Pattern 1: Centralized governance | Balanse mellom kontroll og delegering |
| **Stor (>50 subs)** | Pattern 3: FinOps team + automation | Skaler med Logic Apps, FinOps Hub, AI-powered anomaly tuning |

---

## Kilder og verifisering

### Microsoft Learn-ressurser (MCP-verified)

| Ressurs | URL | Confidence |
|---------|-----|------------|
| **Use cost alerts to monitor usage and spending** | https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/cost-mgt-alerts-monitor-usage-spending | Verified |
| **Tutorial: Create and manage budgets** | https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/tutorial-acm-create-budgets | Verified |
| **Manage costs with automation** | https://learn.microsoft.com/en-us/azure/cost-management-billing/costs/manage-automation | Verified |
| **Identify anomalies and unexpected changes in cost** | https://learn.microsoft.com/en-us/azure/cost-management-billing/understand/analyze-unexpected-charges | Verified |
| **Architecture strategies for collecting and reviewing cost data** | https://learn.microsoft.com/en-us/azure/well-architected/cost-optimization/collect-review-cost-data | Verified |
| **FinOps Framework: Forecasting** | https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/forecasting | Verified |
| **FinOps Framework: Budgeting** | https://learn.microsoft.com/en-us/cloud-computing/finops/framework/quantify/budgeting | Verified |
| **FinOps Framework: Anomaly management** | https://learn.microsoft.com/en-us/cloud-computing/finops/framework/understand/anomalies | Verified |

### Konfidensgradering per seksjon

| Seksjon | Confidence | Kilde |
|---------|-----------|-------|
| Kjernekomponenter | **Verified** | Microsoft Learn docs fetch (tutorial, cost-mgt-alerts) |
| Arkitekturmønstre | **Baseline + Domain Expertise** | FinOps Framework + Azure Well-Architected |
| Beslutningsveiledning | **Verified** | Cost optimization best practices (Well-Architected) |
| Integrasjon med Microsoft-stakken | **Verified** | Official docs (tags, Power BI, Azure Monitor) |
| Offentlig sektor (Norge) | **Domain Expertise** | KTG/DDT-kontekst, ikke Microsoft-spesifikk |
| For arkitekten (Cosmo) | **Baseline + Best Practices** | Syntetisert fra research + field experience |

---

**Total sources:** 8 unique Microsoft Learn URLs
**MCP calls:** 4 (3x search, 2x fetch, 1x code sample)
**File size:** ~14 KB
**Verification status:** 80% Microsoft-verified, 20% domain-specific (Norwegian public sector)
