Övning – Skapa en programhälsomodell

Slutförd

Contoso Shoes behöver ett sätt att identifiera, diagnostisera och förutsäga problem i den här arkitekturen. Du vill skapa en hälsomodell som kan mätas genom en hälsostatus som tillämpas på användar- och systemflöden. Målet är att identifiera potentiella felpunkter innan de kan orsaka ett avbrott.

Aktuellt tillstånd och problem

Hittills har du lagt till ett API för hälsokontroll och skapat funktioner för flera regioner i din arkitektur. Det finns dock inget sätt att få insikt i den komplexa topologi som innehåller användar- och systemflöden. Det här tomrummet måste fyllas i så att SRE-teamet snabbt kan identifiera och lösa problem.

I en incident nyligen kunde teamet inte se den sammanhängande effekten av ett problem som beror på en API-komponent som påverkar dess plattformsberoenden. Det gick mycket tid att felsöka eftersom komponenten med feltillstånd inte kunde upptäckas direkt. I slutändan ledde denna ineffektivitet till längre stilleståndstider, vilket orsakade ekonomisk förlust för företaget.

Specifikation

  • Utforma en hälsomodell som visar relationen mellan alla komponenter i arkitekturen, inklusive programkomponenterna och plattformsberoendena. Räkna in objekt som finns i begärandeflödet, inklusive gateway, beräkning, databaser, lagring, cacheminnen och så vidare. Inkludera även komponenter som vanligtvis finns utanför begärandeflödet. Till exempel OCI-artefakter (Open Container Initiative), hemliga arkiv, konfigurationstjänster och andra. Alla Azure-tjänster måste konfigureras för att skicka diagnostikdata.

  • Lägg till en enhetlig datamottagare i arkitekturen för insamling av data från olika källor.

  • Definiera en övergripande hälsostatus baserat på aggregerade historiska loggar och mått. Representera statusen i något av tre hälsotillstånd: inte felfri, degraderad och felfri.

  • Visualisera hälsostatusen för alla komponenter i en hierarki som representerar alla flöden.

För att komma igång med din design rekommenderar vi att du följer dessa steg:

Viktigt!

Hälsomodellering är en omfattande övning. Metoden i det här avsnittet är avsedd att hjälpa dig att komma igång. Var omfattande när det gäller att tillämpa modellen på alla funktionella och icke-funktionella flöden i din verksamhetskritiska design för att få en helhetssyn på systemet.

1 – Starta hälsomodellering

Den här övningen är teoretisk. Hälsomodellering i en designaktivitet uppifrån och ned där du behöver en omfattande lista över komponenter som används i arkitekturen. Den här listan bör innehålla alla programkomponenter och Azure-tjänsterna.

Placera komponenterna i ett beroendediagram som visar en hierarkisk vy över lösningen. Det översta lagret har användarflöden som spårar begäran från slutanvändaren till webbplatsen och flödar på program-API-nivå. Det nedre lagret innehåller systemflödena från Azure-tjänsterna. Mappa även beroenden mellan Azure-resurserna.

Diagrammet bör se ut ungefär så här:

Diagram som visar ett beroendediagram för en hälsomodell.

Kontrollera förloppet: Hälsotillstånd för lagerbaserade program

2 – Definiera hälsopoängen

Samla in mått och måtttrösklar för varje komponent och bestäm sedan det värde som komponenten ska betraktas som felfri, degraderad och inte felfri. Det beslutet bör påverkas av förväntade prestanda och icke-funktionella affärskrav. Kategorisera dina mått som:

  • Programmått: Datapunkter från programkod, till exempel antalet undantag.

  • Tjänstmått: Datapunkter från Azure-tjänster, till exempel databastransaktionsenheter (DTU:er) som används.

  • Lösningsmått: Datapunkter på lösningsnivå, till exempel bearbetningstid från slutpunkt till slutpunkt för en begäran.

Här är ett exempel för Azure App Services:

App Services Hälsostatus
Svarstid < 200 ms
HTTP Server-fel < 2
Visar ett felfritt grönt tillstånd.
Svarstid < 500 ms
HTTP Server-fel < 2
Visar ett degraderat gult tillstånd.
Svarstid > 500 ms
HTTP Server-fel > 2
Visar ett felfritt rött tillstånd

3 – Definiera en övergripande hälsostatus

