# Alerting Strategies and Escalation Policies for AI Incidents

**Last updated:** 2026-05
**Status:** GA
**Category:** Monitoring & Observability

---

## Introduksjon

Effektive alerting-strategier og eskaleringsrutiner er kritiske for å sikre rask respons på AI-relaterte hendelser. I motsetning til tradisjonelle applikasjoner introduserer AI-systemer unike utfordringer: modeller kan degradere over tid (drift), prompt injection-angrep kan oppstå plutselig, og token-kostnader kan eksplodere uten varsel. En robust alerting-arkitektur må derfor kombinere reaktive varsler (noe gikk galt) med proaktive varsler (noe er i ferd med å gå galt).

Azure Monitor gir et omfattende rammeverk for alerting gjennom action groups, alert processing rules, og integrasjon med Azure Automation, Logic Apps, og ITSM-systemer. For AI-løsninger må denne infrastrukturen konfigureres med forståelse av både business impact og teknisk kompleksitet — en kritisk alert kan være en modell som returnerer bias-innhold, eller en Azure OpenAI-deployment som nærmer seg rate limit.

Eskaleringsrutiner må reflektere organisasjonens modenhetsnivå. En Minimum Viable Product (MVP)-løsning kan starte med e-postvarsler til et lite team, mens en produksjonsløsning for offentlig sektor krever Multi-tier escalation med clear ownership, automated incident response, og compliance logging for AI Act Article 72 (incident reporting).

---

## Kjernekomponenter

### Azure Monitor Alert Architecture

| Komponent | Beskrivelse | AI-relevans |
|-----------|-------------|-------------|
| **Alert Rules** | Definerer betingelser som trigger alerts (metrics, logs, activity log) | Token rate limits, model latency, failed requests |
| **Action Groups** | Samling av notifications og actions som kjøres når alert fires | Email, SMS, webhook, runbook, Logic App |
| **Alert Processing Rules** | Overstyr eller berik alert-oppførsel (suppression, tillegg av action groups, scheduling). Filtre støtter opptil 5 verdier per filter (logisk OR). Suppression har høyere prioritet enn Apply action groups. | Prevent alert fatigue under model redeployments; recurring maintenance windows *(Verified MCP 2026-04)* |
| **Common Alert Schema** | Uniform JSON payload på tvers av alle alert-typer | Forenkler webhook-integrasjoner og ITSM-connectors |
| **Severity Levels** | Sev 0 (Critical) til Sev 4 (Informational) | Map til business impact (Sev 0 = PII leak, Sev 4 = latency spike) |

### Notification Channels

| Channel | Bruksområde | Rate Limits | Global Resilience |
|---------|-------------|-------------|-------------------|
| **Email** | Standard notification (opptil 1000 mottakere per action group) | Best practices: Ikke send til personlige adresser, bruk distribution lists | ✅ Yes |
| **SMS** | Kritiske alerts (begrensede land) | 1 SMS per 5 min per nummer | ✅ Yes |
| **Voice Call** | Sev 0 incidents (natt/helg) | 1 call per 5 min per nummer | ✅ Yes |
| **Webhook** | Integration med eksterne systemer (PagerDuty, Slack) | Retry: 5 retries med 5-40s delay | ❌ Endpoint-dependent |
| **Azure App Push** | Mobile notifications til Azure-appen | Begrenset til Azure mobile app | ✅ Yes |
| **Event Hub** | Stream alerts til analytics/SIEM | Supports Private Link og NSP | ✅ Yes (regional) |

**Reusability:** Du kan legge til opptil 5 action groups per alert rule. Action groups kjøres concurrent (ingen bestemt rekkefølge). Multiple alert rules kan bruke samme action group. *(Verified MCP 2026-04)*

**Rate Limiting:** Azure Monitor rate-limiter notifications for å hindre spam. Hvis samme email/SMS/telefonnummer mottar for mange alerts, suspenderes notifications midlertidig. For AI-systemer som kan generere høy alert-volum (f.eks. per-request failures), bruk programmatic actions (Logic Apps, Automation Runbooks) i stedet.

### Action Types for AI Incidents

```json
{
  "actionType": "AutomationRunbook",
  "runbookName": "ScaleDownOpenAI",
  "webhookResourceId": "/subscriptions/.../runbooktest/webhooks/Alert...",
  "useCommonAlertSchema": true,
  "isGlobalRunbook": false
}
```

| Action Type | AI Use Case | Authentication | Managed Identity | Cross-tenant Support |
|-------------|-------------|----------------|-----------------|---------------------|
| **Automation Runbook** | Auto-scale Azure OpenAI TPM, restart failing deployments | Managed Identity (Automation Contributor, Role ID: f353d9bd) | ✅ Yes | ❌ No |
| **Logic App** | Enrich alert med model metadata, post til Teams/Slack | Managed Identity (Logic App Contributor, Role ID: 87a39d53) | ✅ Yes | ❌ No |
| **Azure Function** | Custom logic (e.g., invoke model rollback API) | HTTP trigger med access key | ❌ No | ❌ No |
| **Webhook** | Invoke external incident mgmt (PagerDuty, ServiceNow) | Basic auth via URI eller secure webhook (Entra ID) | ❌ No | ✅ Yes (limited) |
| **Event Hub** | Stream til SIEM (Microsoft Sentinel) for correlation | Managed Identity (Event Hubs Data Sender, Role ID: 2b629674) | ✅ Yes | ✅ Yes (up to API 2023-09-01-preview) |
| **Secure Webhook** | Invoke protected API med Entra ID-auth | Microsoft Entra app registration | ❌ No | ✅ Yes |
| **ITSM Connector** | Create incidents i ServiceNow, Cherwell | ITSM connection credentials | ❌ No | ❌ No |

*(Verified MCP 2026-04)*

**Managed Identity Best Practice (preview):** Managed Identity-støtte for Action Groups er nå tilgjengelig i **preview**. For Automation Runbooks, Logic Apps og Event Hubs, bruk managed identity i stedet for service principals. Azure Function, Webhook, Secure Webhook og ITSM støtter ikke managed identity — bruk HTTP trigger access key respektive secure webhook med Entra ID. Azure Portal legger automatisk til role assignments ved konfigurasjon. For PowerShell/CLI/SDK må du manuelt tildele roller (se tabell over). *(Verified MCP 2026-04)*

---

## Arkitekturmønstre

### 1. Multi-Tier Escalation for AI Incidents

**Bruk når:** Produksjonsløsninger med SLA-krav og 24/7 support.

**Implementering:**

```plaintext
Tier 1: On-Call Developer (Email + SMS)
  ├─ Sev 3-4 alerts → Respond within 4 hours
  └─ Auto-escalate to Tier 2 if no ACK within 30 min

Tier 2: AI Platform Team (Voice Call + PagerDuty)
  ├─ Sev 1-2 alerts → Respond within 30 min
  └─ Auto-escalate to Tier 3 if no resolution within 2 hours

Tier 3: Management + Legal (Email + Teams)
  └─ Sev 0 alerts → Data breach, AI Act violation, PII leak
```

**Azure Monitor Implementering:**

1. **Action Group per Tier:**
   - `AG-Tier1-Developers`: Email til dev-team distribution list
   - `AG-Tier2-Platform`: SMS + PagerDuty webhook
   - `AG-Tier3-Executive`: Voice call til on-call manager + Teams notification

2. **Alert Processing Rule for Auto-Escalation:**
   ```json
   {
     "rules": {
       "if": "alert.severity == 0 AND alert.state == 'New' FOR 30 minutes",
       "then": "add action group AG-Tier3-Executive"
     }
   }
   ```

3. **Time-Based Escalation (via Logic App):**
   - Webhook til Logic App som sjekker alert timestamp
   - Hvis ikke acknowledged innen threshold → invoke Tier 2/3 action groups

**Fordeler:**
- Clear ownership per severity level
- Reduserer alert fatigue for Tier 3
- Automatisk eskalering hindrer at kritiske alerts "faller mellom stolene"

**Ulemper:**
- Kompleks konfigurasjon (krever Logic Apps for time-based escalation)
- Krever testing og dokumentasjon av eskaleringsrutiner
- Risiko for "false escalations" hvis thresholds er feil satt

---

### 2. Automated Remediation with Runbooks

**Bruk når:** Kjente failure modes med deterministiske fix-prosedyrer (scale-out, restart, rollback).

**Eksempel:** Azure OpenAI deployment nærmer seg TPM limit → Auto-scale til høyere tier.

**Runbook Template (PowerShell 7):**

```powershell
param(
    [object] $WebhookData
)

# Parse Common Alert Schema
$alertData = (ConvertFrom-Json -InputObject $WebhookData.RequestBody)
$resourceId = $alertData.data.essentials.alertTargetIds[0]
$metricValue = $alertData.data.alertContext.condition.allOf[0].metricValue

# Extract OpenAI deployment info
$deployment = $resourceId -split '/' | Select-Object -Last 1
$rgName = ($resourceId -split '/')[4]

# Scale up to Standard tier if approaching limit
if ($metricValue -gt 8000) {
    Update-AzCognitiveServicesAccount -ResourceGroupName $rgName `
        -Name $deployment -Sku "S0" -Force
    Write-Output "Scaled $deployment to S0 tier"
}
```

**Alert Rule Configuration:**

| Metric | Threshold | Action |
|--------|-----------|--------|
| `TokensPerMinute` | > 8000 (80% of 10K limit) | Invoke runbook `ScaleUpOpenAI` |
| `RequestLatency` | > 5000ms for 5 min | Invoke runbook `RestartDeployment` |
| `FailedRequests` | > 50 in 10 min | Send to Logic App for root cause analysis |

**Fordeler:**
- Reduserer Mean Time To Recovery (MTTR) dramatisk
- Fungerer 24/7 uten manuell inngripen
- Audit trail via Automation job logs

**Ulemper:**
- Runbooks må testes grundig (feil logic kan forverres situasjonen)
- Krever Automation Contributor role på ressursene
- Ikke egnet for komplekse diagnostiseringsscenarioer

---

### 3. Stateful vs. Stateless Alerting for AI Workloads

**Problem:** AI-requests kan generere tusenvis av failed requests ved samme rot-årsak (f.eks. model deployment down). Skal vi sende ett alert eller tusenvis?

**Stateful Alerting (anbefalt for AI):**

- **Enable:** `Automatically resolve alerts = true`
- **Behavior:** Ett alert fires når condition blir true, auto-resolves når condition blir false
- **Bruk når:** Infrastruktur-alerts (deployment down, API unavailable)

**Stateless Alerting:**

- **Enable:** `Automatically resolve alerts = false`
- **Behavior:** Nytt alert for hver evaluation cycle som matcher condition
- **Bruk når:** Per-request monitoring (track hver PII leak, hver toxic content response)

**Azure AI-spesifikk konfigurasjon:**

| Alert Rule | Type | Rationale |
|------------|------|-----------|
| `Azure OpenAI Deployment Unavailable` | Stateful | En deployment er enten oppe eller nede — send ett alert |
| `Prompt Injection Detected` | Stateless | Hver deteksjon skal logges individuelt (compliance) |
| `Content Safety Filter Triggered` | Stateless | Hver toxic response er en separat incident |
| `Token Rate Limit Approaching` | Stateful | Send warning når 80% nådd, resolve når < 70% |

---

## Beslutningsveiledning

### Severity Mapping for AI Incidents

| Severity | Definition | AI Examples | SLA | Escalation |
|----------|------------|-------------|-----|------------|
| **Sev 0** | Total service outage eller critical security breach | PII leak, AI Act violation, all models unavailable | < 15 min response | Tier 3 immediate |
| **Sev 1** | Major degradation affecting production workload | Primary model down, >50% error rate | < 30 min response | Tier 2 + manager notify |
| **Sev 2** | Partial degradation, workaround available | Secondary model down, latency >5s | < 2 hour response | Tier 2 |
| **Sev 3** | Minor issue, no user impact | Token costs 20% above budget | < 8 hour response | Tier 1 |
| **Sev 4** | Informational, proactive monitoring | Model drift detected, new version available | No SLA | Email only |

### Notification Channel Decision Tree

```
START: AI Alert Fired
  │
  ├─ Is it Sev 0/1? ───YES──> SMS + Voice Call + Teams (immediate)
  │                     │
  │                     └─> Add webhook to PagerDuty/ServiceNow
  │
  └─ Is it Sev 2/3? ───YES──> Email + Teams channel
      │
      └─> Is it business hours? ───NO──> Add SMS for Sev 2
                                   │
                                   YES─> Email only
```

### Anbefalinger fra Well-Architected Framework

*(Verified MCP 2026-04)*

| Anbefaling | Fordel |
|------------|--------|
| **Bruk dynamic thresholds i metric alerts** | ML-baserte terskler tilpasser seg automatisk — unngår manuell threshold-tuning for AI-workloads med variabelt load |
| **Bruk managed identity for log search alert rules** | Credential-free auth; påkrevd hvis query aksesserer Azure Data Explorer (ADX) eller Azure Resource Graph (ARG) |
| **Bruk custom properties i alert rules** | Legg til metadata (owner, cost center, AI Act reportable) i alert payload — enklere triaging og compliance-logging |
| **Bruk Logic Apps for enrichment** | Customiser notification-format, hent tags fra ressurser, integrer med Teams/Slack/PagerDuty uten å endre alert rule |
| **Activity log alerts er gratis** | Bruk activity log alerts for administrative hendelser der mulig — ingen kostnad per evaluering |

### Vanlige Feil (Red Flags)

| Anti-pattern | Problem | Anbefaling |
|--------------|---------|------------|
| **Sending all alerts to personal email** | Vacation/sickness = ingen response | Bruk distribution lists eller action groups per team |
| **No severity differentiation** | Alert fatigue — alt er "viktig" | Implementer 5-tier severity model |
| **No auto-escalation** | Critical alerts blir ignorert nattestid | Logic App med time-based escalation til manager |
| **Email-only for Sev 0** | Delays i critical situations | SMS + Voice Call for Sev 0/1 |
| **No actionable context** | Alerts sier "something is wrong" uten details | Custom properties med resource metadata, query results |
| **Alerting on every request failure** | Stateless alerts → spam | Bruk stateful alerts + aggregation windows (5-15 min) |

### Recommended Alert Rules for Azure AI Services

| Service | Metric/Log | Threshold | Action |
|---------|------------|-----------|--------|
| **Azure OpenAI** | `azure.openai.requests` (429 errors) | > 10 in 5 min | Scale up deployment tier |
| **Azure OpenAI** | `TokensPerMinute` | > 80% of quota | Email warning + runbook to request quota increase |
| **Azure AI Search** | `SearchLatency` | > 1000ms for 10 min | Check index size, scale up replicas |
| **Content Safety** | `ModeratedContent` (high severity) | Any occurrence | Stateless alert + SIEM integration |
| **Document Intelligence** | `FailedRequests` | > 20% error rate | Check API version compatibility, model availability |

---

## Integrasjon med Microsoft-stakken

### Azure Monitor ↔ Microsoft Sentinel

**Bruk:** Stream AI-alerts til Sentinel for correlation med security events.

**Konfigurasjon:**

1. **Action Group → Event Hub:**
   ```json
   {
     "eventHubReceiver": {
       "name": "SentinelEventHub",
       "subscriptionId": "...",
       "eventHubNameSpace": "ai-monitoring",
       "eventHubName": "alerts",
       "useCommonAlertSchema": true
     }
   }
   ```

2. **Sentinel Data Connector:**
   - Connect til Event Hub
   - Parse Common Alert Schema
   - Correlate med AuditLogs, SignInLogs for user context

**Fordeler:**
- Single pane of glass for security + operational monitoring
- Advanced threat detection (e.g., prompt injection patterns + user behavior anomalies)
- Compliance reporting (AI Act Article 72)

### Azure Monitor ↔ Logic Apps

**Bruk:** Enrich alerts med kontekstuell informasjon før notification.

**Eksempel Workflow:**

```
Alert: "Azure OpenAI High Error Rate" (Sev 2)
  ↓
Logic App receives webhook
  ↓
Query Log Analytics for last 100 error messages
  ↓
Group by error code (401, 429, 500)
  ↓
Fetch deployment tags (owner, cost center, environment)
  ↓
POST enriched alert til Teams:
  "🔴 Sev 2: Azure OpenAI Errors
   Deployment: gpt-4-prod
   Owner: ai-platform-team@company.com
   Top Errors: 429 (80%), 500 (15%), 401 (5%)
   Cost Center: CC-12345
   Environment: Production
   Runbook: aka.ms/fix-429-errors"
```

**Template Actions:**

1. **HTTP (Get Model Metadata):** Call Azure OpenAI Management API for deployment details
2. **Log Analytics (Query Errors):** `AzureDiagnostics | where Category == "RequestResponse" and httpStatusCode_d >= 400`
3. **Teams (Post Adaptive Card):** Rich notification med buttons ("Acknowledge", "View Logs", "Run Remediation")

### Azure Monitor ↔ Azure Automation

**Bruk:** Auto-remediation for infrastruktur-alerts.

**Common Runbooks for AI:**

| Runbook | Trigger Alert | Action |
|---------|---------------|--------|
| `ScaleUpOpenAI` | TokensPerMinute > 80% | Update deployment tier (PTU → PTU-M) |
| `RestartFailedDeployment` | Health probe failed | Delete + redeploy model |
| `NotifyCompliance` | Content Safety violation | Email legal + log to compliance database |
| `RollbackModel` | Error rate > 50% after deployment | Swap to previous model version |

**Managed Identity Setup:**

```powershell
# Enable System-Assigned Managed Identity on Automation Account
Set-AzAutomationAccount -ResourceGroupName "rg-automation" `
    -Name "ai-automation" -AssignSystemIdentity

# Assign Contributor role to Managed Identity
$automationAccount = Get-AzAutomationAccount -ResourceGroupName "rg-automation" -Name "ai-automation"
New-AzRoleAssignment -ObjectId $automationAccount.Identity.PrincipalId `
    -RoleDefinitionName "Contributor" -Scope "/subscriptions/.../resourceGroups/rg-ai"
```

---

## Offentlig sektor (Norge)

### AI Act Article 72: Incident Reporting

EU AI Act krever at providers rapporterer "serious incidents" til nasjonale myndigheter innen **15 dager**. Azure Monitor alerts må derfor konfigureres med compliance logging.

**Serious Incident Definition (AI Act):**
- Death or serious injury
- Serious harm to health, property, or environment
- Serious violation of fundamental rights (e.g., discrimination)

**Implementering:**

1. **Tag Critical Alerts:**
   ```json
   {
     "customProperties": {
       "aiActReportable": "true",
       "incidentType": "discriminationRisk",
       "affectedUsers": "approx. 500",
       "dataProcessed": "PII (names, addresses)"
     }
   }
   ```

2. **Action Group → Event Hub → Archive Storage:**
   - Stream til immutable blob storage (compliance retention)
   - Hourly export til Sentinel for analysis
   - Monthly report generation (Logic App)

3. **Notification til Compliance Officer:**
   - Sev 0 alerts → immediate email til DPO + legal
   - Include pre-filled incident report template

### Forvaltningsloven § 25 (Begrunnelsesplikt)

Vedtak fattet med AI-støtte må kunne forklares. Hvis AI-modellen feiler under saksbehandling, må dette logges og eskaleres.

**Alert Rule:** "AI Recommendation Unavailable During Case Processing"

**Action:**
1. **Immediate:** Email til saksbehandler (manual fallback)
2. **Within 1 hour:** Notify IT support
3. **Within 4 hours:** Incident report til seksjonsleder
4. **Audit log:** Store case ID, timestamp, error message (for later review)

### Schrems II / Data Residency

Alerts som inneholder PII må **ikke** sendes til tjenester utenfor EU/EØS. Dette gjelder spesielt webhooks til SaaS-løsninger (PagerDuty, Slack).

**Compliant Setup:**

| Notification Channel | Data Residency | Compliant? | Alternative |
|---------------------|----------------|------------|-------------|
| Email (Microsoft 365 EU tenant) | EU | ✅ Yes | — |
| Teams (EU datacenter) | EU | ✅ Yes | — |
| Event Hub → Sentinel (Norway East) | Norway | ✅ Yes | — |
| Webhook → PagerDuty (US) | USA | ❌ No | Bruk Logic App i Norway East som proxy, strip PII |
| SMS (Twilio US) | USA | ❌ No | Bruk Azure Communication Services (EU) |

**Best Practice:** Bruk `customProperties` til å skille mellom metadata (OK å sende ut) og PII (må holdes innenfor EU).

---

## Kostnad og lisensiering

### Azure Monitor Alerts Pricing (Norway East, Feb 2026)

| Alert Type | Price per Rule/Month | Price per Evaluation | Notes |
|------------|---------------------|---------------------|-------|
| **Metric Alert** (standard) | 0.10 USD | — | First 10 rules free per subscription |
| **Metric Alert** (multi-resource) | 0.10 USD | — | Can monitor 1000+ VMs with one rule |
| **Log Search Alert** | 0.10 USD | 0.20 USD per query execution | Frequency × time window = cost |
| **Activity Log Alert** | **FREE** | **FREE** | Use these whenever possible! |
| **Service Health Alert** | **FREE** | **FREE** | — |
| **Resource Health Alert** | **FREE** | **FREE** | — |

**Example Cost Calculation (Log Search Alert):**

```
Alert: "Azure OpenAI Error Rate > 10%"
Query frequency: Every 5 minutes
Time window: 15 minutes
Evaluations per month: (60/5) × 24 × 30 = 8640

