Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du använder hälsokontroll i Azure Portal för att övervaka App Service-instanser. Hälsokontrollen ökar applikationens tillgänglighet genom att omdirigera begäranden från ohälsosamma instanser och byta ut instanser om de förblir ohälsosamma. Det gör det genom att pinga ditt webbprogram varje minut, via en sökväg som du väljer.
Observera att /api/health bara är ett exempel. Det finns ingen standardsökväg för hälsokontroll. Du bör se till att sökvägen du väljer är en giltig sökväg som finns i ditt program.
Så här fungerar hälsokontroll
- När du får en sökväg i din app pingar hälsokontrollen sökvägen på alla instanser av din App Service-app med 1 minuts intervall.
- Om en webbapp som körs på en viss instans inte svarar med en statuskod mellan 200 och 299 (inklusive) efter 10 begäranden, fastställer App Service att instansen inte är felfri och tar bort den från lastbalanseraren för webbappen. Det antal misslyckade begäranden som krävs för att en instans ska anses vara felaktig kan konfigureras till minst två begäranden.
- När instansen har tagits bort fortsätter hälsokontrollen att pinga den. Om instansen börjar svara med en felfri statuskod (200–299) returneras instansen till lastbalanseraren.
- Om webbappen som körs på en instans förblir inte felfri i en timme ersätts instansen med en ny.
- När du skalar ut, pingar App Service hälsokontrollens sökväg för att försäkra sig om att nya instanser är redo.
Anmärkning
- Hälsokontrollen följer inte 302-omdirigeringar.
- Som mest ersätts en instans per timme, med högst tre instanser per dag per App Service-plan.
- Om hälsokontrollen skickar statusen
Waiting for health check response
misslyckas kontrollen troligen på grund av en HTTP-statuskod på 307, vilket kan inträffa om du har HTTPS-omdirigering aktiverat men harHTTPS Only
inaktiverats.
Aktivera hälsokontroll
- Om du vill aktivera hälsokontroll bläddrar du till Azure Portal och väljer din App Service-app.
- Under Övervakning väljer du Hälsokontroll.
- Välj Aktivera och ange en giltig URL-sökväg för ditt program, till exempel
/health
eller/api/health
. - Välj Spara.
Anmärkning
- Din App Service plan bör skalas till två eller flera instanser för att fullt ut använda Health check-funktionen.
- Hälsokontrollvägen bör kontrollera kritiska komponenter i din applikation. Om ditt program till exempel är beroende av en databas och ett meddelandesystem bör hälsokontrollens slutpunkt ansluta till dessa komponenter. Om programmet inte kan ansluta till en kritisk komponent bör sökvägen returnera en svarskod på 500 nivåer för att indikera att appen inte är felfri. Om sökvägen inte returnerar ett svar inom en minut anses även hälsokontroll-pingen vara felaktig.
- När du väljer sökvägen Hälsokontroll kontrollerar du att du väljer en sökväg som returnerar en statuskod på 200 endast när appen är helt uppvärmd.
- För att kunna använda hälsokontroll i en funktionsapp måste du använda en premium- eller dedikerad värdplan.
- Information om hälsokontroll i funktionsappar finns här: Övervaka funktionsappar med hälsokontroll.
Försiktighet
Ändringar i konfigurationen för hälsokontroll orsakar att appen startar om. För att minimera påverkan på produktionsappar rekommenderar vi att du konfigurerar mellanlagringsplatser och byter till produktion.
Konfiguration
Förutom att konfigurera alternativen för hälsokontroll kan du även konfigurera följande appinställningar:
Namn på appinställning | Tillåtna värden | beskrivning |
---|---|---|
WEBSITE_HEALTHCHECK_MAXPINGFAILURES |
2 - 10 | Det antal misslyckade begäranden som krävs för att en instans ska anses vara felaktig och tas bort från lastbalanseraren. När detta till exempel är inställt på 2 tas dina instanser bort efter 2 misslyckade pingar. (Standardvärdet är 10 .) |
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT |
1 - 100 | För att undvika att de återstående felfria instanserna överbelastas utesluts som standard inte mer än hälften av instanserna från lastbalanseraren åt gången. Om en App Service-plan till exempel skalas till fyra instanser och tre är ohälsosamma, undantas två. De andra två instanserna (en frisk och en sjuk) fortsätter att ta emot förfrågningar. I ett scenario där alla instanser är ohälsosamma, utesluts ingen. Om du vill åsidosätta det här beteendet anger du den här appinställningen till ett värde mellan 1 och 100 . Ett högre värde innebär att fler ohälsosamma instanser tas bort. (Standardvärdet är 50 .). |
Autentisering och säkerhet
Hälsokontrollen integreras med autentiserings- och auktoriseringsfunktionerna i App Service. Inga andra inställningar krävs om dessa säkerhetsfunktioner är aktiverade.
Om du använder ditt eget autentiseringssystem måste sökvägen Hälsokontroll tillåta anonym åtkomst. För att tillhandahålla säkerhet för slutpunkten hälsokontroll bör du först använda funktioner som IP-begränsningar, klientcertifikat eller ett virtuellt nätverk för att begränsa programåtkomsten. När du har dessa funktioner på plats kan du autentisera hälsokontrollbegäran genom att granska rubriken x-ms-auth-internal-token
och verifiera att den matchar SHA256-hashen för miljövariabeln WEBSITE_AUTH_ENCRYPTION_KEY
. Om de matchar är hälsokontrollbegäran giltig och kommer från App Service.
Anmärkning
För Azure Functions-autentisering måste den funktion som fungerar som slutpunkt för hälsokontroll tillåta anonym åtkomst.
using System;
using System.Security.Cryptography;
using System.Text;
/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public bool HeaderMatchesEnvVar(string headerValue)
{
var sha = SHA256.Create();
string envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
string hash = Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
return string.Equals(hash, headerValue, StringComparison.Ordinal);
}
Anmärkning
Rubriken x-ms-auth-internal-token
är endast tillgänglig på App Service för Windows.
Tillfällen
När hälsokontrollen är aktiverad kan du starta om och övervaka statusen för dina programinstanser från fliken Instanser. Fliken Instanser visar instansens namn och status för programmets instans. Du kan också starta om ett avancerat program manuellt från den här fliken med hjälp av knappen "Starta om".
Om statusen för programinstansen är "inte felfri" kan du starta om arbetsprocessen för respektive app manuellt med hjälp av omstartsknappen i tabellen. Detta påverkar inte något av de andra programmen som finns i samma App Service-plan. Om det finns andra program som använder samma App Service-plan som instansen visas de på öppningsbladet från omstartsknappen.
Om du startar om instansen och omstartsprocessen misslyckas får du möjlighet att ersätta arbetaren. (Endast en instans kan ersättas per timme.) Detta påverkar alla program som använder samma App Service-plan.
För Windows-program kan du också visa processer via ProcessUtforskaren. Detta ger dig ytterligare insikter om instansens processer, inklusive antal trådar, privat minne och total CPU-tid.
Insamling av diagnostikinformation
För Windows-program har du möjlighet att samla in diagnostikinformation på fliken Hälsokontroll. När du aktiverar diagnostikinsamling läggs en regel för automatisk återställning till som skapar minnesdumpar för instanser som inte är felfria och sparar dem på ett särskilt lagringskonto. Om du aktiverar det här alternativet ändras konfigurationerna för automatisk läkning. Om det finns befintliga regler för automatisk återställning rekommenderar vi att du konfigurerar detta via App Service-diagnostik.
När diagnostiksamlingen är aktiverad kan du skapa ett lagringskonto eller välja ett befintligt för dina filer. Du kan bara välja lagringskonton i samma region som ditt program. Tänk på att om du sparar startas programmet om. När du har sparat, om dina webbplatsinstanser inte är hälsosamma efter kontinuerlig pingning, kan du gå till resursen för ditt lagringskonto och granska minnesdumparna.
Övervakning
När du har angett programmets sökväg för hälsokontroll kan du övervaka webbplatsens hälsotillstånd med hjälp av Azure Monitor. På bladet Hälsokontroll i portalen väljer du Mått i det övre verktygsfältet. Då öppnas ett nytt blad där du kan se webbplatsens statushistorik för hälsokontroll och skapa en ny aviseringsregel. Statusmått för hälsokontroll aggregerar lyckade pingar och visar endast fel när instansen bedömdes vara ohälsosam baserat på det konfigurerade tröskelvärdet för hälsokontrollens belastningsutjämning. Som standard är det här värdet inställt på 10 minuter, så det tar 10 på varandra följande pingar (1 per minut) för att en viss instans ska anses vara i dåligt skick och först då återspeglas det i mätvärdet. Mer information om hur du övervakar dina webbplatser finns i kvoter och aviseringar för Azure App Service.
Begränsningar
- Hälsokontroll kan aktiveras för kostnadsfria och delade App Service-planer, så du kan ha mått på webbplatsens hälsa och konfigurera aviseringar. Men eftersom kostnadsfria och delade webbplatser inte stöder utskalning ersätts inte felaktiga instanser automatiskt. Du bör skala upp till Basic-nivån eller högre så att du kan skala ut till två eller flera instanser och få full nytta av hälsokontroll. Detta rekommenderas för produktionsinriktade program eftersom det ökar appens tillgänglighet och prestanda.
- En App Service-plan kan ha högst en instans med feltillstånd ersatt per timme och högst tre instanser per dag.
- Det finns en icke-konfigurerbar gräns för det totala antalet instanser som ersätts av hälsokontroll per skalningsenhet. Om den här gränsen nås ersätts inga ohälsosamma instanser. Det här värdet återställs var 12:e timme.
Vanliga frågor och svar
Vad händer om min app körs på en enskild instans?
Om din app bara skalas till en instans och blir ohälsosam tas den inte bort från lastbalanseraren eftersom det skulle ta ner appen helt. Men efter en timmes kontinuerliga ohälsosamma pingar ersätts instansen. Skala ut till två eller flera instanser för att få fördelen av omdirigering med hälsokontroll. Om appen körs på en enda instans kan du fortfarande använda övervakningsfunktionen Hälsokontroll för att hålla reda på programmets hälsa.
Varför visas inte hälsokontrollbegäranden i webbserverloggarna?
Begäranden om hälsokontroll skickas till din webbplats internt, så begäran visas inte i webbserverloggarna. Du kan lägga till loggmeddelanden i din hälsokontrollkod för att hålla ett register över när sökvägen för hälsokontrollen pingas.
Skickas hälsokontrollbegäranden via HTTP eller HTTPS?
I App Service för Windows och Linux skickas hälsokontrollbegäranden via HTTPS när ENDAST HTTPS är aktiverat på webbplatsen. Annars skickas de via HTTP.
Följer hälsokontrollen de programkodskonfigurerade omdirigeringarna mellan standarddomänen och den anpassade domänen?
Nej, funktionen Hälsokontroll pingar sökvägen till webbprogrammets standarddomän. Om det finns en omdirigering från standarddomänen till en anpassad domän blir statuskoden som hälsokontrollen returnerar inte 200. Det blir en omdirigering (301), som markerar att arbetaren är ohälsosam.
Vad händer om jag har flera appar i samma App Service-plan?
Ohälsosamma instanser kommer alltid att tas bort från lastbalansarens rotation oavsett vilka andra appar som finns i App Service-planen (upp till den procentandel som anges i WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT
). När en app på en instans förblir ohälsosam i mer än en timme ersätts instansen endast om alla andra appar där hälsokontrollen är aktiverad också inte är hälsosamma. Appar som inte har hälsokontroll aktiverat tas inte med i beräkningen.
Exempel
Anta att du har två program (eller en app med ett fack) med hälsokontrollen aktiverad. De kallas App A och App B. De har samma App Service-plan och planen skalas ut till fyra instanser. Om app A blir ohälsosam på två instanser, slutar lastbalanseraren att skicka begäranden till App A på dessa två instanser. Begäranden dirigeras fortfarande till App B på dessa instanser, förutsatt att app B är felfri. Om app A förblir ohälsosam i mer än en timme på dessa två exemplar, ersätts exemplaren endast om app B också är ohälsosam på dessa exemplar. Om app B är felfri ersätts inte instanserna.
Anmärkning
Om det fanns en annan webbplats eller plats i planen (App C) utan att hälsokontrollen var aktiverad skulle den inte beaktas för instansersättningen.
Vad händer om alla mina instanser är osunda?
Om alla instanser av ditt program inte är felfria tar App Service inte bort instanser från lastbalanseraren. I det här scenariot skulle ett avbrott för din applikation inträffa om alla defekta appinstanser tas bort från lastbalanserarens rotation. Instansersättningen kommer dock fortfarande att ske.
Vad händer vid en platsswap?
Konfigurationen för hälsokontroll är inte specifik för någon enskild plats, så efter en växling kommer hälsokontrollens konfiguration hos den växlade platsen att tillämpas på målplatsen och vice versa. Om du till exempel har hälsokontrollen aktiverad för din stagingmiljö, kommer den konfigurerade slutpunkten att tillämpas på produktionsmiljön efter ett byte. Vi rekommenderar att du använder konsekvent konfiguration för både produktions- och icke-produktionsfack om det är möjligt för att förhindra oväntat beteende efter växlingen.
Fungerar hälsokontroll på App Service-miljön?
Ja, hälsokontrollen är tillgänglig för App Service-miljön v3.