Övervakningsmönster för slutpunktens tillstånd

Implementera funktionskontroller i ett program som externa verktyg kan komma åt via exponerade slutpunkter med jämna mellanrum. Det här hjälper dig för att kontrollera att program och tjänster fungerar.

Kontext och problem

Det är bra, och ofta ett verksamhetskrav, att övervaka webbprogram och tjänster på serversidan för att säkerställa att de är tillgängliga och fungerar. Ibland är det dock svårare att övervaka tjänster som körs i molnet än att övervaka lokala tjänster. Du har till exempel inte fullständig kontroll över värdmiljön och tjänsterna är ofta beroende av andra tjänster som tillhandahålls av plattformsleverantörer och andra.

Det finns många faktorer som påverkar molnbaserade program. Det kan vara nätverkslatens, prestanda och tillgänglighet för underliggande system för beräkning och lagring, och nätverksbandbredden mellan dem. Det kan uppstå fel i tjänsten, helt eller delvis, på grund av dessa faktorer. Du måste därför kontrollera tjänsten med jämna mellanrum för att säkerställa tillgänglighetsnivån. Den kan ingå i servicenivåavtalet (SLA).

Lösning

Implementera hälsoövervakning genom att skicka begäranden till en programslutpunkt. Programmet utför nödvändiga kontroller och returnerar en statusindikation.

Det ingår vanligtvis två faktorer i hälsoövervakning:

  • Kontroller (om tillämpligt) som utförs av programmet eller tjänsten som svar på begäranden till hälsoverifieringsslutpunkten.
  • Resultatanalys av verktyget eller ramverket som utför hälsoverifieringskontrollerna.

Svarskoden visar status för programmet, och eventuellt komponenter och tjänster som det använder. Kontroller av latens och svarstid utförs av övervakningsverktyg och ramverk. Bilden visar en översikt över mönstret.

Översikt över mönstret

Andra kontroller som kan utföras av hälsoövervakningskoden i programmet är:

  • tillgänglighet och svarstid för molnlagring och databas
  • andra resurser och tjänster som finns i eller används av programmet.

Det finns tjänster och verktyg som övervakar webbprogram genom att skicka begäranden till en konfigurerbar uppsättning slutpunkter och som jämför resultaten med en uppsättning konfigurerbara regler. Det är relativt enkelt att skapa en tjänstslutpunkt vars syfte är att utföra vissa funktionella tester i systemet.

Vanliga kontroller som kan utföras av övervakningsverktyg är:

  • Verifiera svarskoden. Ett HTTP-svar på 200 (OK) visar t.ex. att programmet svarade utan fel. Övervakningssystemet kan också söka efter andra svarskoder för mer omfattande resultat.
  • Identifiera fel i svarsinnehållet, även om statuskoden är 200 (OK). Du kan upptäcka fel som påverkar endast en del av den returnerade webbsidan eller tjänstsvaret. Du kan till exempel söka igenom en sidrubrik eller titta efter en viss fras som visar att rätt sida returnerades.
  • Mäta svarstiden, som visar en kombination av nätverkslatensen och programmets tid för att utföra begäran. Ett ökande värde kan visa på ett kommande problem med programmet eller nätverket.
  • Kontrollera resurser och tjänster utanför programmet. Det kan vara ett nätverk för innehållsleverans via vilket programmet levererar innehåll från globala cacheminnen.
  • Kontrollera förfallodatum för SSL-certifikat.
  • Mäta svarstiden för en DNS-sökning för programwebbadressen för att mäta DNS-latens och DNS-fel.
  • Verifiera den webbadress som returneras av DNS-sökningen för att kontrollera att poster stämmer. Du kan undvika skadlig omdirigering vid angrepp på DNS-servern.

Det är också bra att om möjligt köra dessa kontroller från andra platser, lokalt eller värdbaserat, för att mäta och jämföra svarstider. Du bör helst övervaka program från platser nära kunder och skapa dig en rättvisande bild av prestanda från varje plats. Förutom att tillhandahålla en mer robust kontrollmekanism kan resultaten hjälpa dig att bestämma distributionsplats för programmet och om du vill distribuera det i mer än ett datacenter.

Du bör vidare köra testerna mot alla tjänstinstanser som kunder använder och se till att programmet fungerar för alla kunder. Om kundlagringen är spridd över fler än ett lagringskonto bör övervakningsprocessen kontrollera samtliga.

Problem och överväganden

Tänk på följande när du bestämmer hur du ska implementera mönstret:

Så verifierar du svaret. Är till exempel bara en enda statuskod med värdet 200 (OK) tillräcklig för att verifiera att programmet fungerar? Det här är det mest grundläggande måttet på programmets tillgänglighet. Det är den minsta implementeringen av det här mönstret. Det ger dock lite information om åtgärder, trender och eventuella kommande problem i programmet.

