Rekommendationer för insamling av prestandadata

Gäller för denna checklista för Prestandaeffektivitet för Azure Well-Architected Framework:

PE:04 Samla in prestandadata. Arbetsbelastningskomponenter och flöden bör tillhandahålla automatiska, kontinuerliga och meningsfulla mått och loggar. Samla in data på olika nivåer av arbetsbelastningen, till exempel program-, plattforms-, data- och operativsystemnivåer.

Insamling av prestandadata är en process för att samla in mått och loggar som ger information om prestanda för en arbetsbelastning. Dessa data innehåller numeriska värden, som kallas mått. Mått beskriver systemets tillstånd vid en viss tidpunkt. Den innehåller även loggar som innehåller olika typer av data ordnade i poster.

Genom att samla in prestandadata kan du övervaka och analysera prestanda för en arbetsbelastning. Du kan använda den här informationen för att identifiera flaskhalsar i prestanda, felsöka problem, optimera resursallokering och fatta datadrivna beslut för att förbättra den övergripande prestandaeffektiviteten för arbetsbelastningen.

Utan datadrivna insikter kanske du inte känner till underliggande prestandaproblem eller möjligheter till optimering. Potentiella resultat inkluderar långsammare svarstider, minskat dataflöde, ökad resursanvändning och i slutändan en icke-optimal användarupplevelse. Bristen på prestandadata gör det dessutom svårt att diagnostisera och felsöka problem i tid, vilket leder till långa driftstopp och minskad produktivitet.

Definitioner

Period Definition
Aktivitetsloggar Loggar som spårar hanteringsåtgärder för resurser, till exempel att ta bort en resurs.
Programloggar Loggar som spårar information om programhändelser, fel och andra aktiviteter, till exempel använda inloggningar och databasanslutningsfel.
Verktyg för övervakning av programprestanda (APM) Ett verktyg som övervakar och rapporterar prestanda för ett program.
Kodinstrumentation Direkt eller indirekt avbildning av prestandamått ur programkodens perspektiv. Insamlade mått omfattar flödesmått, resursanvändning och mått som är specifika för språket eller körningen.
Distribuerad spårning Samla in och korrelera mått över distribuerade arbetsbelastningskomponenter.
Måttmottagare Ett lagringsmål för dina mått som korrelerar tidsseriedata för analys.
Plattformsloggar Diagnostik- och granskningsdata som innehåller resursloggar, aktivitetsloggar och granskningsloggar.
Plattformsmått Numeriska värden som registrerar arbetsbelastningsprestanda vid en viss tidpunkt.
Resursloggar Data som ett system genererar. Den innehåller information om systemets tillstånd.
Rx/Tx-fel Antalet mottagningsfel och överföringsfel i ett nätverksgränssnitt.
Strukturerad loggning Definiera ett meningsfullt format för att logga meddelanden, vanligtvis som nyckel/värde-par.

Viktiga designstrategier

Prestandaoptimering kräver data för att mäta den aktuella prestandan för en arbetsbelastning eller ett flöde mot dess prestandamål. Du måste samla in rätt mängd och mångfald av data för att mäta kodens prestanda och infrastrukturen mot prestandamål. Se till att varje komponent och flöde i arbetsbelastningen automatiskt genererar kontinuerliga och meningsfulla mått och loggar. Du måste hämta dessa data från olika nivåer, till exempel program, plattform, lagring och operativsystem. Omfattande insamling av prestandadata möjliggör en holistisk förståelse av prestanda, vilket möjliggör exakt identifiering av ineffektivitet och vägar för förbättring.

Centralisera prestandadata

Centralisering av prestandamått och loggar är processen att samla in prestandamått och loggar från olika källor och lagra dem på en central plats. Skapa en central måttmottagare och en central loggmottagare. Med den här centraliseringen kan du enkelt komma åt, analysera och övervaka prestandamått och loggar i olika system och komponenter. Genom att centralisera mått och loggar får du insyn i arbetsbelastningens prestanda. Välj en lämplig plattform eller ett verktyg som kan aggregera och lagra prestandamått och loggar för arbetsbelastningar.

Kompromiss: Förstå kostnaden för att samla in mått och loggar. I allmänhet, ju fler mått och loggar du samlar in, desto högre blir kostnaden.

Segmentera prestandadata

