- Critical bucket (9 files): substantive content updates basert på MCP-fetch - enterprise-governance: DSPM front door, AI-app-kategorier (3), single-tenant Entra ID - rag-cost-optimization, observability, ai-services-enterprise, multi-model-strategy: dato-bump - deterministic-cost: Copilot Credits offisiell common currency (2025-09-01), CCCU prepurchase - gpt5-gpt41-pricing: utvidet Copilot Studio modell-lineup (GPT-5.2, GPT-5.3, Claude 4.6, Grok 4.1) - vector-storage, request-batching: dato-bump (DS allerede dekkende) - High batch 1 (21 files, 10-30): Last updated 2026-04→2026-05 dato-bump Substantive Microsoft Learn-endringer var marginale per fetch — kosmetiske oppdateringer. Resterende: high batch 2 (filer 31-53, 23 filer) i ny sesjon. Se NEXT-SESSION-PROMPT.local.md.
648 lines
25 KiB
Markdown
648 lines
25 KiB
Markdown
# Endpoint Health Monitoring and Capacity Planning
|
||
|
||
**Last updated:** 2026-05
|
||
**Status:** GA
|
||
**Category:** Monitoring & Observability
|
||
|
||
---
|
||
|
||
## Introduksjon
|
||
|
||
Endpoint-overvåkning og kapasitetsplanlegging er kritisk for å opprettholde høy tilgjengelighet og forutsigbar ytelse i produksjons-AI-systemer. Azure OpenAI og andre Microsoft AI-tjenester tilbyr omfattende overvåkningsverktøy gjennom Azure Monitor, som samler inn både plattformmetrikkdata (automatisk) og ressurslogger (konfigureres via diagnostic settings).
|
||
|
||
Effektiv overvåkning involverer tre dimensjoner: **tilstandssjekk** (health monitoring) av endepunkt, **kapasitetsplanlegging** (quota og throughput-grenser), og **proaktiv alerting**. Sammen gir disse innsikt i både nåværende driftsstatus og fremtidige skaleringsmuligheter.
|
||
|
||
Utfordringen for arkitekter er å balansere kostnad (monitoreringsdata lagres i Log Analytics), ytelse (rate limits og throttling), og pålitelighet (SLA og tilgjengelighet). Azure OpenAI har ingen latens-SLA for Standard-tilbudet, men Provisioned Throughput Units (PTU) tilbyr forutsigbar ytelse for produksjonskritiske workloads.
|
||
|
||
## Kjernekomponenter
|
||
|
||
### Azure Monitor Platform Metrics
|
||
|
||
| Metrikk | Beskrivelse | Tidsromdetaljering | DS Export |
|
||
|---------|-------------|-------------------|-----------|
|
||
| `AzureOpenAIRequests` | Totalt antall API-kall over tid | PT1M (1 minutt) | Ja |
|
||
| `AzureOpenAIAvailabilityRate` | `(Total Calls - Server Errors) / Total Calls` (%) | PT1M | Nei |
|
||
| `TokensGenerated` | Completion tokens generert | PT1M | Ja |
|
||
| `ActiveTokens` | Totale tokens (prompt + completion) | PT1M | Ja |
|
||
| `PTUUtilization` | Prosentvis bruk av PTU-kapasitet | PT1M | Ja |
|
||
| `ProcessingTime` | End-to-end latency (ms) | PT1M | Ja |
|
||
|
||
**Viktig:** Platform metrics samles automatisk uten konfigurasjon, men for å analysere i Log Analytics må diagnostic settings aktiveres.
|
||
|
||
### Quota og Rate Limits
|
||
|
||
| Konsept | Forklaring | Enhet | Håndtering |
|
||
|---------|------------|-------|-----------|
|
||
| **Tokens Per Minute (TPM)** | Maksimal throughput per deployment | TPM | Settes ved deployment, kan justeres etterpå |
|
||
| **Requests Per Minute (RPM)** | Maks antall requests per minutt | RPM | Beregnes automatisk fra TPM (varierer per modell) |
|
||
| **Quota** | Regionbasert grense per modell/subscription | TPM | Forespørres via support |
|
||
| **429 Throttling** | HTTP-responskode når rate limit overstiges | - | Implementer retry-logic |
|
||
|
||
**RPM/TPM-ratio varierer per modell:**
|
||
|
||
| Modell | 1 Unit Capacity | RPM | TPM |
|
||
|--------|----------------|-----|-----|
|
||
| Eldre chat-modeller | 1 | 6 | 1,000 |
|
||
| o1, o1-preview | 1 | 1 | 6,000 |
|
||
| o3 | 1 | 1 | 1,000 |
|
||
| o3-mini, o1-mini | 1 | 1 | 10,000 |
|
||
|
||
**Viktig:** Deployment TPM kan IKKE overskride subscription quota for den modellen i den regionen.
|
||
|
||
### Diagnostic Settings og Log Analytics
|
||
|
||
```bash
|
||
# Konfigurer diagnostic settings via Azure Portal:
|
||
# Azure OpenAI resource → Monitoring → Diagnostic settings → Add diagnostic setting
|
||
|
||
# Velg:
|
||
# - Logs: AzureDiagnostics (alle operasjoner)
|
||
# - Metrics: AllMetrics (for historisk analyse)
|
||
# - Destination: Log Analytics workspace
|
||
```
|
||
|
||
**KQL-eksempel for tilstandssjekk:**
|
||
|
||
```kql
|
||
AzureDiagnostics
|
||
| where TimeGenerated > ago(1h)
|
||
| where Category == "RequestResponse"
|
||
| summarize
|
||
TotalRequests = count(),
|
||
SuccessRequests = countif(ResultSignature == "200"),
|
||
ServerErrors = countif(ResultSignature >= "500"),
|
||
ClientErrors = countif(ResultSignature >= "400" and ResultSignature < "500"),
|
||
AvgDurationMs = avg(DurationMs)
|
||
by bin(TimeGenerated, 5m)
|
||
| extend AvailabilityRate = round((SuccessRequests * 100.0) / TotalRequests, 2)
|
||
| project TimeGenerated, TotalRequests, AvailabilityRate, AvgDurationMs, ServerErrors
|
||
```
|
||
|
||
### Out-of-Box Dashboards
|
||
|
||
Azure OpenAI tilbyr to innebygde dashboards:
|
||
|
||
1. **Azure Portal Dashboard** (Overview-pane)
|
||
- HTTP Requests (total, status codes, feilrate)
|
||
- Tokens-Based Usage (prompt, completion, total tokens)
|
||
- PTU Utilization (kun for PTU-deployments)
|
||
- Fine-tuning metrics
|
||
|
||
2. **AI Foundry Metrics Dashboard**
|
||
- Tilgjengelig via "Go to AI Foundry portal" → Tools → Metrics dashboard
|
||
- Samme kategorier som Portal dashboard, med mer interaktivitet
|
||
|
||
**Anbefaling:** Start med disse dashboards, deretter bygg custom dashboards i Grafana eller Power BI for cross-service-korrelasjon.
|
||
|
||
## Arkitekturmønstre
|
||
|
||
### 1. Multi-Deployment Failover (High Availability)
|
||
|
||
**Scenario:** Produksjonsapplikasjon krever 99.9% tilgjengelighet.
|
||
|
||
**Mønster:**
|
||
- Opprett to deployments i forskjellige regioner (eks. East US + West Europe)
|
||
- Implementer application-side health checks (HTTP 200 status)
|
||
- Bruk Azure Front Door eller Traffic Manager for automatisk failover
|
||
- Overvåk begge endpoints med Azure Monitor metric alerts
|
||
|
||
**Fordeler:**
|
||
- Geografisk redundans
|
||
- Automatisk failover ved regional outage
|
||
- Lavere latens for distribuerte brukere
|
||
|
||
**Ulemper:**
|
||
- Dobbelt quota-behov (2x TPM)
|
||
- Økt kompleksitet i applikasjonskode
|
||
- Kostnad for to deployments
|
||
|
||
**KQL for cross-region health check:**
|
||
|
||
```kql
|
||
AzureDiagnostics
|
||
| where Resource in ("openai-eastus-01", "openai-westeu-01")
|
||
| where TimeGenerated > ago(15m)
|
||
| summarize
|
||
ErrorRate = countif(ResultSignature >= "500") * 100.0 / count(),
|
||
P95Latency = percentile(DurationMs, 95)
|
||
by Resource, bin(TimeGenerated, 1m)
|
||
| where ErrorRate > 1.0 or P95Latency > 2000 // Alert if >1% errors or >2s latency
|
||
```
|
||
|
||
### 2. Dynamic Quota (Preview)
|
||
|
||
**Scenario:** Varierende last med sporadiske traffic spikes.
|
||
|
||
**Mønster:**
|
||
- Aktiver Dynamic Quota på Standard-deployment
|
||
- Sett base TPM til gjennomsnittlig forventet last
|
||
- Dynamic Quota tillater opportunistic burst utover base TPM når kapasitet er tilgjengelig
|
||
|
||
**Fordeler:**
|
||
- Lavere 429-feilrate under spikes
|
||
- Ingen ekstra kostnad (betaler kun for faktisk bruk)
|
||
- Automatisk skalering uten konfigurasjon
|
||
|
||
**Ulemper:**
|
||
- Ikke garantert — avhenger av regional kapasitet
|
||
- Ingen latens-SLA (Standard offer)
|
||
- Kan IKKE redusere TPM under base-grensen
|
||
|
||
**Kode-aktivering (REST API):**
|
||
|
||
```bash
|
||
PUT https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.CognitiveServices/accounts/{accountName}/deployments/{deploymentName}?api-version=2023-05-01
|
||
|
||
{
|
||
"sku": {
|
||
"name": "Standard",
|
||
"capacity": 100 // Base TPM = 100K
|
||
},
|
||
"properties": {
|
||
"model": { "format": "OpenAI", "name": "gpt-4o", "version": "2024-11-20" },
|
||
"dynamicThrottlingEnabled": true // Enable dynamic quota
|
||
}
|
||
}
|
||
```
|
||
|
||
### 3. Provisioned Throughput (PTU) for Mission-Critical
|
||
|
||
**Scenario:** Offentlig sektor-applikasjon med strenge latens- og tilgjengelighetskrav.
|
||
|
||
**Mønster:**
|
||
- Bruk PTU i stedet for Standard (pay-as-you-go)
|
||
- PTU gir dedikert kapasitet med forutsigbar latens
|
||
- Overvåk `PTUUtilization`-metrikk for kapasitetsplanlegging
|
||
- Sett alert hvis utilization > 80% (signal om behov for oppgradering)
|
||
|
||
**Fordeler:**
|
||
- Latens-SLA (garantert ytelse)
|
||
- Ingen 429-throttling innenfor PTU-kapasitet
|
||
- Forutsigbar månedlig kostnad
|
||
|
||
**Ulemper:**
|
||
- Høyere kostnad sammenlignet med Standard
|
||
- Krever commitment (1 måned eller 1 år)
|
||
- Overprovisionering hvis last varierer mye
|
||
|
||
**Alert-regel for PTU-kapasitet:**
|
||
|
||
```kql
|
||
AzureMetrics
|
||
| where MetricName == "PTUUtilization"
|
||
| where TimeGenerated > ago(5m)
|
||
| summarize AvgUtilization = avg(Average) by Resource
|
||
| where AvgUtilization > 80
|
||
// Trigger alert: PTU nærmer seg kapasitetsgrense
|
||
```
|
||
|
||
## Beslutningsveiledning
|
||
|
||
### Valg av Deployment-type
|
||
|
||
| Kriterium | Standard (pay-as-you-go) | Standard + Dynamic Quota | PTU (Provisioned) |
|
||
|-----------|--------------------------|-------------------------|-------------------|
|
||
| **Kostnad** | Betaler per token | Samme (ingen ekstra kostnad) | Høyere (månedlig commitment) |
|
||
| **Latens-SLA** | Nei | Nei | Ja |
|
||
| **Burst-håndtering** | 429 ved TPM-grense | Opportunistic burst | Ingen throttling innenfor PTU |
|
||
| **Variabel last** | God for testing/dev | God for prod med spikes | Dårlig (sløser kapasitet) |
|
||
| **Compliance-krav** | OK | OK | Bedre (dedikert kapasitet) |
|
||
|
||
**Anbefaling for norsk offentlig sektor:**
|
||
- **Utvikling/test:** Standard
|
||
- **Produksjon (ikke-kritisk):** Standard + Dynamic Quota
|
||
- **Produksjon (kritisk, SLA-krav):** PTU
|
||
|
||
### Quota-planlegging
|
||
|
||
**Steg-for-steg:**
|
||
|
||
1. **Estimer baseline TPM:**
|
||
- Gjennomsnittlig requests/min × gjennomsnittlig tokens/request
|
||
- Eksempel: 10 req/min × 2000 tokens = 20,000 TPM baseline
|
||
|
||
2. **Legg til buffer for spikes:**
|
||
- Anbefalt: 1.5x - 2x baseline
|
||
- Eksempel: 20K TPM × 1.5 = 30K TPM
|
||
|
||
3. **Sjekk regional quota:**
|
||
```bash
|
||
az cognitiveservices usage list --location norwayeast
|
||
# Eller via Portal: Management → Quota
|
||
```
|
||
|
||
4. **Request quota increase hvis nødvendig:**
|
||
- Bruk [quota increase form](https://aka.ms/oai/stuquotarequest)
|
||
- Prioritet gis til kunder med aktiv bruk (ikke "just in case")
|
||
|
||
5. **Overvåk faktisk bruk:**
|
||
```kql
|
||
AzureDiagnostics
|
||
| where TimeGenerated > ago(7d)
|
||
| extend TokenCount = toint(properties_s.estimatedTokens)
|
||
| summarize TotalTokens = sum(TokenCount) by bin(TimeGenerated, 1h)
|
||
| extend TPM = TotalTokens / 60
|
||
| summarize AvgTPM = avg(TPM), P95TPM = percentile(TPM, 95)
|
||
```
|
||
|
||
### Vanlige feil
|
||
|
||
| Feil | Årsak | Løsning |
|
||
|------|-------|---------|
|
||
| **429 "Rate Limit Exceeded"** | TPM/RPM quota overskredet | Øk deployment TPM eller request quota increase |
|
||
| **429 "High demand"** | Regional kapasitet utilgjengelig | Retry med exponential backoff, eller bytt region |
|
||
| **Lav AvailabilityRate (<99%)** | Server errors (5xx) | Sjekk Azure Service Health, implementer retry-logic |
|
||
| **Høy latens (>5s)** | Standard offer under load | Vurder PTU, eller optimaliser prompts (reduser tokens) |
|
||
| **Deployment creation fails** | Quota tilgjengelig, men ingen kapasitet i region | Bruk capacity finder API, eller velg annen region |
|
||
|
||
### Røde flagg
|
||
|
||
- **Utilization > 80% over tid:** Signal om å øke quota/PTU
|
||
- **Error rate > 1%:** Indikerer ustabilitet eller kapasitetsproblem
|
||
- **Latens P95 > 2x P50:** Tyder på intermittent throttling eller regional load
|
||
- **Quota 100% allocated, men lav faktisk bruk:** Over-provisjonering — reduser deployments
|
||
|
||
## Integrasjon med Microsoft-stakken
|
||
|
||
### Azure Monitor Alerts
|
||
|
||
**Metric alert for availability:**
|
||
|
||
```bash
|
||
# Anbefalt CLI-syntaks (2026): Bruk condition sub-command for betingelser
|
||
scope=$(az cognitiveservices account show \
|
||
--resource-group "rg-ai-prod" --name "{account}" --output tsv --query id)
|
||
|
||
action=$(az monitor action-group show \
|
||
--resource-group "rg-ai-prod" --name "{actionGroup}" --output tsv --query id)
|
||
|
||
condition=$(az monitor metrics alert condition create \
|
||
--aggregation Average \
|
||
--metric "AzureOpenAIAvailabilityRate" \
|
||
--op LessThan \
|
||
--type static \
|
||
--threshold 99 \
|
||
--output tsv)
|
||
|
||
az monitor metrics alert create \
|
||
--name "OpenAI-LowAvailability" \
|
||
--resource-group "rg-ai-prod" \
|
||
--scopes $scope \
|
||
--condition $condition \
|
||
--action $action \
|
||
--window-size 5m \
|
||
--evaluation-frequency 1m \
|
||
--description "Alert hvis availability < 99% over 5 min"
|
||
```
|
||
*(Verified MCP 2026-04 — nytt mønster med `condition create` sub-command)*
|
||
|
||
**Log alert for 429 errors:**
|
||
|
||
```bash
|
||
az monitor scheduled-query create \
|
||
--name "OpenAI-Throttling" \
|
||
--resource-group "rg-ai-prod" \
|
||
--scopes "/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{account}" \
|
||
--condition "count > 10" \
|
||
--condition-query "AzureDiagnostics | where ResultSignature == '429' | count" \
|
||
--window-size 5m \
|
||
--evaluation-frequency 5m \
|
||
--action "/subscriptions/{sub}/resourceGroups/{rg}/providers/microsoft.insights/actionGroups/{actionGroup}"
|
||
```
|
||
|
||
**Oppdatert metric alert CLI-syntaks (2026):** Microsoft anbefaler nå sub-kommandoer for betingelser og dimensjoner: *(Verified MCP 2026-04)*
|
||
|
||
```bash
|
||
# Opprett betingelse som variabel
|
||
condition=$(az monitor metrics alert condition create \
|
||
--aggregation Average \
|
||
--metric "AzureOpenAIAvailabilityRate" \
|
||
--op LessThan \
|
||
--type static \
|
||
--threshold 99 \
|
||
--output tsv)
|
||
|
||
# Opprett metric alert med betingelse-variabel
|
||
az monitor metrics alert create \
|
||
--name "OpenAI-LowAvailability-v2" \
|
||
--resource-group "rg-ai-prod" \
|
||
--scopes "/subscriptions/{sub}/resourceGroups/{rg}/providers/Microsoft.CognitiveServices/accounts/{account}" \
|
||
--condition $condition \
|
||
--description "Alert hvis availability < 99% over 5 min" \
|
||
--window-size 5m \
|
||
--evaluation-frequency 1m \
|
||
--action "/subscriptions/{sub}/resourceGroups/{rg}/providers/microsoft.insights/actionGroups/{actionGroup}"
|
||
```
|
||
|
||
### Application Insights Integration
|
||
|
||
For applikasjoner som bruker Azure OpenAI, integrer Application Insights for end-to-end observability:
|
||
|
||
```python
|
||
from azure.monitor.opentelemetry import configure_azure_monitor
|
||
from openai import AzureOpenAI
|
||
|
||
# Konfigurer Application Insights
|
||
configure_azure_monitor(connection_string="InstrumentationKey=...")
|
||
|
||
# OpenAI-kall vil automatisk bli tracet
|
||
client = AzureOpenAI(
|
||
api_key="...",
|
||
api_version="2024-10-21",
|
||
azure_endpoint="https://..."
|
||
)
|
||
|
||
response = client.chat.completions.create(...)
|
||
# Latency, tokens, success/fail logges automatisk til App Insights
|
||
```
|
||
|
||
### Power BI og Grafana
|
||
|
||
**Power BI:**
|
||
- Koble til Log Analytics workspace
|
||
- Import KQL-queries som datasets
|
||
- Bygg executive dashboards med availability, cost, og usage trends
|
||
|
||
**Grafana:**
|
||
- Bruk Azure Monitor datasource plugin
|
||
- Visualiser real-time metrics (latency, throughput, error rate)
|
||
- Sett opp on-call alerting via PagerDuty/Slack
|
||
|
||
**Eksempel Grafana panel query (PromQL-style via Azure Monitor):**
|
||
|
||
```promql
|
||
avg_over_time(AzureOpenAIAvailabilityRate[5m])
|
||
```
|
||
|
||
### Azure Service Health
|
||
|
||
Overvåk planlagte vedlikehold og regional outages:
|
||
|
||
```bash
|
||
az monitor activity-log alert create \
|
||
--name "OpenAI-ServiceHealth" \
|
||
--resource-group "rg-ai-prod" \
|
||
--condition category=ServiceHealth \
|
||
--action-group "/subscriptions/{sub}/resourceGroups/{rg}/providers/microsoft.insights/actionGroups/{actionGroup}" \
|
||
--description "Alert for Azure OpenAI service health events"
|
||
```
|
||
|
||
## Offentlig sektor (Norge)
|
||
|
||
### GDPR og datasuverenitet
|
||
|
||
**Logging-retensjon:**
|
||
- Log Analytics data lagres i valgt region (Norway East anbefales)
|
||
- Sett retention policy i henhold til organisasjonens retningslinjer (default: 30 dager)
|
||
- For compliance, vurder eksport til Azure Storage (immutable blobs)
|
||
|
||
**Sensitive data i logs:**
|
||
- Azure OpenAI logger IKKE prompt/completion-innhold som standard
|
||
- Men diagnostic logs inneholder metadata (timestamps, model, token counts)
|
||
- Bruk Private Link for Azure Monitor hvis ekstra datasikkerhet kreves
|
||
|
||
### Forvaltningsloven og etterprøvbarhet
|
||
|
||
**Revisjonsspor:**
|
||
- Aktiver diagnostic settings for alle produksjons-deployments
|
||
- Eksporter logs til langtidslagring (Azure Storage Archive tier)
|
||
- Inkluder `CorrelationId` i requests for å spore beslutningsflyt
|
||
|
||
**KQL for audit trail:**
|
||
|
||
```kql
|
||
AzureDiagnostics
|
||
| where Category == "RequestResponse"
|
||
| extend UserId = tostring(properties_s.userId)
|
||
| extend ModelName = tostring(properties_s.modelName)
|
||
| extend TokensUsed = toint(properties_s.totalTokens)
|
||
| project TimeGenerated, UserId, ModelName, TokensUsed, OperationName, ResultSignature
|
||
| order by TimeGenerated desc
|
||
```
|
||
|
||
### AI Act og risikoklassifisering
|
||
|
||
**High-risk AI systems (offentlig forvaltning):**
|
||
- Krav om logging av alle AI-beslutninger
|
||
- Overvåkning av modell-drift (data distribution shifts)
|
||
- Azure Monitor gir grunnlag for compliance-rapporter
|
||
|
||
**Anbefalt arkitektur:**
|
||
- AI-request → Application Insights (full trace)
|
||
- Endpoint metrics → Azure Monitor (availability, latency)
|
||
- Audit logs → Log Analytics → Azure Storage (langtidsarkiv)
|
||
|
||
### Schrems II og data residency
|
||
|
||
**Norway East region:**
|
||
- Velg Norway East for både Azure OpenAI resource OG Log Analytics workspace
|
||
- Verifiser at diagnostic settings IKKE sender data til utenlandske regioner
|
||
- Azure OpenAI data processing skjer i EU (selv om kontrollplan er globalt)
|
||
|
||
## Kostnad og lisensiering
|
||
|
||
### Prismodell for overvåkning
|
||
|
||
| Komponent | Prismodell | Estimert kostnad (per måned) |
|
||
|-----------|-----------|------------------------------|
|
||
| **Platform metrics** | Gratis (innsamling) | 0 NOK |
|
||
| **Log Analytics ingestion** | Per GB innsamlet | ~50-200 NOK per GB |
|
||
| **Log Analytics retention** | Gratis (første 31 dager), deretter per GB | ~10 NOK per GB/måned (etter 31 dager) |
|
||
| **Alerts** | Per regel per måned | ~1-5 NOK per regel |
|
||
| **Application Insights** | Per GB innsamlet | ~50-200 NOK per GB |
|
||
|
||
**Kostnadsoptimalisering:**
|
||
- Bruk sampling i Application Insights (f.eks. 10% av requests)
|
||
- Sett opp data export til Azure Storage for langtidslagring (billigere enn Log Analytics retention)
|
||
- Bruk Azure Monitor Baseline Alerts (AMBA) templates i stedet for custom queries (mindre compute)
|
||
|
||
### Lisenskrav
|
||
|
||
**Azure Monitor:**
|
||
- Inkludert i Azure subscription (ingen separat lisens)
|
||
- Log Analytics workspace krever subscription med Owner/Contributor-rolle for oppsett
|
||
|
||
**Roller for quota-visning:**
|
||
- **Cognitive Services Usages Reader:** Minimal rolle for å se quota på tvers av subscription (anbefalt)
|
||
- **Reader:** Gir også quota-innsyn, men bredere tilgang enn nødvendig
|
||
- **Viktig:** Rollen MÅ være satt på subscription-nivå, ikke resource-nivå
|
||
|
||
**Eksempel Azure CLI:**
|
||
|
||
```bash
|
||
az role assignment create \
|
||
--assignee "user@example.com" \
|
||
--role "Cognitive Services Usages Reader" \
|
||
--scope "/subscriptions/{subscriptionId}"
|
||
```
|
||
|
||
## For arkitekten (Cosmo)
|
||
|
||
### Spørsmål å stille kunden
|
||
|
||
1. **Tilgjengelighetskrav:**
|
||
- Hva er akseptabel downtime per måned? (99.9% = ~43 min/måned)
|
||
- Finnes det kritiske tidsvinduer (f.eks. kontortid) med strengere SLA?
|
||
|
||
2. **Last-profil:**
|
||
- Gjennomsnittlig requests per minutt? Peak vs. gjennomsnitt?
|
||
- Forventes det sesongvariasjoner eller plutselige spikes?
|
||
|
||
3. **Latenskrav:**
|
||
- Hva er akseptabel end-to-end responstid? (P50, P95, P99)
|
||
- Er dette en batch-prosess eller interaktiv chat?
|
||
|
||
4. **Compliance:**
|
||
- Kreves revisjonsspor for alle AI-requests? (Forvaltningsloven)
|
||
- Data residency-krav? (Norge, EU, eller globalt OK?)
|
||
|
||
5. **Eksisterende overvåkning:**
|
||
- Brukes det allerede Log Analytics/Application Insights i organisasjonen?
|
||
- Finnes det SOC (Security Operations Center) som skal motta alerts?
|
||
|
||
6. **Budsjettrammer:**
|
||
- Hva er månedlig budsjett for AI-tjenester (inkl. monitoring)?
|
||
- Preferanse for pay-as-you-go vs. commitment (PTU)?
|
||
|
||
7. **Skaleringsplan:**
|
||
- Forventes brukervekst neste 6-12 måneder?
|
||
- Multi-region deployment planlagt?
|
||
|
||
8. **Feiltoleranse:**
|
||
- Kan applikasjonen håndtere retry-logic? (429-errors)
|
||
- Finnes det fallback-strategi hvis Azure OpenAI er nede?
|
||
|
||
### Fallgruver
|
||
|
||
1. **Over-provisjonering av quota:**
|
||
- Feil: Forespørre 500K TPM "for sikkerhets skyld" uten faktisk bruk
|
||
- Konsekvens: Azure kan avslå request, eller allokere quota som ikke brukes (sløsing)
|
||
- Løsning: Start med 1.5x estimert baseline, øk basert på faktisk bruk
|
||
|
||
2. **Glemmer diagnostic settings:**
|
||
- Feil: Forventer at logs samles automatisk
|
||
- Konsekvens: Ingen historikk ved troubleshooting/incidents
|
||
- Løsning: Aktiver diagnostic settings DAG 1 i produksjon
|
||
|
||
3. **Ingen alert-strategi:**
|
||
- Feil: Overvåker dashboards manuelt
|
||
- Konsekvens: Oppdager problemer først når brukere klager
|
||
- Løsning: Sett opp metric alerts for availability + log alerts for 429-errors
|
||
|
||
4. **Ignorerer PTU for kritiske workloads:**
|
||
- Feil: Bruker Standard offer for produksjonskritisk applikasjon
|
||
- Konsekvens: Variabel latens, ingen SLA, throttling under load
|
||
- Løsning: Vurder PTU hvis tilgjengelighet > 99.5% er påkrevd
|
||
|
||
5. **Cross-region failover uten testing:**
|
||
- Feil: Setter opp multi-region, men tester aldri failover
|
||
- Konsekvens: Oppdager bugs i failover-logikk under reell outage
|
||
- Løsning: Kjør chaos engineering (simuler regional failure månedlig)
|
||
|
||
6. **Misforstår Dynamic Quota:**
|
||
- Feil: Forventer garantert burst over base TPM
|
||
- Konsekvens: Fortsatt får 429-errors under spikes
|
||
- Løsning: Dynamic Quota er opportunistic, IKKE garantert — planer for base TPM som absolutt minimum
|
||
|
||
### Anbefalinger per modenhetsnivå
|
||
|
||
**Nivå 1: Pilot/POC**
|
||
- Bruk Standard deployment (pay-as-you-go)
|
||
- Aktiver IKKE diagnostic settings (spar kostnader)
|
||
- Manuell sjekk av Portal dashboard ukentlig
|
||
- Quota: Start med 10K TPM
|
||
|
||
**Nivå 2: Testing/Staging**
|
||
- Bruk Standard + Dynamic Quota
|
||
- Aktiver diagnostic settings (7 dagers retention)
|
||
- Sett opp 1-2 metric alerts (availability < 95%)
|
||
- Quota: 50-100K TPM basert på testvolum
|
||
|
||
**Nivå 3: Early Production**
|
||
- Bruk Standard + Dynamic Quota (eller PTU hvis SLA-krav)
|
||
- Diagnostic settings med 30 dagers retention
|
||
- Metric alerts (availability, latency) + log alerts (429-errors)
|
||
- Application Insights integration
|
||
- Quota: Baseline + 50% buffer
|
||
- Multi-region vurderes (men ikke obligatorisk ennå)
|
||
|
||
**Nivå 4: Mission-Critical Production**
|
||
- PTU deployment (dedikert kapasitet)
|
||
- Multi-region failover (minimum 2 regioner)
|
||
- Diagnostic settings med 90+ dagers retention (eller export til Storage)
|
||
- Full alert-suite (availability, latency, quota utilization, PTU saturation)
|
||
- Application Insights + custom dashboards (Grafana/Power BI)
|
||
- Quarterly capacity planning reviews
|
||
- Quota: Baseline + 100% buffer (eller PTU-sizing med 20% headroom)
|
||
|
||
**Spesielt for norsk offentlig sektor (nivå 4):**
|
||
- Log Analytics workspace i Norway East
|
||
- Export av logs til Azure Storage Archive (compliance)
|
||
- Azure Service Health alerts
|
||
- Inkluder CorrelationId i alle requests (revisjonsspor)
|
||
- Quarterly compliance reports til IT-sikkerhet/personvern
|
||
|
||
## Kilder og verifisering
|
||
|
||
### Microsoft Learn (Verified via MCP)
|
||
|
||
1. **Monitor Azure OpenAI:**
|
||
https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/monitor-openai
|
||
*Confidence: Verified* — Komplett guide til diagnostics, metrics, alerts, og KQL-queries
|
||
|
||
2. **Manage Azure OpenAI quota:**
|
||
https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/quota
|
||
*Confidence: Verified* — TPM/RPM-allokering, quota requests, 429-feilhåndtering
|
||
|
||
3. **Azure OpenAI quotas and limits:**
|
||
https://learn.microsoft.com/en-us/azure/ai-foundry/openai/quotas-limits
|
||
*Confidence: Verified* — Rate limits per modell, Usage tiers, regional constraints
|
||
|
||
4. **Dynamic quota (Preview):**
|
||
https://learn.microsoft.com/en-us/azure/ai-foundry/openai/how-to/dynamic-quota
|
||
*Confidence: Verified* — Opportunistic burst-kapasitet for Standard deployments
|
||
|
||
5. **Supported metrics for Microsoft.CognitiveServices/accounts:**
|
||
https://learn.microsoft.com/en-us/azure/azure-monitor/reference/supported-metrics/microsoft-cognitiveservices-accounts-metrics
|
||
*Confidence: Verified* — Fullstendig metrikk-referanse (Azure OpenAI, Content Safety, etc.)
|
||
|
||
6. **Azure Monitor REST API reference:**
|
||
https://learn.microsoft.com/en-us/rest/api/monitor/operation-groups
|
||
*Confidence: Verified* — API for metrics export og programmatic access
|
||
|
||
7. **Service limits in Azure AI Search:**
|
||
https://learn.microsoft.com/en-us/azure/search/search-limits-quotas-capacity
|
||
*Confidence: Verified* — Throttling patterns (relevant for RAG-arkitekturer)
|
||
|
||
8. **Monitor model quality and endpoint health (Databricks):**
|
||
https://learn.microsoft.com/en-us/azure/databricks/machine-learning/model-serving/monitor-diagnose-endpoints
|
||
*Confidence: Verified* — Verktøy: ephemeral service logs, OpenTelemetry for custom endpoints (Unity Catalog Delta tables, langtidsretensjon), build logs (30-dagers retensjon), endpoint health metrics (siste 14 dager), og AI Gateway-enabled inference tables (automatisk logging av requests/responses til Delta tables). *(Verified MCP 2026-04)*
|
||
|
||
### Code Samples (Verified via MCP)
|
||
|
||
9. **Azure Monitor Query Metrics (Python SDK):**
|
||
https://learn.microsoft.com/en-us/python/api/azure-monitor-querymetrics/azure.monitor.querymetrics.metricsclient
|
||
*Confidence: Verified* — Kodeeksempler for programmatisk metrics-query
|
||
|
||
10. **Azure CLI metrics alert creation:**
|
||
https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/azure-cli-metrics-alert-sample
|
||
*Confidence: Verified* — CLI-kommandoer for metric alerts (brukt i eksempler over)
|
||
|
||
### Seksjon-konfidensgradering
|
||
|
||
| Seksjon | Kilde | Konfidens |
|
||
|---------|-------|-----------|
|
||
| Kjernekomponenter | Microsoft Learn (MCP) | Verified |
|
||
| Quota og Rate Limits | Microsoft Learn (MCP) | Verified |
|
||
| Diagnostic Settings | Microsoft Learn (MCP) | Verified |
|
||
| Arkitekturmønstre (Failover) | Microsoft Learn + Baseline Knowledge | Verified (design), Baseline (best practices) |
|
||
| Dynamic Quota | Microsoft Learn (MCP) | Verified |
|
||
| PTU-mønster | Microsoft Learn + Baseline Knowledge | Verified (features), Baseline (trade-offs) |
|
||
| Azure Monitor Alerts | Microsoft Learn (MCP, code samples) | Verified |
|
||
| Application Insights | Baseline Knowledge + Azure Docs | Baseline |
|
||
| Offentlig sektor | Baseline Knowledge (GDPR, AI Act) | Baseline |
|
||
| Kostnadsmodell | Azure Pricing (public) | Baseline (tall er estimerte, krever priskalkulator for nøyaktighet) |
|
||
|
||
**Samlet konfidens:** 85% Verified (core features), 15% Baseline (best practices, offentlig sektor-spesifikt)
|
||
|
||
**Sist verifisert:** 2026-04 (MCP-searches mot Microsoft Learn)
|