Antal slutpunkter att exponera för ett program. En metod är att exponera minst en slutpunkt för kärntjänsterna som används i programmet och en annan för tjänster med lägre prioritet. Då kan olika nivåer tilldelas till varje övervakningsresultat. Överväg också att exponera flera slutpunkter. Det kan vara en för varje kärntjänst. Det ger en detaljrikare övervakning. En hälsokontroll kan till exempel kontrollera databasen, lagringen och en extern geokodningstjänst som ett program använder. Var och en kan kräva olika nivåer för drifttid och svarstid. Programmet kan vara felfritt även om tjänsten geokodning eller någon annan bakgrundsaktivitet är otillgänglig under några minuter.

Om du vill använda samma slutpunktför övervakning som används för allmän åtkomst , men till en specifik sökväg som utformats för hälsoverifieringskontroller, till exempel /health på den allmänna åtkomstslutpunkten. Det här är ett sätt att genomföra vissa funktionstester i programmet genom att köra övervakningsverktyg, till exempel att registrera en ny användare, logga in och prova att genomföra en beställning, och samtidigt kontrollera att den allmänna åtkomstslutpunkten är tillgänglig.

Den typ av information som ska samlas in i tjänsten som svar på övervakningsbegäranden och hur du returnerar den här informationen. De flesta befintliga verktyg och ramverk studerar endast HTTP-statuskoden som slutpunkten returnerar. Om du vill returnera och validera ytterligare information kan du behöva skapa ett anpassat övervakningsverktyg eller en tjänst.

Så mycket information behöver du samla in. Överdriven bearbetning under kontrollen kan överbelasta programmet och påverka användarna. Tidsgränsen kanske överskrids och programmet markeras som otillgängligt. De flesta program omfattar verktyg som felhantering och prestandaräknare som loggar prestanda och felinformation. Det kan vara tillräckligt, istället för att hämta in ytterligare information via en hälsoverifieringskontroll.

Cachelagra slutpunktsstatusen. Det kan vara dyrt att köra hälsokontroller för ofta. Om hälsostatusen till exempel rapporteras via en instrumentpanel vill du inte att varje begäran till instrumentpanelen ska utlösa en hälsokontroll. Kontrollera istället systemhälsan regelbundet och cachelagra statusen. Exponera en slutpunkt som returnerar den cachelagrade statusen.

Så här konfigurerar du säkerheten för övervakningsslutpunkter för att skydda dem från offentlig åtkomst, vilket kan exponera programmet för skadliga attacker, risk för exponering av känslig information eller att dra till sig DoS-attacker (Denial of Service). Det här bör vanligtvis göras programkonfigurationen. Då är det enkelt att uppdatera utan att starta om programmet. Överväg en eller flera av följande metoder:

  • Skydda slutpunkten genom att kräva autentisering. Du kan använda av en autentiseringssäkerhetsnyckel i rubriken eller skicka autentiseringsuppgifter med begäran, Det här förutsätter att övervakningstjänsten eller verktyget stöder autentisering.

    • Använd en diskret eller dold slutpunkt. Du kan till exempel exponera slutpunkten på en annan IP-adress än den som används av standardadressen för programmet. Du kan konfigurera slutpunkten på en HTTP-port av annan typ än standardtypen. Du kan också använda en komplex sökväg till testsidan. Det går vanligtvis att ange ytterligare slutpunktsadresser och portar när du konfigurerar programmet. Du kan då lägga till poster för de här slutpunkterna på DNS-servern, om det krävs för att undvika att behöva ange IP-adressen direkt.

    • Exponera en metod på en slutpunkt som accepterar en parameter, som ett nyckelvärde eller ett värde för arbetsläge. Beroende på värdet som angetts för den här parametern kan koden utföra ett specifikt test eller en uppsättning med tester när en begäran tas emot. Om parametervärdet inte känns igen returneras ett 404 (hittades inte)-fel. De giltiga parametervärdena kan ställas in i programinställningarna.

      DoS-attacker påverkar sannolikt en separat slutpunkt som utför grundläggande funktionstester mindre utan att påverka driften av programmet. Vi rekommenderar att du inte kör test som kan exponera känslig information. Om du måste returnera information som kan vara användbar för att en angripare bör du överväga hur du ska skydda slutpunkten och data från obehörig åtkomst. I det här fallet räcker det inte att förlita dig på diskretion. Du kan också använda en HTTPS-anslutning och kryptera känsliga data. Det här ökar dock belastningen på servern.

  • Hur du kommer åt en slutpunkt som skyddas med hjälp av autentisering är en punkt som måste beaktas vid utvärdering av slutpunkter för hälsokontroll och de som använder den. Till exempel kan App Service inbyggda hälsokontrollen integreras med App Service funktioner för autentisering och auktorisering.

