Oefening: een toepassingsstatusmodel bouwen

Voltooid

Contoso Shoes heeft een manier nodig om problemen in deze architectuur te detecteren, diagnosticeren en voorspellen. U wilt een statusmodel bouwen dat meetbaar is via een status die wordt toegepast op gebruikers- en systeemstromen. Het doel is om potentiële storingspunten te identificeren voordat ze een storing kunnen veroorzaken.

Huidige status en probleem

Tot nu toe hebt u een statuscontrole-API toegevoegd en mogelijkheden voor meerdere regio's in uw architectuur ontwikkeld. Er is echter geen manier om inzicht te krijgen in de complexe topologie die gebruikers- en systeemstromen omvat. Deze kloof moet worden opgevuld, zodat het SRE-team snel problemen kan identificeren en oplossen.

In een recent incident kon het team de trapsgewijze impact van een probleem dat het gevolg is van een API-onderdeel dat van invloed is op de platformafhankelijkheden niet zien. Er is veel tijd besteed aan het oplossen van problemen omdat het beschadigde onderdeel niet meteen kan worden gezien. Uiteindelijk heeft deze inefficiëntie geleid tot langere downtime, waardoor het bedrijf financieel verlies veroorzaakt.

Specificatie

  • Ontwerp een statusmodel met de relatie tussen alle onderdelen in de architectuur, inclusief de toepassingsonderdelen en de platformafhankelijkheden. Factor in items die aanwezig zijn in de aanvraagstroom, waaronder de gateway, compute, databases, opslag, caches, enzovoort. Neem ook onderdelen op die doorgaans buiten de aanvraagstroom bestaan. Open OCI-artefacten (Container Initiative), geheime archieven, configuratieservices en andere. Alle Azure-services moeten worden geconfigureerd om diagnostische gegevens te verzenden.

  • Voeg een geïntegreerde gegevenssink toe in de architectuur voor het verzamelen van gegevens uit verschillende bronnen.

  • Definieer een algemene status op basis van geaggregeerde historische logboeken en metrische gegevens. Vertegenwoordig de status in een van de drie statussen: beschadigd, gedegradeerd en gezond.

  • Visualiseer de status van alle onderdelen in een hiërarchie die alle stromen vertegenwoordigt.

Als u aan de slag wilt gaan met uw ontwerp, raden we u aan deze stappen uit te voeren:

Belangrijk

Statusmodellering is een uitgebreide oefening. De aanpak in deze sectie is bedoeld om u te helpen aan de slag te gaan. Wees uitgebreid in het toepassen van het model op alle functionele en niet-functionele stromen in uw bedrijfskritiek ontwerp om een holistische weergave van het systeem te krijgen.

1–Statusmodellering starten

Deze oefening is theoretisch. Statusmodellering in een top-down ontwerpactiviteit waarin u een uitgebreide lijst met onderdelen nodig hebt die in de architectuur worden gebruikt. Deze lijst moet alle toepassingsonderdelen en de Azure-services bevatten.

Plaats deze onderdelen in een afhankelijkheidsgrafiek met een hiërarchische weergave van de oplossing. De bovenste laag bevat de gebruikersstromen die de aanvraag van de eindgebruiker naar de website bijhouden en stromen op toepassings-API-niveau. De onderste laag bevat de systeemstromen van de Azure-services. Wijs ook afhankelijkheden toe tussen de Azure-resources.

Uw grafiek ziet er ongeveer als volgt uit:

Diagram met een afhankelijkheidsgrafiek voor een statusmodel.

Controleer uw voortgang: gelaagde toepassingsstatus

2– De statusscores definiëren

Verzamel voor elk onderdeel metrische gegevens en metrische drempelwaarden en bepaal vervolgens de waarde waarmee het onderdeel moet worden beschouwd als in orde, gedegradeerd en beschadigd. Deze beslissing moet worden beïnvloed door de verwachte prestaties en niet-functionele bedrijfsvereisten. Categoriseer uw metrische gegevens als:

  • Metrische toepassingsgegevens: gegevenspunten uit toepassingscode, zoals het aantal uitzonderingen.

  • Metrische servicegegevens: gegevenspunten van Azure-services, zoals DTU's (Database Transaction Units) die worden gebruikt.

  • Metrische gegevens voor oplossingen: gegevenspunten op oplossingsniveau, zoals de end-to-end verwerkingstijd van een aanvraag.

Hier volgt een voorbeeld voor Azure-app Services:

App-services Integriteitsstatus
Reactietijd < 200 ms
HTTP-serverfouten < 2
Geeft een gezonde groene status weer.
Reactietijd < 500 ms
HTTP-serverfouten < 2
Geeft een gedegradeerde gele status weer.
Reactietijd > 500 ms
HTTP-serverfouten > 2
Geeft een rode status met een slechte status weer

3– Een algemene status definiëren