Segmentering av prestandadata omfattar organisering och kategorisering av mått och loggar baserat på deras ursprung, syfte eller miljö. Du bör till exempel separera produktionsdata från icke-produktionsdata eller skilja mellan prestandamål och affärsmått. Genom att segmentera data kan du optimera specifika miljöer, underlätta felsökning och begränsa felaktigheter i prestandaövervakningen. Genom att upprätthålla en tydlig skillnad mellan olika datatyper kan du samla in, analysera och svara på relevanta mått mer effektivt och bättre anpassa arbetsbelastningens hälsa till arbetsbelastningsmålen. Om du vill segmentera prestandadata bör du överväga följande rekommendationer:

  • Håll produktionsdata och icke-produktionsdata åtskilda. Genom att separera data efter miljö kan du säkerställa fokuserad övervakning och optimering av varje miljö. I produktionsmiljöer kan du bättre identifiera och åtgärda prestandaproblem som direkt påverkar användare och affärsverksamhet. I icke-produktionsmiljöer underlättar dataavgränsningen effektiv felsökning och finjustering under testfasen innan du distribuerar till produktion.

  • Använd en uppsättning data i varje miljö. Använd inte en uppsättning data för prestandamål och en annan uppsättning data för aviseringar som är relaterade till prestandamålen. Användning av olika datauppsättningar leder till felaktiga aviseringar som undergräver effektiviteten i prestandaövervakningen.

  • Avgränsa prestandamål och affärsmått. Drift- och utvecklingsteamen använder prestandamål för att övervaka arbetsbelastningens hälsa och uppfylla affärsmålen. Affärsmått relaterar till affärsmål eller kundrapportering. Samla in affärsmått i en separat dataström, även om data överlappar direkt. Separationen ger dig flexibilitet att samla in rätt data och analysera data oberoende av varandra.

Definiera kvarhållningsprinciper

Kvarhållningsprinciper avgör hur länge prestandadata ska behållas. Genom att upprätta dessa principer kan du hantera lagringen effektivt och ser till att endast nödvändiga data är tillgängliga för analys. Sådana principer stöder bättre prestanda och uppfyller efterlevnadsstandarder. Du bör konfigurera kvarhållningsprinciper för logg- och måttdata för att möjliggöra effektiv felsökning och övervakning i alla miljöer. Loggarna och måtten kan till exempel behöva sparas längre i en produktionsmiljö än i testmiljön. Kvarhållningsperioden bör matcha organisationens krav och efterlevnadsregler. Bestäm hur länge data ska behållas i analys- och granskningssyfte. Arkivera de data som du inte behöver för omedelbar analys.

Samla in programprestandadata

Insamling av programdata omfattar övervakning och analys av ett programs prestandamått, till exempel dataflöde, svarstid och slutförandetider, som främst samlas in via instrumenteringskod. Programprestandadata ger värdefulla insikter om hälsotillstånd och prestanda för ett program. Genom att övervaka och analysera prestandadata kan du identifiera och felsöka problem, optimera programprestanda och fatta välgrundade beslut för ditt program.

Instrumentkod

Instrumentation syftar på processen att bädda in kodfragment eller integrera verktyg i en programkod. Syftet med instrumentation är att samla in prestandadata medan programmet körs. Det är viktigt att samla in mått som belyser programmets kritiska åtgärder. Fokusera på mått som dataflöde, svarstid och slutförandetid. Det är viktigt att skilja mellan affärsrelaterade åtgärder och åtgärder som inte är det. För data som rör affärsåtgärder kontrollerar du att dess metadata är strukturerade på ett sätt som möjliggör distinkt spårning och lagring. Den främsta orsaken till kodinstrumentation är att samla in data om hur programmet hanterar sin arbetsbelastning. Det ger följande fördelar:

  • Identifiera prestandaflaskhalsar: Genom att spåra mått som cpu-användning och minnesanvändning kan du identifiera flaskhalsar och optimera koden därefter.

  • Utvärdera systembeteende under en belastning: Du kan se hur programmet presterar under olika arbetsbelastningar och stressscenarier. Dessa data kan hjälpa dig att identifiera problem som rör skalbarhet, samtidighet och resursanvändning.

  • Spåra programmets hälsa och tillgänglighet: Eftersom viktiga prestandaindikatorer övervakas i realtid kan du få aviseringar om potentiella problem som påverkar programmets prestanda och tillgänglighet.

  • Förbättra användarupplevelsen: Du kan få insikter om hur användare interagerar med programmet. Använd den här informationen för att optimera användarupplevelsen och identifiera förbättringsområden.

  • Planera kapacitet och allokera resurser: De prestandadata som instrumentationen samlar in kan ge värdefulla insikter om resurskraven för ett program. Den här informationen kan informera dina beslut om att planera kapacitet och allokera resurser.