Cost = 0.10 USD (rule) + (8640 × 0.20 USD) = 1728.10 USD/month
```

**Optimization Strategy:**
- Bruk **metric alerts** i stedet for log search alerts der mulig (gratis evaluations)
- Bruk **activity log alerts** for administrative events (gratis)
- Bruk **multi-resource alert rules** (én rule for mange ressurser)
- Øk query frequency til 15-30 min for non-critical alerts

### Action Group Pricing

| Action Type | Cost | Rate Limit |
|-------------|------|------------|
| **Email** | FREE | 1000 emails per hour per action group |
| **SMS** | 0.20 USD per SMS | 1 SMS per 5 min per phone number |
| **Voice Call** | 1.00 USD per call | 1 call per 5 min per phone number |
| **Webhook** | FREE | — |
| **Automation Runbook** | Automation job cost (0.002 USD per minute) | — |
| **Logic App** | Logic App execution cost (varies) | — |
| **Event Hub** | Event Hub ingress cost (0.028 USD per million events) | — |

**Best Practice:** Start med email + webhook (free), legg til SMS/voice call kun for Sev 0/1.

---

## For arkitekten (Cosmo)

### Spørsmål å stille kunden

1. **Severity Mapping:**
   - "Hva definerer dere som en Sev 0 incident for deres AI-løsning? PII leak? Total nedetid? Noe annet?"
   - "Hva er akseptabel Mean Time To Acknowledge (MTTA) per severity level?"

2. **Escalation Procedures:**
   - "Har dere en on-call rotation? Hvem skal motta SMS/voice call ved nattestid for Sev 0/1?"
   - "Skal management (seksjonsleder, DPO, juridisk) varsles automatisk ved visse typer alerts?"

3. **Compliance Requirements:**
   - "Er løsningen omfattet av AI Act som high-risk system? Må dere rapportere serious incidents til myndighetene?"
   - "Hvilke data residency-krav har dere? Er det OK å sende alerts til webhooks utenfor EU/EØS?"

4. **Automation vs. Manual Response:**
   - "Er det failure modes hvor dere ønsker automatisk remediation (scale-up, restart)? Hva er risikoen ved feil automation?"
   - "Hvilke alerts krever manuell triaging før action (f.eks. model rollback)?"

5. **Integration Points:**
   - "Bruker dere ITSM-system (ServiceNow, Cherwell)? Skal alerts automatisk opprette incidents?"
   - "Skal alerts streames til Sentinel for security correlation? Til Power BI for dashboards?"

6. **Alert Fatigue:**
   - "Hvor mange alerts får dere per dag i dag? Hvor mange av dem er actionable?"
   - "Er det alerts dere ignorerer fordi de 'alltid fyrer'? Hvordan kan vi redusere false positives?"

7. **Testing & Validation:**
   - "Hvordan skal vi teste eskaleringsrutinene før go-live? Ønsker dere en tabletop exercise?"
   - "Hva er akseptabel alert latency (tid fra incident → alert fires)? 1 min? 5 min?"

### Fallgruver å unngå

| Fallgruve | Konsekvens | Mitigering |
|-----------|------------|------------|
| **Alert spam (100+ alerts per dag)** | Team ignorer alle alerts | Bruk stateful alerts, øk aggregation windows, implementer alert processing rules |
| **No clear ownership** | Alerts går til "no-reply" inbox som ingen sjekker | Definer action groups per team/severity, bruk distribution lists |
| **Over-reliance på automation** | Runbook scaler opp feil ressurs → cost explosion | Start med manual approval workflows, test automation grundig |
| **PII i alert payload** | GDPR violation når sendt til external webhooks | Bruk `customProperties` for metadata only, strip PII i Logic App proxy |
| **No escalation for unacknowledged alerts** | Sev 0 alerts blir ikke sett nattestid | Implementer time-based escalation via Logic App |
| **Webhook endpoints without retry logic** | Alerts tapt hvis endpoint er midlertidig nede | Bruk Event Hub som buffer + reliable delivery |
| **Cost blindness** | Log search alerts med 1-min frequency → 1000+ USD/month | Bruk metric alerts der mulig, øk query frequency til 5-15 min |

### Anbefalinger per modenhetsnivå

**Level 1 (MVP / Pilot):**
- 1 action group med email til dev-team
- Metric alerts for kritiske metrics (availability, error rate)
- Stateful alerting for infrastruktur-events
- Severity: Kun Sev 1/2/3 (simplifisert)

**Level 2 (Production / Basic Maturity):**
- Multi-tier escalation (developer → platform team → manager)
- SMS + voice call for Sev 0/1
- Integration med Teams for collaborative triaging
- Alert processing rules for maintenance windows
- Automation runbooks for simple remediation (scale-up)

**Level 3 (High Maturity / Regulated):**
- Full 5-tier severity model med SLA per level
- ITSM integration (auto-create ServiceNow incidents)
- Sentinel integration for security correlation
- Compliance logging (AI Act incident reporting)
- Advanced automation (model rollback, canary deployments)
- Quarterly alert review + optimization (reduce alert fatigue)

**Level 4 (Best-in-Class / Autonomous):**
- AI-powered alert correlation (AIOps)
- Predictive alerting (model drift detected before user impact)
- Closed-loop remediation (auto-resolve 80%+ of alerts)
- Real-time cost optimization (auto-scale based on budget vs. demand)
- Continuous compliance monitoring (automated AI Act Article 72 reporting)

---

## Kilder og verifisering

### Verified (from Microsoft Learn MCP)

1. **Action Groups Overview**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/action-groups
   *Confidence: High — Official documentation retrieved 2026-02, covers notification types, managed identity, rate limits.*

2. **Best Practices for Azure Monitor Alerts**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/best-practices-alerts
   *Confidence: High — Well-Architected Framework guidance, includes reliability, cost optimization, operational excellence.*

3. **Webhook Retry Logic**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/action-groups#webhook
   *Confidence: High — Documented retry intervals (5s, 20s, 5s, 40s, 5s) and 15-min cooldown.*

4. **Automation Runbook with Managed Identity**
   https://learn.microsoft.com/en-us/azure/automation/automation-create-alert-triggered-runbook
   *Confidence: High — Code sample for VM stop runbook using Common Alert Schema.*

5. **Alert Processing Rules**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-processing-rules
   *Confidence: High — Covers suppression, action group override, scheduling.*

6. **Stateful vs. Stateless Alerts**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/alerts-troubleshoot-metric
   *Confidence: High — "Automatically resolve alerts" checkbox behavior explained.*

7. **Service Limits for Notifications**
   https://learn.microsoft.com/en-us/azure/azure-monitor/alerts/action-groups#service-limits-for-notifications
   *Confidence: High — Rate limits per notification type (SMS, voice, email).*

### Baseline (Model Knowledge)

8. **AI Act Article 72 Incident Reporting**
   *Confidence: Medium — EU AI Act text available, but specific implementation guidance for Azure not yet published by Microsoft (as of Feb 2026).*

9. **Severity Mapping Best Practices**
   *Confidence: Medium — Industry standard pattern (Sev 0-4), adapted for AI-specific scenarios based on architecture experience.*

10. **Multi-Tier Escalation Pattern**
    *Confidence: High — Standard ITIL/SRE practice, Azure Monitor supports via action groups + Logic Apps.*

### Recommendations for Further Verification

- **Cost estimates:** Verify against Azure Pricing Calculator (pricing kan variere per region og currency fluctuations).
- **AI Act compliance:** Consult with legal team og Datatilsynet for norsk implementering av EU AI Act Article 72.
- **ITSM integration:** Test ITSM connector med deres spesifikke ServiceNow/Cherwell-versjon (API compatibility kan variere).