Kontrollera att övervakningsagenten fungerar korrekt. En metod är att exponera en slutpunkt som helt enkelt returnerar ett värde från programkonfigurationen eller ett slumpmässigt värde som kan användas till att testa agenten.

Kontrollera också att övervakningssystemet genomför kontroller på sig självt för att undvika falska positiva resultat. Det kan vara självtest och inbyggda test.

När du ska använda det här mönstret

Det här mönstret är användbart för:

  • Övervaka webbplatser och webbprogram för att verifiera tillgänglighet.
  • Övervaka webbplatser och webbprogram för att kontrollera att de fungerar.
  • Övervaka mellannivå och delade tjänster för att upptäcka och isolera fel som kan störa andra program.
  • Komplettera befintlig instrumentation i programmet, till exempel prestandaräknare och felhanterare. Hälsokontroller ersätter inte behovet av loggning och granskning i programmet. Instrumentation kan ge information om befintliga ramverk som övervakar räknare och felloggar för att identifiera fel och andra problem. Du får dock ingen information om programmet inte är tillgängligt.

Exempel

Hälsokontroller för ASP.NET är mellanprogram och en uppsättning bibliotek för rapportering av hälsotillståndet för appinfrastrukturkomponenter. Den tillhandahåller ett ramverk för rapportering av hälsokontroller i en konsekvent metod och implementerar många av de metoder som beskrivs ovan. Detta omfattar externa kontroller som databasanslutning och specifika begrepp som liveness och beredskapsavsökningar.

GitHub en logotyp Ett antal exempelimplementeringar som använder ASP.NET hälsokontroller finns på GitHub.

Övervaka slutpunkter i program med Azure som värd

Här är några sätt att övervaka slutpunkter i Azure-program:

  • Använd de inbyggda övervakningsfunktionerna i Azure.

  • Använd en tjänst från tredje part eller ett ramverk som Microsoft System Center Operations Manager.

  • Skapa ett anpassat verktyg eller en tjänst som körs på egen hand eller med en värdserver.

    Det finns en ganska omfattande uppsättning övervakningsalternativ i Azure, men du kan också använda ytterligare tjänster och verktyg för att få mer information. Program Insights, en funktion i Azure Monitor, är avsedd för utvecklingsteamet, för att hjälpa dig att förstå hur din app presterar och hur den används. Den övervakar begärandefrekvenser, svarstider, felfrekvenser, beroendefrekvenser och felfrekvenser och kan hjälpa dig att ta reda på om externa tjänster gör dig långsammare.

De villkor som du kan övervaka varierar beroende på vilken värdmekanism du väljer för ditt program, men alla dessa inkluderar möjligheten att skapa en aviseringsregel som använder en webbslutpunkt som du anger i inställningarna för din tjänst. Den här slutpunkten bör svara förhållandevis snabbt, så att varningssystemet kan identifiera att programmet fungerar.

Läs mer om skapa varningsaviseringar.

Vid ett större avbrott ska klienttrafiken vara dirigerbar till en programdistribution som fortfarande är tillgänglig i andra regioner eller zoner. Det är i slutänden som anslutningar mellan flera platser och global belastningsutjämning ska användas, beroende på om programmet är internt och/eller externt. Tjänster som Azure Front Door, Azure Traffic Manager eller CDN kan dirigera trafik mellan regioner baserat på programmets hälsotillstånd som tillhandahålls via hälsoavsökningar.

Azure Traffic Manager är en tjänst för routning och belastningsutjämning som kan distribuera begäranden till specifika instanser av ditt program baserat på en mängd regler och inställningar. Förutom att leda om begäranden pingar Traffic Manager med jämna mellanrum den URL-adress, den port och den relativa sökväg du anger för att avgöra vilka av instanser av programmet som definieras i reglerna som är aktiva och svarar på begäranden. Om statuskoden 200 (OK) upptäcks markeras programmet som tillgängligt. Vid andra statuskoder markerar Traffic Manager programmet som otillgängligt. Du kan visa statusen i Traffic Manager-konsolen och konfigurera regeln för att omdirigera begäranden till andra programinstanser som svarar.

Men Traffic Manager väntar bara en viss tid på att få ett svar från övervaknings-URL:en. Du bör därför kontrollera att hälsoverifieringskoden körs inom den här tiden, inklusive nätverkslatens på vägen från Traffic Manager till programmet och tillbaka igen.

Följande riktlinjer kan vara användbara när du implementerar det här mönstret: