Dela via


Hälsomodellering för arbetsbelastningar

Molnprogram genererar stora mängder driftdata, vilket gör det svårt att snabbt hitta och lösa problem. En vanlig orsak till den här utmaningen är avsaknaden av en hälsobaslinje som är anpassad efter arbetsbelastningens funktioner och oförmågan att identifiera avdrift från baslinjen.

Hälsomodellering är en observerbarhetsövning som kombinerar affärskontext med rådata för övervakning av rådata för att kvantifiera den övergripande hälsan för en arbetsbelastning. Det hjälper dig att ange en baslinje som du kan övervaka arbetsbelastningen mot. Du bör överväga data som telemetri från infrastruktur- och programkomponenter. Hälsomodellering kan också innehålla annan information som är nödvändig för att uppnå arbetsbelastningens kvalitetsmål.

Prestandaproblem eller driftsförsämring kan orsaka driftavdrift från det förväntade driftstillståndet. Genom att modellera hälsotillståndet för en arbetsbelastning kan du identifiera driftavdrift och fatta välgrundade operativa beslut som beaktar affärspåverkan.

Hälsomodellering överbryggar klyftan mellan stamdriftskunskaper och användbara insikter. Det hjälper dig att hantera kritiska problem effektivt. Konceptet är viktigt för att maximera tillförlitligheten och driftseffektiviteten.

Den här guiden ger praktisk vägledning om hälsomodellering, inklusive hur du skapar en modell som utvärderar körningshälsan för en arbetsbelastning och alla dess undersystem.

Terminologi Definition
Hälsomodellering En observerbarhetsövning som använder affärskontext för att tolka övervakningsdata som hälsotillstånd.
Hälsomodell En grafisk representation av logiska entiteter och deras relationer för ett visst omfång. Varje nod har en hälsotillståndsdefinition för att rationalisera övervakningsdata i modellen.
Hälsoentitet En logisk komponent som representerar en enskild enhet i ett system, en logisk kombination av flera relaterade entiteter eller det övergripande systemet.
Hälsotillstånd En definierad och mätbar status som ger meningsfulla operativa insikter om hälsotillståndet för en entitet.
Hälsosignal Enskilda dataströmmar som ger insikter om driftsbeteendet för en entitet.
Modell av modeller Ett aggregerat modelleringsomfång där entiteter representerar distinkta hälsomodeller för komponentsystem.

Vi rekommenderar att du watch den här videon för att få en övergripande förståelse för hälsomodellering.

Vad är hälsa, hälsomodellering och en hälsomodell?

Termen hälsa refererar till driftstatusen för en entitet och dess beroenden. Entiteten kan vara en enskild enhet i ett system, en logisk kombination av flera relaterade entiteter eller det övergripande systemet.

Vi rekommenderar att du representerar hälsa i ett av tre tillstånd:

  • Felfri: Fungerar optimalt och uppfyller kvalitetsförväntningarna

  • Degraderad: Uppvisar mindre än felfritt beteende, vilket indikerar potentiella problem

  • Inte felfri: I ett kritiskt tillstånd och kräver omedelbar uppmärksamhet

Anteckning

Du kan representera hälsa med en poäng i stället för tillstånd för att ge mer datakornighet.

Hälsotillstånd härleds genom att kombinera övervakningsdata med domäninformation. Varje tillstånd måste definieras och måste vara mätbart. Hälsotillstånd beräknas med hjälp av hälsosignaler, som är enskilda dataströmmar som ger insikter om en entitets operativa beteende. Signaler kan vara mått, loggar, spårningar eller andra kvalitetsegenskaper. En hälsosignal för en virtuell dator (VM) kan till exempel spåra måttet för CPU-användning. Andra signaler för den här entiteten kan vara minnesanvändning, nätverksfördröjning eller felfrekvens.

När du definierar hälsosignaler tar du hänsyn till de icke-funktionella kraven för arbetsbelastningen. I exemplet med CPU-användning inkluderar du de förväntade tröskelvärdena för varje hälsotillstånd. Om användningen överskrider det tolererade tröskelvärdet i enlighet med arbetsbelastningskraven övergår systemet från Felfri till Degraderad eller Ej felfri. Dessa tillståndsändringar utlöser lämpliga aviseringar eller åtgärder.