När du instrumentera kod för prestandaövervakning bör du överväga följande strategier:

  • Använd APM-verktyg: APM-verktyg kan samla in och analysera prestandadata, inklusive mått, spårningar och loggar. APM-verktyg erbjuder funktioner som instrumentering på kodnivå, transaktionsspårning och prestandaprofilering.

  • Använd ramverk för loggning och spårning: Loggning och spårningsramverk är verktyg eller bibliotek som utvecklare integrerar i sina program för att underlätta loggning och spårning. Dessa ramverk tillhandahåller funktioner för att generera loggar, spårningsbegäranden och ibland även formatera eller transportera genererade data. Genom att införliva loggnings- och spårningsramverk i kodbasen kan utvecklare samla in relevanta data under körningen. Data kan innehålla information om sökvägen, I/O och prestanda.

  • Anpassad instrumentation: Utvecklare kan lägga till anpassad kod för att samla in prestandamått som är unika för deras program och arbetsbelastning. Den anpassade instrumentationen kan mäta körning, spåra resursanvändning eller samla in specifika händelser. Skriv endast anpassad kodinstrumentation när plattformsmåtten är otillräckliga. I vissa situationer kan plattformsresursen mäta aggregerade eller till och med detaljerade perspektiv för ditt program. Väg frågan om du vill duplicera den här ansträngningen genom att använda anpassad kod mot överskjutande kodavvägningar eller beroende av en plattformsfunktion.

  • Avbilda transaktionstider. Att samla in transaktionstider handlar om att mäta tiden från slutpunkt till slutpunkt för viktiga tekniska funktioner som en del av prestandaövervakningen. Mått på programnivå bör innehålla transaktionstider från slutpunkt till slutpunkt. Dessa transaktionstider bör omfatta viktiga tekniska funktioner som databasfrågor, svarstider för externa API-anrop och felfrekvenser för bearbetningssteg.

  • Använd telemetristandarder. Överväg att använda APM-verktygsinstrumentationsbibliotek och verktyg som är byggda kring en telemetristandard, till exempel OpenTelemetry.

Aktivera distribuerad spårning

Distribuerad spårning är en teknik som används för att spåra och övervaka begäranden när de flödar genom ett distribuerat system. Det gör att du kan spåra sökvägen för en begäran när den färdas över flera tjänster och komponenter, vilket ger värdefulla insikter om prestanda och effektivitet för din arbetsbelastning. Distribuerad spårning är viktigt för prestandaeffektivitet eftersom det hjälper till att identifiera flaskhalsar, problem med svarstider och områden för optimering i ett distribuerat system. Du kan fastställa var fördröjningar eller ineffektivitet inträffar och vidta lämpliga åtgärder för att förbättra prestanda genom att visualisera flödet för en begäran. Följ dessa steg för att aktivera distribuerad spårning:

  1. Börja med att instrumentera dina program och tjänster för att generera spårningsdata. Använd bibliotek eller ramverk som stöder distribuerad spårning, till exempel OpenTelemetry.

  2. Se till att spårningsinformation sprids över tjänstgränser. Du bör vanligtvis skicka ett unikt spårnings-ID och annan kontextuell information med varje begäran.

  3. Konfigurera ett centraliserat spårningsinsamlingssystem. Det här systemet samlar in och lagrar spårningsdata som genereras av dina program och tjänster.

  4. Använd spårningsdata som samlas in för att visualisera flödet från slutpunkt till slutpunkt för begäranden och analysera prestandaegenskaperna för ditt distribuerade system.

Samla in programloggar

När du instrumentkodar ska en av de primära utdata vara programloggar. Loggning hjälper dig att förstå hur programmet körs i olika miljöer. Programloggar registrerar de villkor som genererar programhändelser. Samla in programloggar i alla programmiljöer. Motsvarande loggposter i programmet bör avbilda ett korrelations-ID för respektive transaktioner. Korrelations-ID:t bör korrelera programlogghändelser över kritiska programflöden, till exempel användarinloggning. Använd den här korrelationen för att utvärdera hälsotillståndet för viktiga scenarier i kontexten för mål och icke-funktionella krav.

Du bör använda strukturerad loggning. Strukturerad loggning påskyndar loggparsing och analys. Det gör loggarna enklare att indexeras, köra frågor mot och rapportera utan komplexitet. Lägg till och använd ett strukturerat loggningsbibliotek i programkoden. Ibland kan loggposter hjälpa dig att korrelera data som du inte kunde korrelera på annat sätt.

Samla in resursprestandadata

Genom att samla in resursprestandadata kan du få insikter om arbetsbelastningens hälsa och beteende. Resursprestandadata innehåller information om resursanvändning, vilket är nyckeln för kapacitetsplanering. Dessa data ger också insikter om hälsotillståndet för en arbetsbelastning och kan hjälpa dig att identifiera problem och felsöka. Överväg följande rekommendationer:

  • Samla in mått och loggar för varje resurs. Varje Azure-tjänst har en uppsättning mått som är unika för resursens funktioner. Dessa mått hjälper dig att förstå resursens hälsa och prestanda. Lägg till en diagnostikinställning för varje resurs för att skicka mått till en plats som ditt arbetsbelastningsteam kan komma åt när de skapar aviseringar och instrumentpaneler. Måttdata är tillgängliga för kortsiktig åtkomst. För långsiktig åtkomst eller för åtkomst från ett system som ligger utanför Azure Monitor skickar du måttdata till din enhetliga mottagare till åtkomstplatsen.

  • Använd plattformsverktyg. Samla inspiration från inbyggda och integrerade övervakningslösningar, till exempel Azure Monitor Insights. Det här verktyget effektiviserar prestandaåtgärderna. Överväg plattformsverktyg när du väljer en plattform och investerar i anpassade verktyg eller rapportering.

  • Övervaka nätverkstrafik. Övervakning av nätverkstrafik innebär att spåra och analysera flödet och datamönstren när de rör sig över nätverksvägar. Samla in trafikanalys och övervaka trafiken som passerar undernätsgränser. Målet är att analysera och optimera nätverksprestanda.

Samla in databas- och lagringsdata

Många databas- och lagringssystem tillhandahåller egna övervakningsverktyg. Dessa verktyg samlar in prestandadata som är specifika för dessa system. Databas- och lagringssystem genererar ofta loggar som innehåller prestandarelaterade händelser och indikatorer. Samla in data och lagringsprestandadata så att du kan identifiera flaskhalsar, diagnostisera problem och fatta välgrundade beslut för att förbättra arbetsbelastningens övergripande prestanda och tillförlitlighet. Överväg att samla in följande typer av prestandadata:

  • Dataflöde: Dataflödet mäter mängden data som lästs från eller skrivits till lagringssystemet under en tidsperiod. Dataflödesdata anger dataöverföringsfunktionerna.

  • Svarstid: Svarstiden mäter hur länge lagringsåtgärderna varar. Svarstidsdata anger lagringssystemets svarstider.

  • IOPS (I/O-åtgärder per sekund): Data om antalet läsåtgärder eller skrivåtgärder som lagringssystemet kan utföra på en sekund. IOPS-data anger lagringssystemets dataflöde och svarstider.

  • Kapacitetsanvändning: Kapacitetsanvändning är den mängd lagringskapacitet som används och den mängd som är tillgänglig. Kapacitetsanvändningsdata hjälper organisationer att planera för framtida lagringsbehov.

För databaser bör du också samla in databasspecifika mått:

  • Frågeprestanda: Data om körningstid, resursanvändning och effektivitet för databasfrågor. Långsamma eller ineffektiva databasfrågor kan avsevärt göra en arbetsbelastning långsammare. Leta efter frågor som är långsamma och som körs ofta.

  • Transaktionsprestanda: Data om prestanda för databastransaktioner, till exempel transaktionsvaraktighet, samtidighet och låskonkurrens.

  • Indexprestanda: Data om prestanda för databasindex, till exempel indexfragmentering, användningsstatistik och frågeoptimering.

  • Resursanvändning: Data som innehåller PROCESSOR, minne, diskutrymme, I/O och nätverksbandbredd.

  • Anslutningsmått: Mått som spårar antalet aktiva, avbrutna och misslyckade anslutningar. Höga felfrekvenser kan tyda på nätverksproblem eller indikera att databasen har nått sitt maximala antal anslutningar.

  • Transaktionshastigheter: Antalet transaktioner som en databas körs per sekund. En ändring av transaktionsfrekvensen kan tyda på prestandaproblem.

  • Felfrekvens: Data som anger en databasprestanda. Höga felfrekvenser kan tyda på ett prestandaproblem. Samla in och analysera databasfel.

Samla in operativsystemdata (om tillämpligt)

En PaaS-lösning (plattform som en tjänst) eliminerar behovet av att samla in prestandadata för operativsystemet. Men om din arbetsbelastning körs på virtuella datorer (infrastruktur som en tjänst) måste du samla in prestandadata om operativsystemet. Du måste förstå efterfrågan på operativsystemet och den virtuella datorn. Exempel på prestandaräknare för operativsystem ofta. Du kan till exempel prova prestandaräknarna varje minut.

Samla minst in data om följande prestandaområden.

Prestandaområde Process eller funktion
Processor – CPU-användning (användarläge eller privilegierat läge)
– Cpu-kölängd (antal processer som väntar på CPU-tid)
Process – Antal processtrådar
– Antal processreferenser
Minne – Incheckat minne
– Tillgängligt minne
- Sidor per sekund
– Växla utrymmesanvändning
Disk – Diskläsning
– Diskskrivningar
– Diskdataflöde
– Diskutrymmesanvändning
Nätverk – Dataflöde för nätverksgränssnitt
– Rx/Tx-fel i nätverksgränssnittet

Verifiera och analysera data

Dina prestandadata bör överensstämma med prestandamålen. Data måste representera arbetsbelastnings- eller flödesprestanda helt och korrekt i förhållande till prestandamålen. Svarstiden för en webbtjänst har till exempel ett prestandamål på 500 ms. Gör det till en rutin att analysera data, eftersom frekventa utvärderingar möjliggör tidig identifiering och minskning av prestandaproblem.

  • Skapa aviseringar. Det är fördelaktigt att ha aviseringar som kan åtgärdas, vilket möjliggör snabb identifiering och korrigering av prestandaproblem. Dessa aviseringar bör tydligt ange tröskelvärdet för överträdda prestanda, den potentiella affärseffekten och de berörda komponenterna. Börja med att ställa in vanliga och rekommenderade aviseringar. Med tiden kan du ändra dessa kriterier baserat på dina specifika behov. Det primära målet med dessa aviseringar bör vara att förutse potentiella prestandafall innan de eskalerar till betydande problem. Om du inte kan ställa in en avisering för ett externt beroende kan du överväga att utforma en metod för att samla in indirekta mått, till exempel varaktigheten för ett beroendeanrop.

  • Ange datainsamlingsgränser. Fastställ och ange logiska gränser för mängden data som du samlar in och dess kvarhållningstid. Telemetri kan ibland generera överväldigande mängder data. Det är viktigt att fokusera på att bara samla in de viktigaste prestandaindikatorerna eller ha ett effektivt system för att extrahera meningsfulla insikter från dina prestandadata.

Azure-underlättande

Centralisera, segmentera och behålla prestandadata: Azure Monitor samlar in och aggregerar data från varje lager och komponent i din arbetsbelastning över flera Azure- och icke-Azure-prenumerationer och klientorganisationer. Den lagrar data i en gemensam dataplattform för användning av en gemensam uppsättning verktyg som kan korrelera, analysera, visualisera och/eller svara på data.

Du behöver minst en Log Analytics-arbetsyta för att aktivera Azure Monitor-loggar. Du kan använda en enda arbetsyta för all datainsamling. Du kan också skapa flera arbetsytor baserat på kraven för att segmentera prestandadata. Du kan också definiera kvarhållningsprinciper.

