Zum Inhalt

Capacity auto-pause und Resume

Die Plattform kann Fabric capacities nach Zeitplan pausieren, um außerhalb der Arbeitszeiten Kosten zu sparen. Dieses Runbook richtet sich an das Plattform- Team: wie du die Funktion konfigurierst, überwachst und Fehler behebst. Workload-Teams lesen Kostenoptimierung.

So funktioniert es

Zwei Logic Apps im Consumption-Tier werden in der gemeinsamen Ressourcengruppe deployt, eine für Pause und eine optionale für Resume. Jede hat einen Recurrence-Trigger, läuft über die capacities des Deployments und ruft die Azure-Resource-Manager-Aktion suspend oder resume mit ihrer system-assigned managed identity auf.

flowchart LR
    t1["Recurrence: pause time, pause days"] --> p["Logic App: pause"]
    t2["Recurrence: resume time, resume days (optional)"] --> r["Logic App: resume"]
    p -->|"POST suspend (managed identity)"| cap["Fabric capacities of the shared deployment"]
    r -->|"POST resume (managed identity)"| cap
    p --> law["Log Analytics (diagnostics)"]
    r --> law
    law --> alert["Alert rule on failed runs"]
    alert --> ag["Action group (email)"]
    ops["Operator groups (custom role)"] -->|"manual resume: portal or CLI"| cap

Die Logic Apps nutzen die Custom Role Fabric Capacity Operator, begrenzt auf die gemeinsame Ressourcengruppe: Lesen, Schreiben, Suspend und Resume von Microsoft.Fabric/capacities. Sie kann keine capacity löschen und keine Daten lesen. Siehe Entscheidungen.

Konfiguration

Setze capacity_auto_pause in den Variablen des Shared Tier. Die Funktion ist standardmäßig aus.

capacity_auto_pause = {
  enabled    = true
  pause_time = "06:00 PM"
  pause_days = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

  resume_enabled = false          # manual resume only (recommended)
  # resume_time  = "07:00 AM"
  # resume_days  = ["Monday", "Tuesday", "Wednesday", "Thursday", "Friday"]

  timezone      = "W. Europe Standard Time"
  alert_enabled = true
  alert_notification_emails = ["<team mailbox>"]
}

# Groups that may pause and resume manually in the portal
capacity_operator_group_ids = ["<entra-group-object-id>"]
Parameter Default Beschreibung
enabled false Hauptschalter
pause_time 06:00 PM Zeit für die Pause, Format HH:MM AM/PM
pause_days alle sieben Tage Tage für die Pause
resume_enabled false Die Resume Logic App deployen
resume_time 08:00 AM Wird nur bei resume_enabled = true genutzt
resume_days Montag bis Freitag Wird nur bei resume_enabled = true genutzt
timezone W. Europe Standard Time Name der Windows-Zeitzone für beide Zeitpläne
alert_enabled false Alert-Regel für fehlgeschlagene Läufe, mit Action Group
alert_notification_emails keine Zusätzliche Empfänger der Action Group

Das Zeitformat und die Tagesnamen werden validiert. Der Resource Provider Microsoft.Logic wird vom Deployment registriert.

Eine support-Adresse der Plattform ist immer Empfänger

Die Action Group enthält zusätzlich zu alert_notification_emails immer eine feste support-Adresse der Plattform, die im Terraform-Code steht. Im Managed-Modell ist das das vorgesehene support-Postfach. Wenn du die Plattform selbst betreibst, ändere sie im Code deiner Kopie oder nimm in Kauf, dass die Adresse die Alerts erhält.

Was pausiert wird

Die Logic Apps laufen über alle capacities, die das gemeinsame Deployment erstellt. Sie fassen nie capacities an, die zu einem anderen Deployment gehören. Damit Production weiterläuft, lege die Production-capacity in ein gemeinsames Deployment, in dem capacity_auto_pause.enabled auf false steht, und die Non-production-capacities in das Deployment, in dem es true ist. Die workspaces finden ihre capacity über den Namen, das ändert also nichts am Workload Tier.

Manuelles Resume

Mitglieder der Gruppen in capacity_operator_group_ids haben die Custom Role und können jederzeit fortsetzen.

Portal: Öffne die capacity in der gemeinsamen Ressourcengruppe, wähle in der Übersicht Resume und warte, bis der Status Active ist (meist ein bis zwei Minuten).

CLI:

az resource invoke-action --action resume \
  --ids "/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.Fabric/capacities/<capacity-name>"

Monitoring

Wenn die Funktion aktiviert ist, senden Diagnoseeinstellungen die WorkflowRuntime-Logs und Metriken beider Logic Apps an den Log Analytics workspace des spokes.

AzureDiagnostics
| where ResourceProvider == "MICROSOFT.LOGIC"
| where resource_workflowName_s has_any ("cappause", "capresume")
| project TimeGenerated, resource_workflowName_s, status_s, error_message_s
| order by TimeGenerated desc
| take 50

Ergänze | where status_s == "Failed", um nur Fehler zu sehen.

Mit alert_enabled = true löst eine Scheduled Query Rule aus, wenn ein Pause- oder Resume-Lauf fehlschlägt. Sie wird alle 5 Minuten über ein 5-Minuten-Fenster mit Severity 2 (Warning) ausgewertet und benachrichtigt die Action Group.

Fehlerbehebung

Symptom Prüfen
Die capacity wurde nicht pausiert Öffne den Run-Verlauf der Logic App. Prüfe, dass ihre managed identity die Rolle Fabric Capacity Operator auf der Ressourcengruppe hat. Eine bereits pausierte capacity zu pausieren ist ein No-op, der als Erfolg geloggt wird.
Die capacity wurde nicht fortgesetzt Bei resume_enabled = false ist das erwartet. Sonst prüfe den Run-Verlauf der Resume Logic App und dass die capacity nicht im Status Deleting oder Provisioning ist.
Alert ausgelöst, capacity in Ordnung Der Fehler kann vorübergehend gewesen sein (zum Beispiel Throttling durch Resource Manager). Logic Apps wiederholen vorübergehende Fehler. Wenn der Endzustand stimmt, bestätige den Alert.
Berechtigungsfehler in Läufen Die Rollenzuweisung wurde entfernt, oder die Logic App wurde neu erstellt und bekam eine neue Identität. Führe das Deployment des Shared Tier erneut aus: Es erstellt die Zuweisung neu.