Använda Application Health-tillägget med VM-skalningsuppsättningar
Övervakning av programmets hälsa är en viktig signal för att hantera och uppgradera distributionen. Skalningsuppsättningar för virtuella Azure-datorer har stöd för löpande uppgraderingar , inklusive automatiska os-avbildningsuppgraderingar och automatisk gästkorrigering av virtuella datorer, som förlitar sig på hälsoövervakning av de enskilda instanserna för att uppgradera distributionen. Du kan också använda Application Health Extension för att övervaka programhälsan för varje instans i skalningsuppsättningen och utföra instansreparationer med hjälp av automatiska instansreparationer.
Den här artikeln beskriver hur du kan använda de två typerna av Application Health-tillägg, Binärt hälsotillstånd eller Rich Health States, för att övervaka hälsotillståndet för dina program som distribueras på VM-skalningsuppsättningar.
Förutsättningar
Den här artikeln förutsätter att du är bekant med:
Varning
Programhälsotillägget förväntar sig att få ett konsekvent avsökningssvar på den konfigurerade porten tcp
eller begärandesökvägen http/https
för att märka en virtuell dator som Felfri. Om inget program körs på den virtuella datorn, eller om du inte kan konfigurera ett avsökningssvar, visas den virtuella datorn som Inte felfri (binärt hälsotillstånd) eller Okänd (Rich Health States). Se exempel på programhälsa för exempel på hälsoavsökningssvar som skickas till en lokal slutpunkt.
Kommentar
Endast en hälsoövervakningskälla kan användas för en VM-skalningsuppsättning, antingen ett programhälsotillägg eller en hälsoavsökning. Om du har båda alternativen aktiverade måste du ta bort ett innan du använder orkestreringstjänster som Instansreparationer eller Automatiska OS-uppgraderingar.
När programhälsotillägget ska användas
Programhälsotillägget distribueras i en vm-skalningsuppsättningsinstans och rapporterar om programmets hälsa inifrån skalningsuppsättningsinstansen. Tillägget avsöker en lokal programslutpunkt och uppdaterar hälsostatusen baserat på svar från TCP/HTTP(S) som tagits emot från programmet. Den här hälsostatusen används av Azure för att initiera reparationer på instanser som inte är felfria och för att avgöra om en instans är berättigad till uppgraderingsåtgärder.
Tillägget rapporterar hälsotillstånd inifrån en virtuell dator och kan användas i situationer där en extern avsökning, till exempel Hälsoavsökningar för Azure Load Balancer, inte kan användas.
Binärt jämfört med rich health-tillstånd
Programhälsotillägg har två tillgängliga alternativ: Binärt hälsotillstånd och Rich Health-tillstånd. I följande tabell visas några viktiga skillnader mellan de två alternativen. Se slutet av det här avsnittet för allmänna rekommendationer.
Funktioner | Binärt hälsotillstånd | Rika hälsotillstånd |
---|---|---|
Tillgängliga hälsotillstånd | Två tillgängliga tillstånd: Felfri, Inte felfri | Fyra tillgängliga tillstånd: Felfri, Felfri, Initierad, Okänd1 |
Skicka hälsosignaler | Hälsosignaler skickas via HTTP/HTTPS-svarskoder eller TCP-anslutningar. | Hälsosignaler i HTTP/HTTPS-protokollet skickas via avsökningssvarskoden och svarstexten. Hälsosignaler via TCP-protokollet förblir oförändrade från binära hälsotillstånd. |
Identifiera instanser med feltillstånd | Instanser hamnar automatiskt i felfritt tillstånd om en felfri signal inte tas emot från programmet. En instans med feltillstånd kan antingen indikera ett problem med tilläggskonfigurationen (till exempel en slutpunkt som inte kan nås) eller ett problem med programmet (till exempel statuskoden som inte är 200). | Instanser hamnar bara i ett feltillstånd om programmet genererar ett avsökningssvar som inte är felfri . Användarna ansvarar för att implementera anpassad logik för att identifiera och flagga instanser med program som inte är felfria 2. Instanser med felaktiga tilläggsinställningar (till exempel oåtkomlig slutpunkt) eller ogiltiga hälsoavsökningssvar hamnar under okänt tillstånd2. |
Initiera tillstånd för nyligen skapade instanser | Initieringstillståndet är inte tillgängligt. Nyligen skapade instanser kan ta lite tid innan de hamnar i ett stabilt tillstånd. | Med initieringstillståndet kan nyskapade instanser etablera sig i ett stabilt hälsotillstånd innan instansen blir berättigad till löpande uppgraderingar eller reparationsåtgärder för instanser. |
HTTP/HTTPS-protokoll | Stöds | Stöds |
TCP-protokoll | Stöds | Begränsad support – Okänt tillstånd är inte tillgängligt i TCP-protokollet. Se Rich Health States-protokolltabellen för hälsotillståndsbeteenden på TCP. |
1 Okänt tillstånd är inte tillgängligt i TCP-protokollet. 2 Gäller endast för HTTP/HTTPS-protokoll. TCP-protokollet följer samma process för att identifiera instanser som inte är felfria som i binärt hälsotillstånd.
I allmänhet bör du använda binärt hälsotillstånd om:
- Du är inte intresserad av att konfigurera anpassad logik för att identifiera och flagga en instans med feltillstånd
- Du behöver ingen inledande respitperiod för nyligen skapade instanser
Du bör använda Rich Health States om:
- Du skickar hälsosignaler via HTTP/HTTPS-protokollet och kan skicka hälsoinformation via avsökningens svarstext
- Du vill använda anpassad logik för att identifiera och markera instanser som inte är felfria
- Du vill ange en inledande respitperiod för nyligen skapade instanser, så att de hamnar i ett stabilt hälsotillstånd innan instansen blir berättigad till löpande uppgradering eller instansreparationer
Binärt hälsotillstånd
Rapporter om binärt hälsotillstånd innehåller två hälsotillstånd, Felfri och Inte felfri. Följande tabeller innehåller en kort beskrivning av hur hälsotillstånden konfigureras.
HTTP/HTTPS-protokoll
Protokoll | Hälsotillstånd | beskrivning |
---|---|---|
http/https | Felfri | För att skicka en felfri signal förväntas programmet returnera en 200-svarskod. |
http/https | Ohälsosamt | Instansen markeras som Inte felfri om en 200-svarskod inte tas emot från programmet. |
TCP-protokoll
Protokoll | Hälsotillstånd | beskrivning |
---|---|---|
TCP | Felfri | För att skicka en felfri signal måste en lyckad handskakning göras med den angivna programslutpunkten. |
TCP | Ohälsosamt | Instansen markeras som Inte felfri om en misslyckad eller ofullständig handskakning inträffade med den angivna programslutpunkten. |
Några scenarier som kan resultera i ett feltillstånd är:
- När programslutpunkten returnerar en statuskod som inte är 200
- När det inte finns någon programslutpunkt konfigurerad i de virtuella datorinstanserna för att ge status för programmets hälsotillstånd
- När programslutpunkten är felaktigt konfigurerad
- När programslutpunkten inte kan nås
Rika hälsotillstånd
Rich Health States-rapportering innehåller fyra hälsotillstånd, Initializing, Healthy, Unhealthy och Unknown. Följande tabeller innehåller en kort beskrivning av hur varje hälsotillstånd har konfigurerats.
HTTP/HTTPS-protokoll
Protokoll | Hälsotillstånd | beskrivning |
---|---|---|
http/https | Felfri | För att skicka en felfri signal förväntas programmet returnera ett avsökningssvar med: Avsökningssvarskod: Status 2xx, Avsökningssvarstext: {"ApplicationHealthState": "Healthy"} |
http/https | Ohälsosamt | För att skicka en felaktig signal förväntas programmet returnera ett avsökningssvar med: Avsökningssvarskod: Status 2xx, Avsökningssvarstext: {"ApplicationHealthState": "Unhealthy"} |
http/https | Initierar | Instansen anger automatiskt ett initieringstillstånd vid tilläggsstart. Mer information finns i Initiera tillstånd. |
http/https | Okänt | Ett okänt tillstånd kan inträffa i följande scenarier: när en statuskod som inte är 2xx returneras av programmet, när avsökningsbegäran överskrider tidsgränsen, när programslutpunkten inte kan nås eller är felaktigt konfigurerad, när ett saknat eller ogiltigt värde anges i ApplicationHealthState svarstexten eller när respitperioden upphör att gälla. Mer information finns i Okänt tillstånd. |
TCP-protokoll
Protokoll | Hälsotillstånd | beskrivning |
---|---|---|
TCP | Felfri | För att skicka en felfri signal måste en lyckad handskakning göras med den angivna programslutpunkten. |
TCP | Ohälsosamt | Instansen markeras som Inte felfri om en misslyckad eller ofullständig handskakning inträffade med den angivna programslutpunkten. |
TCP | Initierar | Instansen anger automatiskt ett initieringstillstånd vid tilläggsstart. Mer information finns i Initiera tillstånd. |
Initiera tillstånd
Det här tillståndet gäller endast rich health-tillstånd. Initieringstillståndet inträffar bara en gång vid tilläggsstarttiden och kan konfigureras av tilläggsinställningarna gracePeriod
och numberOfProbes
.
Vid tilläggsstart förblir programmets hälsotillstånd i tillståndet Initiera tills något av två scenarier inträffar:
- Samma hälsotillstånd (felfri eller inte felfri) rapporteras ett på varandra följande antal gånger som konfigurerats via numberOfProbes
- Upphör att
gracePeriod
gälla
Om samma hälsotillstånd (felfritt eller felfritt) rapporteras i följd övergår programmets hälsotillstånd från initieringstillståndet och till det rapporterade hälsotillståndet (felfri eller inte felfri).
Exempel
Om numberOfProbes
= 3 betyder det:
- Om du vill övergå från Initiering till Felfritt tillstånd: Programhälsotillägget måste ta emot tre på varandra följande felfria signaler via HTTP/HTTPS- eller TCP-protokoll
- Om du vill övergå från initiering till feltillstånd : Programhälsotillägget måste ta emot tre på varandra följande felaktiga signaler via HTTP/HTTPS- eller TCP-protokoll
Om den gracePeriod
upphör att gälla innan en på varandra följande hälsostatus rapporteras av programmet, bestäms instanshälsan på följande sätt:
- HTTP/HTTPS-protokoll: Programhälsan övergår från initiering till okänd
- TCP-protokoll: Programmets hälsotillstånd övergår från Initiering till Ej felfri
Okänt tillstånd
Det här tillståndet gäller endast rich health-tillstånd. Okänt tillstånd rapporteras endast för "http" eller "https"-avsökningar och inträffar i följande scenarier:
- När en statuskod som inte är 2xx returneras av programmet
- När tidsgränsen för avsökningsbegäran uppnås
- När programslutpunkten inte kan nås eller är felaktigt konfigurerad
- När ett saknat eller ogiltigt värde anges i
ApplicationHealthState
svarstexten - När respitperioden går ut
En instans i ett okänt tillstånd behandlas på liknande sätt som en instans med feltillstånd. Om det här alternativet är aktiverat kommer instansreparationer att utföras på en okänd instans medan löpande uppgraderingar pausas tills instansen återgår till ett felfritt tillstånd.
Följande tabell visar hälsostatustolkningen för löpande uppgraderingar och instansreparationer:
Hälsotillstånd | Tolkning av löpande uppgradering | Utlösare för instansreparationer |
---|---|---|
Initierar | Vänta tills tillståndet är felfritt, felfritt eller okänt | Nej |
Felfri | Felfri | Nej |
Ohälsosamt | Ohälsosamt | Ja |
Okänt | Ohälsosamt | Ja |
Tilläggsschema för binärt hälsotillstånd
Följande JSON visar schemat för application health-tillägget. Tillägget kräver minst en "tcp", "http" eller "https"-begäran med en associerad port eller begärandesökväg.
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1
}
}
}
]
}
}
Egenskapsvärden
Name | Värde/exempel | Datatyp |
---|---|---|
apiVersion | 2018-10-01 |
datum |
förläggare | Microsoft.ManagedServices |
sträng |
type | ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
sträng |
typeHandlerVersion | 1.0 |
sträng |
Inställningar
Name | Värde/exempel | Datatyp |
---|---|---|
protokoll | http eller https tcp |
sträng |
port | Valfritt när protokollet är http eller https , obligatoriskt när protokollet är tcp |
heltal |
requestPath | Obligatoriskt när protokollet är http eller https , tillåts inte när protokollet är tcp |
sträng |
intervalInSeconds | Valfritt, standardvärdet är 5 sekunder. Det här är intervallet mellan varje hälsoavsökning. Om till exempel intervalInSeconds == 5, skickas en avsökning till den lokala programslutpunkten en gång var femte sekund. | heltal |
numberOfProbes | Valfritt, standardvärdet är 1. Det här är antalet på varandra följande avsökningar som krävs för att hälsostatusen ska ändras. Om till exempel numberOfProbles == 3 behöver du tre på varandra följande "Felfria" signaler för att ändra hälsostatusen från "Inte felfri" till tillståndet "Felfri". Samma krav gäller för att ändra hälsotillståndet till tillståndet "Inte felfri". | heltal |
Tilläggsschema för Rich Health States
Följande JSON visar schemat för tillägget Rich Health States. Tillägget kräver minst en "http" eller "https"-begäran med en associerad port eller begärandesökväg. TCP-avsökningar stöds också, men kommer inte att kunna ange ApplicationHealthState
genom avsökningens svarstext och har inte åtkomst till tillståndet Okänt .
{
"extensionProfile" : {
"extensions" : [
{
"name": "HealthExtension",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "<ApplicationHealthLinux or ApplicationHealthWindows>",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": 5,
"numberOfProbes": 1,
"gracePeriod": 600
}
}
}
]
}
}
Egenskapsvärden
Name | Värde/exempel | Datatyp |
---|---|---|
apiVersion | 2018-10-01 |
datum |
förläggare | Microsoft.ManagedServices |
sträng |
type | ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
sträng |
typeHandlerVersion | 2.0 |
sträng |
Inställningar
Name | Värde/exempel | Datatyp |
---|---|---|
protokoll | http eller https tcp |
sträng |
port | Valfritt när protokollet är http eller https , obligatoriskt när protokollet är tcp |
heltal |
requestPath | Obligatoriskt när protokollet är http eller https , tillåts inte när protokollet är tcp |
sträng |
intervalInSeconds | Valfritt, standardvärdet är 5 sekunder. Det här är intervallet mellan varje hälsoavsökning. Om till exempel intervalInSeconds == 5, skickas en avsökning till den lokala programslutpunkten en gång var femte sekund. | heltal |
numberOfProbes | Valfritt, standardvärdet är 1. Det här är antalet på varandra följande avsökningar som krävs för att hälsostatusen ska ändras. Om till exempel numberOfProbles == 3 behöver du tre på varandra följande "Felfria" signaler för att ändra hälsostatusen från "Inte felfri"/"Okänd" till tillståndet "Felfri". Samma krav gäller för att ändra hälsostatusen till tillståndet "Inte felfri" eller "Okänd". | heltal |
gracePeriod | Valfritt, standard = intervalInSeconds * numberOfProbes ; maximal respitperiod är 7 200 sekunder |
heltal |
Distribuera tillägget Programhälsa
Det finns flera sätt att distribuera Application Health-tillägget till dina skalningsuppsättningar enligt beskrivningen i följande exempel.
Binärt hälsotillstånd
I följande exempel läggs tillägget Application Health (med namnet myHealthExtension) till extensionProfile i skalningsuppsättningsmodellen för en Windows-baserad skalningsuppsättning.
Du kan också använda det här exemplet för att ändra ett befintligt tillägg från Rich Health State till Binary Health genom att göra ett PATCH-anrop i stället för en PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "1.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>"
}
}
}
Använd PATCH
för att redigera ett redan distribuerat tillägg.
Uppgradera de virtuella datorerna för att installera tillägget.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Rika hälsotillstånd
I följande exempel läggs tillägget Application Health – Rich States (med namnet myHealthExtension
) till extensionProfile
i skalningsuppsättningsmodellen för en Windows-baserad skalningsuppsättning.
Du kan också använda det här exemplet för att uppgradera ett befintligt tillägg från Binärt till Rich Health-tillstånd genom att göra ett PATCH-anrop i stället för en PUT.
PUT on `/subscriptions/subscription_id/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachineScaleSets/myScaleSet/extensions/myHealthExtension?api-version=2018-10-01`
{
"name": "myHealthExtension",
"location": "<location>",
"properties": {
"publisher": "Microsoft.ManagedServices",
"type": "ApplicationHealthWindows",
"autoUpgradeMinorVersion": true,
"typeHandlerVersion": "2.0",
"settings": {
"protocol": "<protocol>",
"port": <port>,
"requestPath": "</requestPath>",
"intervalInSeconds": <intervalInSeconds>,
"numberOfProbes": <numberOfProbes>,
"gracePeriod": <gracePeriod>
}
}
}
Använd PATCH
för att redigera ett redan distribuerat tillägg.
Uppgradera de virtuella datorerna för att installera tillägget.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Felsöka
Behöver hjälp med att konfigurera ett avsökningssvar
Se exempel på programhälsa för exempel på hälsoavsökningssvar som skickas till en lokal slutpunkt.
Visa VMHealth – enskild instans
Get-AzVmssVM
-InstanceView `
-ResourceGroupName <rgName> `
-VMScaleSetName <vmssName> `
-InstanceId <instanceId>
Visa VMHealth – batchanrop
Detta är endast tillgängligt för VM-skalningsuppsättningar med enhetlig orkestrering.
GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`
Hälsotillståndet visas inte
Om hälsotillståndet inte visas i Azure Portal eller via GET-anrop kontrollerar du att den virtuella datorn har uppgraderats till den senaste modellen. Om den virtuella datorn inte finns med i den senaste modellen uppgraderar du den virtuella datorn så visas hälsostatusen.
Utdatalogg för tilläggskörning
Utdata för tilläggskörning loggas till filer som finns i följande kataloger:
C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension
Loggarna samlar också regelbundet in programmets hälsostatus.
Nästa steg
Lär dig hur du distribuerar ditt program på VM-skalningsuppsättningar.