Definieer voor elke gebruikers- en systeemstroom een algemene status. U moet de status aggregeren van afzonderlijke onderdelen die deelnemen aan die stroom.

Stel dat een systeemstroom bestaat uit een toepassingsonderdeel, Azure-app Service-plan en App Services.

API App Service-plan App-services Integriteitsstatus
Maximale latentie < 30 ms CPU % < 70%
HTTP-wachtrijlengte < 5
Reactietijd < 200 ms
HTTP-serverfouten < 2
Samengestelde gezonde status weergegeven als groen.
Maximale latentie < 30 ms CPU % < 90%
HTTP-wachtrijlengte < 5
Reactietijd < 500 ms
HTTP-serverfouten < 2
Samengestelde gedegradeerde status weergegeven als geel.
Maximale latentie > 30 ms CPU % > 90%
HTTP-wachtrijlengte > 5
Reactietijd > 500 ms
HTTP-serverfouten > 2
Samengestelde beschadigde status weergegeven als rood.

De statusscore voor een gebruikersstroom moet worden vertegenwoordigd door de laagste score voor alle toegewezen onderdelen. Voor systeemstromen past u de juiste gewichten toe op basis van bedrijfskritiek. Tussen de twee stromen moeten financieel significante of klantgerichte gebruikersstromen prioriteit krijgen.

Controleer uw voortgang: voorbeeld - gelaagd statusmodel

4– Bewakingsgegevens verzamelen

U hebt een geïntegreerde gegevenssink nodig in elke regio die logboeken en metrische gegevens verzamelt voor alle toepassings- en platformservices die zijn geïmplementeerd als onderdeel van de regionale stempel. U hebt een andere sink nodig voor het opslaan van metrische gegevens die worden verzonden uit globale resources, zoals Azure Front Door en Cosmos DB.

Diagram met gegevensverzameling van verschillende toepassings- en platformservices.

Technologieopties

  • Azure-toepassing Insights: wordt gebruikt om alle telemetriegegevens van toepassingen te verzamelen.
  • Azure Monitor-logboeken: verzamelt gegevens die worden verzonden door Application Insights en metrische platformgegevens voor Azure-services.
  • Azure Log Analytics: wordt gebruikt als het centrale hulpprogramma voor het analyseren van logboeken en metrische gegevens van alle toepassings- en infrastructuuronderdelen.

Controleer uw voortgang: Geïntegreerde gegevenssink voor gecorreleerde analyse

5– Query's instellen voor bewakingsgegevens

Kusto-querytaal (KQL) is goed geïntegreerd met Log Analytics. Implementeer aangepaste KQL-query's als functies om gegevens op te halen uit Azure Monitor.

Sla aangepaste query's op in de codeopslagplaats, zodat ze automatisch worden geïmporteerd en toegepast als onderdeel van uw CI/CD-pijplijnen (Continuous Integration/Continuous Delivery).

6– De status visualiseren

U kunt de afhankelijkheidsgrafiek visualiseren met statusscores met een verkeerslichtweergave. Gebruik hulpprogramma's zoals Azure Dashboards, Monitor Workbooks of Grafana. Hier volgt een voorbeeld:

Diagram met een voorbeeldstatusscore in een afhankelijkheidsgrafiek.

Uw voortgang controleren: Visualisatie

7– Waarschuwingen instellen voor statuswijzigingen

U moet dashboards met waarschuwingen gebruiken om direct aandacht te vestigen op problemen.

Als de status van een onderdeel verandert in Gedegradeerd of Beschadigd, moet de operator onmiddellijk worden gewaarschuwd. Stel waarschuwingen in op het hoofdknooppunt, omdat elke wijziging in dit knooppunt een slechte status aangeeft in de onderliggende gebruikersstromen of -resources.

Controleer uw voortgang: waarschuwingen

Controleer uw werk

Bekijk deze demo over bewaking en statusmodellering. Heb je alle aspecten in je ontwerp behandeld?

  • Hebt u een geïntegreerde gegevenssink voor gecorreleerde analyse?
  • Hebt u toepassingslogboeken, metrische platformgegevens en oplossingsgegevenspunten opgenomen?
  • Hebt u dashboards ingesteld om de status van alle onderdelen te visualiseren?
  • Hebt u rekening gehouden met storingspunten voor elke service (of een deel van die service) die een storing kunnen veroorzaken of dat u niet kunt schalen, implementeren, bewaken?
  • Hebt u querypakketten overwogen voor het vastleggen van sleutelquery's waarmee problemen sneller kunnen worden opgevraagd?
  • Was uw statuscontrole-API nuttig in dit model? Moest u die API aanpassen aan het statusmodel?

Kenniscontrole

1.

Wat moet u opnemen in uw statusscore die de algehele status van de toepassing vertegenwoordigt?

2.

Welke van deze Azure-services kan worden gebruikt als een geïntegreerde gegevenssink voor telemetrie en analyse?