Hälsomodellering kräver att entiteter har väldefinierade tillstånd som härleds från flera hälsosignaler och kontextualiseras för arbetsbelastningen. Hälsodefinitionen för en virtuell dator kan till exempel vara:

  • Felfri: Viktiga icke-funktionella krav och mål, till exempel svarstid, resursanvändning och övergripande systemprestanda, är helt uppfyllda. Till exempel bearbetas 95 % av begäranden inom 500 millisekunder. Arbetsbelastningen använder virtuella datorresurser som CPU, minne och lagring optimalt och upprätthåller en balans mellan arbetsbelastningskrav och tillgänglig kapacitet. Användarupplevelsen är på förväntade nivåer.

  • Degraderad: Resurserna fungerar inte optimalt men fungerar fortfarande. Lagringsdisken har till exempel problem med begränsningen. Användarna kan få långsamma svar.

  • Ej felfri: Försämringen överskrider de tolererade gränserna. Resurser är inte längre responsiva eller tillgängliga och systemet uppfyller inte längre godtagbara prestandanivåer. Användarupplevelsen påverkas allvarligt.

Resultatet av hälsomodellering är en modell eller en grafisk representation av logiska entiteter och deras relationer för en arbetsbelastningsarkitektur. Varje nod har en hälsotillståndsdefinition.

Viktigt

Hälsomodellering är ett abstrakt begrepp som du kan implementera och tillämpa i olika omfång om du har en god förståelse för affärsscenarierna.

Ett diagram som visar definitionen för hälsomodell.

I bilden:

  • Entiteter är logiska komponenter i arbetsbelastningen som representerar aspekter av systemet. De kan vara infrastrukturkomponenter som servrar, databaser och nätverk. De kan också vara specifika programmoduler, poddar, tjänster eller mikrotjänster. Entiteter kan också samla in användarinteraktioner och systemflöden i arbetsbelastningen.

    Anteckning

    Användar- och systemflöden sammanfattar icke-funktionella krav i affärsscenarier som omfattar program- och infrastrukturkomponenter. Den här sammanfattningen visar affärsvärdet för programmet.

  • Relationer mellan entiteter speglar beroendekedjorna i systemet. En programmodul kan till exempel anropa specifika infrastrukturkomponenter som utgör en relation.

Tänk dig ett scenario där en e-handelsarbetsbelastning upplever en ökning av misslyckade meddelanden i en Azure Service Bus kö, vilket gör att betalningar misslyckas. Det här problemet är kritiskt för organisationen på grund av den underförstådda intäktsförlusten. Även om en programutvecklare kanske förstår effekten av den här måtttopparna på betalningar, delas inte den här stamkunskapen ofta i driftteamet.

En hälsomodell kan ge operatörer omedelbar insyn i problemet och dess effekter. Betalningsflödet beror på Service Bus, som är en av arbetsbelastningskomponenterna. Den visuella representationen visar det försämrade tillståndet för Service Bus-instansen och dess effekt på betalningsflödet. Operatörer kan förstå problemets betydelse och fokusera sina reparationsåtgärder på den specifika komponenten.

Hälsomodellering var viktigt i föregående scenario på följande sätt:

  • Det förbättrade tiden att identifiera (TTD) och tid att minimera (TTM) genom att aktivera snabbare problemisolering, vilket ledde till snabbare identifiering av problem och potentiella korrigeringar.

  • Operatörerna fick aviseringar baserat på hälsotillstånd, vilket minskade onödigt brus. Operatörerna fick meddelanden som gav specifik kontext om verksamhetens inverkan på betalningarna.

  • Beroendekedjor hjälpte operatörerna att fullt ut förstå omfattningen av driftsproblem. Den här kunskapen påskyndade konsekvensbedömningar och ledde till prioriterade svar. Operatörerna kan också enkelt identifiera sammanhängande eller korrelerade problem.

  • Operatörerna utförde aktiviteter efter incident med noggrannhet eftersom hälsomodellen gav insikter om de bakomliggande orsakerna till avvikelser och de specifika hälsosignaler som var inblandade.

  • Det gjorde övervakningsdata meningsfulla för alla teammedlemmar. Det överbryggade klyftan mellan stamkunskaper och delade insikter.

  • Organisationen använde hälsomodellen som baslinje för framtida investeringar i AI-drivna åtgärder för att härleda intelligenta insikter.

Schema för hälsomodell

Hälsomodeller ger ett distinkt dataschema som är optimerat för observerbarhetsanvändning. Det här schemat tar hälsomodellering från ett abstrakt begrepp till en mätbar lösning. Genom att modellera dina specifika krav, mål och arkitekturkontext kan du anpassa hälsodata till ditt unika scenario.

Ett diagram som visar hälsotillståndsdefinitionen.

Hälsa är ett relativt datakoncept. Varje modell representerar hälsodata som är unika och prioriterade för dess kontextuella omfång, även om den använder samma uppsättning entiteter. Vad som är felfritt i ett specifikt scenario kan skilja sig avsevärt i andra sammanhang.

Överväg till exempel Azure-resurser av samma typ i din arbetsbelastning.

  • VM A kör ett CPU-känsligt program.
  • Den virtuella datorn B hanterar en minnesintensiv tjänst.

Hälsodefinitionerna för dessa datorer skiljer sig åt. Mått för CPU-användning påverkar sannolikt den virtuella datorn A:s hälsostatus och vm B kan prioritera minnesrelaterade mått.

Viktigt

En hälsomodell bör inte behandla alla fel på samma sätt. Den bör tydligt skilja mellan förväntade eller tillfälliga men återställningsbara fel och ett verkligt katastroftillstånd.

Skapa en hälsomodell

Det första steget för att skapa en hälsomodell är en logisk designövning, som vanligtvis omfattar de aktiviteter som beskrivs i följande avsnitt.

Ett diagram som visar aktiviteter för hälsomodellering.

Utvärdera din arbetsbelastningsdesign

Påbörja den här logiska designövningen genom att utvärdera följande komponenter i din arbetsbelastningsdesign.

  • Infrastrukturkomponenter som beräkningskluster och databaser

  • Programkomponenter som körs på beräkning och deras relevanta komponenter

  • Logiska eller fysiska beroenden mellan komponenter

  • Användar- och systemflöden

Hälsomodellen för ett e-handelsprogram bör till exempel representera det aktuella tillståndet för kritiska processer som användarinloggning, utcheckning och betalningar.

Kontextualisera med hjälp av affärskrav

Utvärdera den relativa betydelsen och den övergripande effekten av varje flöde på din organisation. Överväg faktorer som användarupplevelse, säkerhet och driftseffektivitet. I de flesta fall är till exempel fel i en betalningsprocess sannolikt mer betydande än fel i en rapporteringsprocess.

Identifiera eskaleringsvägar för hantering av problem som rör varje flöde. Mer information finns i Optimera arbetsbelastningsdesign med hjälp av flöden.

Anteckning

Du inser bara värdet av hälsomodellering när du införlivar dina affärsscenarier och kontext. Sedan kan du rationalisera affärspåverkan från driftsproblem.

Mappa till tillförlitlighetsmått

Leta efter relevanta tillförlitlighetsmått i programdesignen.

Överväg att definiera servicenivåindikatorer (SLI: er) och servicenivåmål (SLO) för hela programmet och dess enskilda affärsprocesser. Dessa SLO:er och SLO:er bör överensstämma med de specifika hälsosignaler som beaktas för din hälsomodell. Genom att göra det skapar du en omfattande definition av hälsa som korrekt återspeglar uppnåendet av en acceptabel tjänstnivå för programmet.

Viktigt

