Operations¶
Deze pagina is voor het platformteam. Ze behandelt wat je in de gaten houdt, wat volgens schema draait, hoe alerting is aangesloten en wat je doet als iets faalt. Ze beschrijft het referentieontwerp; jouw monitoring, on-callopzet en namen kunnen afwijken. Wie deze taken uitvoert, hangt af van het beheermodel (Operating models, Verantwoordelijkheden).
Verificatie na een deployment¶
| Controle | Verwacht |
|---|---|
| Liveness | /.backstage/health/v1/liveness geeft 200 terug |
| Readiness | /.backstage/health/v1/readiness geeft 200 terug. Het geeft 503 tijdens het opstarten, tijdens het afsluiten en zolang de credential voor Microsoft-aanmelding de validatie niet doorstaat. |
| Build-ID | Het antwoord van het health-endpoint bevat de header X-Build-Id, de ID van de pipelinerun. De smoke test van de deployment vergelijkt die. |
| Aanmelden | Een testgebruiker komt in een gevulde catalog terecht |
| Ingestie | Een bekende workload, repository, gebruiker en groep staan in de catalog |
| MCP | De toollijst van de MCP-server is niet leeg |
Dezelfde controles, met de gebruikte entity of waarde, vormen de validatielijst in Een klant onboarden.
Geplande taken¶
De backend draait deze taken. De waarden zijn de standaardwaarden uit de gedeelde configuratie en kunnen per omgeving worden overschreven.
| Taak | Standaard | Opmerkingen |
|---|---|---|
| Azure Resource Graph, Application Gateway-listeners | Elk uur, timeout 50 minuten (productieconfiguratie) | Kan worden uitgeschakeld met enabled: false |
| Azure Resource Graph, subscriptions | Per provider-ID ingesteld in de configuratie | Heeft een schedule nodig als ingeschakeld. Een ingeschakelde provider zonder geldig schedule faalt bij het opstarten. |
| Azure DevOps-repositories | Ingesteld in de klantconfiguratie (voorbeeld: elke 30 minuten, timeout 3 minuten) | Leest catalog-info.yaml-bestanden |
| Gebruikers en groepen (Microsoft Graph) | Ingesteld in de klantconfiguratie | |
| Verversing van de netwerkinventaris | Elke 10 minuten, timeout 2 minuten | Logs worden op verzoek bevraagd |
| Security insights | Elk uur, timeout 55 minuten | |
| Compliance insights | Elk uur, timeout 55 minuten | |
| Configuratie van kostenexports | Batches in een venster buiten kantooruren | Zie Cost insights setup |
| Laden van kostendata | Data Factory-trigger dagelijks om 04:00 W. Europe-tijd |
Als een taak langer duurt dan zijn timeout, wordt hij geannuleerd en probeert hij het bij het volgende interval opnieuw. De Azure Resource Graph-requests delen een rate limiter-budget van 10 requests per 5 seconden, dus grote omgevingen duren langer.
Logging en telemetrie¶
| Onderdeel | Detail |
|---|---|
| Loglevel | warn in productie. De catalog logt op error. De plugins voor kosten en netwerk loggen op info. |
| Application Insights | De backend stuurt traces via Azure Monitor OpenTelemetry. Ruisende spans worden gefilterd. |
| Agenttelemetrie | Agentruns worden getraceerd met OpenTelemetry. De traces leggen inputs en outputs vast, dus ze kunnen de prompts van gebruikers bevatten. Pas dezelfde toegangsregels toe als voor andere logs die gebruikerscontent kunnen bevatten. |
| Gesprekken | Agentthreads en -berichten worden per gebruiker opgeslagen in de portaldatabase |
| Auditevents | De toegangscontrole stuurt auditevents uit (Authenticatie en toegang) |
Alerting¶
De referentieomgevingen gebruiken PagerDuty. Dit is een keuze van de provider; elke Azure Monitor action group werkt op dezelfde manier.
| Onderdeel | Detail |
|---|---|
| Gedeelde opzet (eenmalig) | Een team, een schedule met een wekelijkse rotatie beperkt tot de geconfigureerde kantooruren en -dagen, en een escalation policy met een instelbare vertraging en aantal loops. Beheerd met Terraform in een platformroot die zelfstandig wordt gedeployd. |
| Per omgeving | Een service gekoppeld aan het gedeelde escalation policy en aan de business service van de klant, plus een Azure Monitor action group die PagerDuty aanroept |
| Mensen | Gebruikers staan vermeld met de rol manager, responder of observer. Gebruikers moeten al een account hebben. Gebruik manager voor global administrators, omdat PagerDuty voor hen geen lagere rol toestaat. |
| Dekking | Buiten de geconfigureerde uren is het schedule leeg. Verwijder de beperkingen voor 24/7-dekking. De uren volgen het contract en worden hier niet gedefinieerd. |
| Alertregels | De modules maken geen alerts aan tenzij je action group-ID's meegeeft. De Data Factory-module heeft een alert voor pipelinefouten. |
De gedeelde PagerDuty-root moet worden gedeployd vóór een omgeving die naar zijn escalation policy verwijst. Zijn pipeline heeft de OAuth client-ID, het secret en het account-subdomein van PagerDuty nodig als repository secrets, en een OAuth-app met lees- en schrijfscopes voor services, schedules en escalation policies en leesscopes voor teams, users en abilities.
Back-up en herstel¶
| Onderdeel | Detail |
|---|---|
| PostgreSQL | Automatische back-up met 7 dagen retentie, geen geo-redundantie |
| Key Vault | Soft delete 7 dagen, purge protection aan |
| Catalog | Wordt opnieuw opgebouwd uit Azure en de repositories. Verlies van de catalogdatabase betekent verlies van de agentgesprekken en plugindata, niet van de bron van de catalog. |
| Rollback van de portal | Deploy een eerdere commit via de dispatch workflow. |
Goedkeuringen van private endpoints¶
Als de provider vanuit zijn eigen netwerk deployt, blijven de private endpoint connections van de resources van de klant in behandeling totdat de klant ze goedkeurt. De klant kan een goedkeuring op elk moment intrekken, waardoor deployments stoppen. Als een deployment Key Vault, de registry of de Terraform state niet kan bereiken, controleer dan eerst of een connection in behandeling of ingetrokken is en of de DNS-entry bestaat. Zie Een klant onboarden.
Troubleshooting¶
| Symptoom | Waarschijnlijke oorzaak | Actie |
|---|---|---|
| Aanmelden faalt met "user does not exist" | Het aanmeld-e-mailadres komt niet overeen met een User-entity | Wacht op de volgende gebruikerssync. Controleer of de Graph application permissions zijn verleend (Prerequisites). |
| Catalog is leeg of workloads ontbreken | Ontbrekende tags, ontbrekende Reader-rol of het schedule van de provider heeft nog niet gedraaid | Controleer de tags (Catalog en entity model) en de role assignments |
| Groepen ontbreken | Normalisatie van groepsnamen laat groepen weg die de naamconventie niet volgen | Zie Catalog en entity model |
| Geen kostendata | Provider Microsoft.CostManagement niet geregistreerd, export nog niet aangemaakt, pipeline nog niet gedraaid of de private connection naar SQL ontbreekt |
Zie Cost insights setup. Reken op één tot twee dagen na de setup. |
| Netwerk- of securitytabellen leeg | Ontbrekende rol Monitoring Reader of Reader op de scope van de firewall of gateway | Prerequisites |
| Pull request van de agent faalt met 403 of 404 | De identity mist Contribute op de repository, zit niet in de Azure DevOps-organisatie of de GitHub App mist permissies | AI setup |
| GitHub-integratie faalt bij deployment | De private key is met echte regeleinden opgeslagen | Sla de key op met \n in plaats van regeleinden (Configuratie) |
| Gateway meldt de portal als unhealthy | De probe wijst naar readiness en er is een opstart- of credentialprobleem | WAF en eigen domein |
| Eerste infrastructuurrun faalt op Key Vault of registry | Verwacht als private endpoints nog niet bestaan | Een klant onboarden |
| Deployment van Foundry duurt erg lang | Het aanmaken van Foundry kan meer dan twee uur duren | De pipeline-timeout is 210 minuten |
| Foundry-deployment faalt met een capability host-fout | Er bestaat een capability host van het kind "Agents" in een ongeldige staat | Zie hieronder |
Capability host-fout¶
Dit geldt als Foundry met bring-your-own resources is gedeployd. De deployment faalt met een fout over capabilityHostKind. Som de capability hosts van het account op, verwijder degene die wordt gemeld en maak hem opnieuw aan met de REST API.
az rest --method get \
--url "https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group>/providers/Microsoft.CognitiveServices/accounts/<account-name>/capabilityHosts?api-version=2025-10-01-preview"
az rest --method delete \
--url ".../capabilityHosts/<capability-host-name>?api-version=2025-10-01-preview"
Maak hem opnieuw aan met een body die capabilityHostKind op Agents zet en customerSubnet op de resource-ID van het gedelegeerde agents-subnet, en lees hem daarna terug tot de provisioning state succeeded is.
Updates¶
Nieuwe versies van de portal bereiken elke omgeving via de rings (Deployment en omgevingen). Features worden niet per klant gekozen; een klantspecifieke wijziging is een configuratiewijziging. Bespreek de release tijdens het overdrachtsgesprek en na grote updates.