Samla in programprestandadata: Application Insights är en funktion i Azure Monitor som hjälper dig att övervaka programmets prestanda och tillgänglighet. Den ger insikter på programnivå genom att samla in telemetridata, till exempel begärandefrekvenser, svarstider och undantagsinformation. Du kan aktivera Application Insights för ditt program och konfigurera det för att samla in nödvändiga prestandadata. Application Insights stöder även distribuerad spårning. Konfigurera distribuerad spårning för alla flöden. Om du vill skapa transaktionsflöden från slutpunkt till slutpunkt korrelerar du händelser som kommer från olika programkomponenter eller nivåer.

Prestandaräknare är ett kraftfullt sätt att övervaka programmets prestanda. Azure tillhandahåller olika prestandaräknare som du kan använda för att samla in data om CPU-användning, minnesanvändning, disk-I/O, nätverkstrafik med mera. Om du konfigurerar ditt program för att generera prestandaräknardata samlar Azure Monitor in och lagrar data för analys.

Samla in resursprestandadata: De flesta Azure-tjänster genererar plattformsloggar och mått som tillhandahåller diagnostik- och granskningsinformation. Genom att aktivera diagnostikinställningar kan du ange plattformsloggar och mått för att samla in och lagra. I korrelationssyfte aktiverar du diagnostik för alla tjänster som stöds och skickar sedan loggarna till samma mål som dina programloggar.

Samla in data om databas- och lagringsprestanda: Med Azure Monitor kan du samla in prestandadata för databaser i Azure. Du kan aktivera övervakning för Azure SQL Database, Azure Database for MySQL, Azure Database for PostgreSQL och andra databastjänster. Azure Monitor tillhandahåller mått och loggar för övervakning av databasens prestanda, inklusive processoranvändning, minnesanvändning och frågeprestanda. Om du vill bli meddelad om problem kan du ställa in aviseringar baserat på prestandatrösklar.

Azure erbjuder prestandarekommendationer för databaser, till exempel SQL Server på Azure Virtual Machines. De här rekommendationerna hjälper dig att optimera prestanda för dina databasarbetsbelastningar. De innehåller förslag på hur du samlar in prestandaräknare, samlar in väntestatistik och samlar in prestandadata under tider med hög belastning.

Med Azure Lagringsanalys kan du samla in prestandadata för Azure Storage-tjänster som Blob Storage, Table Storage och Queue Storage. Du kan aktivera loggning och mått för dina lagringskonton för att övervaka viktiga prestandaindikatorer, till exempel antalet läs-/skrivåtgärder, dataflöde och svarstid.

Samla in prestandadata för operativsystemet: Med tillägget Azure Diagnostics kan du samla in detaljerade prestandadata från dina virtuella datorer (VM), inklusive CPU, minne, disk-I/O och nätverkstrafik. Dessa data kan skickas till Azure Monitor eller andra lagringstjänster för analys och avisering.

Verifiera och analysera prestandadata: I Azure Monitor kan du använda Azure Monitor-loggar för att samla in, analysera och visualisera loggdata från dina program och system. Du kan konfigurera Azure Monitor-loggar för att mata in loggar från ditt program, inklusive loggar på programnivå och infrastrukturloggar. Genom att aggregera loggar kan du köra frågor mot händelser och få insikter om programmets prestanda. Mer information finns i Kostnadsberäkningar och alternativ för Azure Monitor-loggar och Priser för Azure Monitor.

I Azure Monitor kan du definiera aviseringsregler för att övervaka specifika prestandamått och utlösa aviseringar baserat på fördefinierade villkor. Du kan till exempel skapa en aviseringsregel som meddelar dig när CPU-användningen överskrider ett visst tröskelvärde eller när svarstiden överskrider en angiven gräns. Konfigurera aviseringsregeln för att skicka meddelanden till önskade mottagare.

När du skapar en aviseringsregel kan du definiera de kriterier som avgör när en avisering ska utlösas. Du kan ange tröskelvärden, aggregeringsmetoder, tidsfönster och utvärderingsfrekvensen. Definiera kriterierna baserat på dina prestandaövervakningskrav. Förutom att skicka meddelanden kan du ange vilka åtgärder som ska vidtas när en avisering utlöses. Åtgärder kan vara att skicka e-post, anropa webhooks eller köra Azure-funktioner. Välj lämpliga åtgärder för att svara på det specifika aviseringsscenariot.

Exempel

Checklista för prestandaeffektivitet

Se den fullständiga uppsättningen rekommendationer.