SLO:er och SLO:er är kritiska hälsosignaler. De skapar en meningsfull definition av hälsa som återspeglar den tjänstnivå som du vill ha tillsammans med andra kvalitetsattribut. Du kan också definiera tjänsthälsomål (SHO: er) för att samla in den hälsa som du vill uppnå över ett aggregerat tidsintervall.

Identifiera hälsosignaler

Om du vill skapa en omfattande hälsomodell korrelerar du olika typer av övervakningsdata, inklusive mått, loggar och spårningar. Genom att göra det ser du till att hälsobegreppet korrekt återspeglar körningstillståndet för en viss entitet eller hela arbetsbelastningen.

Använda plattformsmått och loggar

När det gäller hälsomodellering är det viktigt att samla in mått och loggar på plattformsnivå från underliggande Azure-resurser. Dessa mått omfattar cpu-procent, nätverk in och nätverk ut och diskåtgärder per sekund. Du kan använda dessa data i din hälsomodell för att identifiera och förutsäga potentiella problem samtidigt som du upprätthåller en tillförlitlig miljö.

Dessutom hjälper den här metoden dig att skilja mellan tillfälliga fel eller tillfälliga störningar och icke-övergående fel eller beständiga problem.

Anteckning

Vi rekommenderar att du konfigurerar alla programresurser för att dirigera diagnostikloggar och mått till den valda loggaggregeringstekniken. Skapa skyddsräcken med hjälp av Azure Policy för att säkerställa konsekventa diagnostikinställningar i hela programmet och framtvinga den valda konfigurationen för varje Azure-tjänst.

Lägga till programloggar

Programloggar är en viktig källa till diagnostikdata för din hälsomodell. Här följer några metodtips för programloggning:

  • Använd semantisk eller strukturerad loggning. Strukturerade loggar underlättar automatisk förbrukning och analys av loggdata i stor skala.

    Överväg att lagra Azure-resursmått och diagnostikdata på en Azure Monitor Logs-arbetsyta i stället för ett lagringskonto. Med den här metoden kan du skapa hälsosignaler med hjälp av Kusto-frågor för effektiv utvärdering.

  • Logga data i produktionsmiljön. Samla in omfattande data medan programmet körs i produktionsmiljön. Tillräcklig information är nödvändig för hälsoutvärdering och för att diagnostisera eventuella identifierade produktionsproblem.

  • Logga händelser vid tjänstgränser. Inkludera ett korrelations-ID som passerar tjänstgränser. Om en transaktion omfattar flera tjänster och en av dem misslyckas kan korrelations-ID:t hjälpa dig att spåra begäranden i hela programmet och identifiera orsaken till felet.

  • Använd asynkron loggning. Undvik synkrona loggningsåtgärder som kan blockera programkod. Asynkron loggning säkerställer tillgänglighet genom att förhindra kvarvarande begäranden under loggskrivningar.

  • Separera programloggning från granskning. Underhåll granskningsloggar separat från diagnostikloggar. Även om granskningsposterna uppfyller efterlevnads- eller regelkrav förhindrar hållande av distinkta transaktioner att transaktioner tas bort.

Implementera distribuerad spårning

Implementera distribuerad spårning genom att korrelera telemetri över kritiska systemflöden. Korrelerad telemetri ger insikter om transaktioner från slutpunkt till slutpunkt och är viktigt för effektiv rotorsaksanalys (RCA) när fel inträffar.

Använda hälsoavsökningar

Implementera och köra hälsoavsökningar utanför programmet för att uttryckligen kontrollera programmets hälsa och svarstider. Använd avsökningssvar som signaler i din hälsomodell.

Du kan implementera hälsoavsökningar genom att mäta svarstiden från programmet som helhet eller från dess enskilda komponenter. Avsökningar kan köra processer för att mäta svarstid och kontrollera tillgänglighet eller extrahera information från programmet. Mer information finns i Hälsoslutpunktsövervakningsmönster.

De flesta lastbalanserare stöder körning av hälsoavsökningar som pingar programslutpunkter med konfigurerade intervall. Du kan också använda en extern övervakningstjänst. En övervakningstjänst aggregerar hälsokontroller från flera komponenter i arbetsbelastningen. Vakthundar kan också vara värdar för kod som omedelbart åtgärdar kända hälsotillstånd.

Använda strukturella och funktionella övervakningstekniker

Strukturell övervakning innebär att programmet utrustas med semantiska loggar och mått. Programmet samlar in dessa mått direkt, som omfattar aktuell minnesförbrukning, svarstid för begäranden och andra relevanta data på programnivå.

Stärka dina övervakningsprocesser med hjälp av funktionell övervakning. Den här metoden fokuserar på att mäta plattformstjänster och deras effekt på den övergripande användarupplevelsen. Till skillnad från strukturell övervakning kräver funktionell övervakning inte detaljerad kunskap om systemet. Den testar programmets externt synliga beteende. Den här metoden är användbar för att utvärdera SLO:er och SLO:er.

Modellera designen

Representera den identifierade programdesignen som entiteter och relationer. Mappa hälsosignaler till specifika komponenter för att kvantifiera hälsotillstånd på en entitetsnivå. Överväg kritiska komponenter för att avgöra hur hälsotillstånd ska spridas via modellen. Rapporteringskomponenter kanske till exempel inte är lika kritiska som andra komponenter, vilket resulterar i olika effekter på den övergripande arbetsbelastningens hälsa.

Ange åtgärdsbara aviseringar

Använd de utvärderade hälsotillstånden för att utlösa aviseringar och automatiserade åtgärder. Hälsa bör integreras i befintliga operativa runbooks som en grundläggande observability data tenet.

Vanligtvis finns det en en-till-en-mappning mellan övervakningsdata och aviseringsregler, vilket kan leda till oönskade resultat, till exempel aviseringsstormar och omgivande aviseringsbrus. I ett beräkningskluster kan till exempel stora volymer av aviseringar på VM-nivå baserat på CPU-användning och antal fel överbelasta operatörer vid fel och orsaka fördröjningar i upplösningen. På samma sätt, när det finns ett stort antal konfigurerade aviseringar, resulterar omgivande aviseringsbrus ofta i aviseringar som förbises eller ignoreras.

En hälsomodell introducerar separation mellan övervakningsdata och aviseringsregler. En hälsodefinition aggregerar många signaler till ett enda hälsotillstånd, vilket minskar antalet aviseringar så att operatörerna enbart kan fokusera på aviseringar med högt värde som är kritiska för organisationen. Tänk på e-handelsscenariot. Du kan konfigurera en avisering för att skicka meddelanden om ändringar i processens betalningsflödeshälsa i stället för ändringar i underliggande resurser som Service Bus-kön.

Anteckning

Möjligheten att avisera över alla lager i hälsomodellen ger flexibilitet för de olika arbetsbelastningspersonerna. Programägare och produktansvariga kan få aviseringar om hälsotillståndsändringar i viktiga affärsscenarier eller i hela arbetsbelastningen. Operatörer kan aviseras baserat på hälsotillståndet för infrastruktur- eller programkomponenter.

Visualisera modellen

Skapa visuella representationer, till exempel tabeller eller grafer, för att effektivt förmedla hälsomodellens aktuella tillstånd och historik. Se till att visualiseringen överensstämmer med affärskontexten och ger användbara insikter.

När du visualiserar din hälsomodell bör du överväga att använda en trafiklätt metod för att göra hälsotillstånd omedelbart insiktsfulla i beroendekedjor.

Tilldela grönt för felfri, bärnsten för degraderad och röd för ej felfri. Genom att snabbt identifiera de färgkodade tillstånden kan du effektivt hitta rotorsaken till programförsämring.

Diagrammet visar en hälsomodell som använder en trafikljusmetod.

Anteckning

Vi rekommenderar att du överväger tillgänglighetskrav för personer med nedsatt syn när du skapar en instrumentpanel för din hälsomodell. Metodtips för diagram finns i Arkitekturdesigndiagram.

Anta din hälsomodell

När du har skapat en hälsomodell bör du överväga följande användningsfall för att öka identifieringen och tolkningen av fel eller driftproblem.

