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. |