Definiera en övergripande status för varje användare och systemflöde. Du måste aggregera hälsostatusen för enskilda komponenter som deltar i flödet.

Anta att ett systemflöde består av en programkomponent, Azure App Service-plan och App Services.

API App Service-plan App Services Hälsostatus
Maximal svarstid < på 30 ms CPU % < 70 %
HTTP-kölängd < 5
Svarstid < 200 ms
HTTP Server-fel < 2
Sammansatt felfritt tillstånd visas som grönt.
Maximal svarstid < på 30 ms CPU % < 90 %
HTTP-kölängd < 5
Svarstid < 500 ms
HTTP Server-fel < 2
Sammansatt degraderat tillstånd visas som gult.
Maximal svarstid > på 30 ms CPU % > 90 %
HTTP-kölängd > 5
Svarstid > 500 ms
HTTP Server-fel > 2
Sammansatt feltillstånd visas som rött.

Hälsopoängen för ett användarflöde bör representeras av den lägsta poängen för alla mappade komponenter. För systemflöden använder du lämpliga vikter baserat på affärskritiskhet. Mellan de två flödena bör ekonomiskt betydande eller kundinriktade användarflöden prioriteras.

Kontrollera förloppet: Exempel – Hälsomodell i lager

4 – Samla in övervakningsdata

Du behöver en enhetlig datamottagare i varje region som samlar in loggar och mått för alla program- och plattformstjänster som distribueras som en del av den regionala stämpeln. Du behöver en annan mottagare för att lagra mått som genereras från globala resurser, till exempel Azure Front Door och Cosmos DB.

Diagram som visar datainsamling från olika program- och plattformstjänster.

Teknikval

  • Azure Application Insights: Används för att samla in all programtelemetri.
  • Azure Monitor-loggar: Samlar in data som skickas av Application Insights och plattformsmått för Azure-tjänster.
  • Azure Log Analytics: Används som det centrala verktyget för att analysera loggar och mått från alla program- och infrastrukturkomponenter.

Kontrollera förloppet: Enhetlig datamottagare för korrelerad analys

5 – Konfigurera frågor för övervakning av data

Kusto-frågespråk (KQL) är väl integrerat med Log Analytics. Implementera anpassade KQL-frågor som funktioner för att hämta data från Azure Monitor.

Lagra anpassade frågor på kodlagringsplatsen så att de importeras och tillämpas automatiskt som en del av dina CI/CD-pipelines (Continuous Integration/Continuous Delivery).

6 – Visualisera hälsostatusen

Du kan visualisera beroendediagrammet med hälsopoäng med en trafikljusrepresentation. Använd verktyg som Azure-instrumentpaneler, Övervaka arbetsböcker eller Grafana. Här är ett exempel:

Diagram som visar ett exempel på hälsopoäng i ett beroendediagram.

Kontrollera förloppet: Visualisering

7 – Konfigurera aviseringar om statusändringar

Du bör använda instrumentpaneler med aviseringar för att åtgärda problem omedelbart.

Om hälsotillståndet för en komponent ändras till Degraderad eller Inte felfri bör operatorn omedelbart meddelas. Ställ in aviseringar på rotnoden eftersom alla ändringar i den här noden indikerar feltillstånd i de underliggande användarflödena eller resurserna.

Kontrollera förloppet: Aviseringar

Kontrollera ditt arbete

Titta på den här demonstrationen om övervakning och hälsomodellering. Tog du upp alla aspekter i din design?

  • Har du en enhetlig datamottagare för korrelerad analys?
  • Har du inkluderat programloggar, plattformsmått och lösningsdatapunkter?
  • Har du konfigurerat instrumentpaneler för att visualisera hälsostatusen för alla komponenter?
  • Övervägde du felpunkter för varje tjänst (eller en del av den tjänsten) som kan orsaka ett avbrott eller hindra dig från att skala, distribuera, övervaka?
  • Har du funderat på frågepaket för att samla in viktiga frågor som skulle hjälpa dig att sortera problem snabbare?
  • Var api:et för hälsokontroll användbart i den här modellen? Behövde du ändra API:et för att bättre passa hälsomodellen?

Kunskapstest

1.

Vad behöver ingå i din hälsopoäng som representerar programmets övergripande hälsostatus?

2.

Vilken av dessa Azure-tjänster kan användas som en enhetlig datamottagare för telemetri och analys?