Tillämplighet för olika roller

Hälsomodellering kan ge information som är specifik för jobbfunktioner eller roller inom samma kontext för arbetsbelastningen. En DevOps-roll kan till exempel behöva hälsoinformation om driften. En säkerhetsansvarig kan vara mer oroad över intrångssignaler och säkerhetsexponering. En databasadministratör är förmodligen bara intresserad av en delmängd av programmodellen via databasresurserna.

Skräddarsy hälsoinsikter för olika intressenter. Överväg att skapa separata modeller från överlappande datauppsättningar.

Kontinuerlig validering

Använd din hälsomodell för att optimera testnings- och valideringsprocesser, till exempel belastningstestning och kaostestning. Du kan verifiera körningens drifttillstånd under testningen och utvärdera modellens effektivitet i skalnings- och felscenarier genom att införliva hälsomodeller i din tekniska livscykel.

Organisationshälsa

Även om hälsomodellering ofta associeras med kvantifiering av hälsotillstånd för enskilda program, sträcker sig dess tillämplighet utanför det omfånget.

På en enskild arbetsbelastningsnivå utgör hälsomodeller en grund för programobservabilitet och driftinsikter. Varje program kan ha en egen hälsomodell som registrerar vad varje hälsotillstånd innebär i sitt sammanhang.

Du kan kombinera flera hälsomodeller i en högnivåkonstruktion genom att skapa en modell av modeller. Du kan till exempel skapa ett observerbarhetsfotavtryck för en affärsenhet eller en hel molnegendom genom att använda hälsomodeller som komponenter i en större modell. Hälsomodeller representerar arbetsbelastningar i egendomen som noder i diagrammet på den översta nivån. Använd relationerna i den här modellen för att samla in beroenden mellan program, inklusive dataflöden, tjänstinteraktioner och delad infrastruktur.

Överväg ett detaljhandelsföretag som har olika program för e-handel, betalningar och orderbearbetning. Du kan definiera vart och ett av dessa program som en oberoende hälsomodell för att kvantifiera vad hälsa innebär för den arbetsbelastningen. Du kan sedan använda en överordnad modell för att mappa alla dessa komponenthälsomodeller som entiteter och samla in driftpåverkan mellan program via beroendekedjor. Om t.ex. e-handelsprogrammet blir felfritt har det en sammanhängande effekt på betalningsprogrammet.

Hälsomodellering ger en kvantifierad operativ baslinje som är anpassad till en specifik affärskontext. AI för IT-drift (AIOps) är ett populärt sätt att förbättra driftseffektiviteten. Hälsodata är grundläggande indata för maskininlärningsmodeller för att analysera hälsotrender. Maskininlärningsmodeller kan till exempel:

  • Extrahera fler insikter från tillståndsändringar och rekommendera åtgärder.

  • Analysera hälsotrender över tid för att driva problemförutsägelse och modellförfining.

Underhålla din hälsomodell

Att underhålla en hälsomodell är en kontinuerlig teknisk aktivitet som överensstämmer med programmets utveckling och drift. När ditt program utvecklas bör du se till att din hälsomodell utvecklas parallellt.

Behandla även hälsomodeller som arbetsbelastningsartefakter som ska integreras i utvecklingslivscykeln. Implementera infrastruktur som kod (IaC) för konsekvent, versionskontrollerad hantering av din hälsomodell. Använd automatisering så att modellen förblir uppdaterad när du lägger till eller tar bort infrastruktur- och programkomponenter från arbetsbelastningen.

Hälsodata minskar gradvis i värde över tid. För att optimera driftseffektiviteten och minimera kostnaderna bör du undvika att behålla hälsodata längre än 30 dagar. Om det behövs kan du arkivera data för att uppfylla granskningskrav eller i scenarier som omfattar långsiktig mönsteranalys i AI för IT-åtgärder.

Anteckning

När du arkiverar hälsodata måste du koppla dem till modellens konfigurationstillstånd. Det kan vara svårt att tolka tillståndsändringar utan den här kontexten.

Nästa steg