Poznámka
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Monitorování stavu aplikace je důležitým signálem pro správu a upgrade nasazení. Škálovací sady virtuálních počítačů Azure poskytují podporu pro Postupné upgrady, včetně automatických upgradů imagí operačního systému a automatické opravování hostů VM, které se spoléhají na monitorování stavu jednotlivých instancí při upgradu vašeho nasazení. Rozšíření stavu aplikace můžete také použít k monitorování stavu aplikace jednotlivých instancí ve škálovací sadě a provádění oprav instancí pomocí automatických oprav instancí.
Tento článek popisuje, jak můžete ke sledování stavu vašich aplikací nasazených ve škálovacích sadách virtuálních počítačů použít dva typy rozšíření služby Application Health, Binary Health States nebo Rich Health States.
Požadavky
Tento článek předpokládá, že znáte:
- Rozšíření virtuálních počítačů Azure
- Úprava škálovacích sad virtuálních počítačů
Upozornění
Rozšíření Application Health očekává, že na nakonfigurovaném portu tcp
nebo cestě požadavku http/https
obdrží konzistentní odpověď sondy, aby bylo možné označit virtuální počítač jako zdravý. Pokud na virtuálním počítači není spuštěná žádná aplikace nebo nemůžete nakonfigurovat odpověď sondy, váš virtuální počítač se zobrazí jako nezdravý (Binární stavy stavu) nebo Neznámý (Bohaté stavy stavu). Podívejte se na ukázky stavu aplikace pro příklady odpovědí sondy stavu emitovaných do místního koncového bodu.
Poznámka:
Pro škálovací sadu virtuálních počítačů lze použít pouze jeden zdroj monitorování stavu, a to buď rozšíření stavu aplikace, nebo sondu stavu. Pokud máte obě možnosti povolené, budete ho muset před použitím služeb orchestrace, jako jsou opravy instancí nebo automatické upgrady operačního systému, odebrat.
Kdy použít rozšíření pro zdraví aplikace
Rozšíření Application Health Extension je nasazeno uvnitř instance sady škálování virtuálních počítačů a hlásí stav aplikace z vnitřku této instance. Rozšíření testuje místní koncový bod aplikace a aktualizuje stav na základě odpovědí TCP/HTTP(S) přijatých z aplikace. Azure tento stav používá k zahájení oprav instancí, které nejsou v pořádku, a k určení, jestli má instance nárok na operace upgradu.
Rozšíření hlásí stav z prostředí virtuálního počítače a lze jej použít v situacích, kdy není možné použít externí sondu, jako jsou sondy stavu Azure Load Balanceru.
Binární versus Bohaté zdravotní stavy
Rozšíření služby Application Health má k dispozici dvě možnosti: Binární stavy stavu a Rich Health States. Následující tabulka uvádí některé klíčové rozdíly mezi těmito dvěma možnostmi. Obecná doporučení najdete na konci této části.
Funkce | Binární zdravotní stavy | Bohaté zdravotní stavy |
---|---|---|
Dostupné zdravotní stavy | Dva dostupné stavy: V pořádku, Není v pořádku | Čtyři dostupné stavy: V pořádku, Není v pořádku, Inicializace, Neznámá1 |
Odesílání signálů stavu | Prostřednictvím kódů odpovědí HTTP/HTTPS nebo připojení TCP jsou odesílány signály stavu. | Signály stavu v protokolu HTTP/HTTPS se odesílají prostřednictvím kódu odpovědi sondy a textu odpovědi. Signály stavu prostřednictvím protokolu TCP zůstávají beze změny v binárních stavových stavech. |
Identifikace nezdravých instancí | Instance se automaticky dostanou do stavu Není v pořádku, pokud se z aplikace nepřijme signál v pořádku. Instance , která není v pořádku , může znamenat problém s konfigurací rozšíření (například nedostupný koncový bod) nebo problém s aplikací (například stavový kód, který není 200). | Instance přejdou do stavu Není v pořádku pouze v případě, že aplikace vygeneruje odpověď sondy , která není v pořádku. Uživatelé zodpovídají za implementaci vlastní logiky pro identifikaci a označení instancí s nezdravými aplikacemi 2. Instance s nesprávným nastavením rozšíření (například nedostupný koncový bod) nebo s neplatnou odpovědí sondy zdraví spadají do Neznámého stavu2. |
Inicializace stavu pro nově vytvořené instance | Inicializace stavu není dostupná. Nově vytvořené instance můžou nějakou dobu trvat, než se urovnáte do stabilního stavu. | Inicializace stavu umožňuje nově vytvořeným instancím dosáhnout stabilního zdravotního stavu před tím, než se instance stanou způsobilými pro průběžné aktualizace nebo opravné operace instancí. |
Protokol HTTP/HTTPS | Podporováno | Podporováno |
Protokol TCP | Podporováno | Omezená podpora – Neznámý stav není v protokolu TCP k dispozici. Viz tabulku protokolu Rich Health States pro chování stavů v TCP. |
1 Neznámý stav není v protokolu TCP k dispozici. 2 Platí pouze pro protokol HTTP/HTTPS. Protokol TCP se bude řídit stejným procesem identifikace instancí, které nejsou v pořádku, jako v binárních stavových stavech.
Obecně byste měli použít Rich Health States , pokud:
- Signály zdraví odesíláte prostřednictvím protokolu HTTP/HTTPS a informace o zdraví můžete zasílat prostřednictvím těla odpovědi sondy.
- K identifikaci a označení instancí, které nejsou v pořádku, byste chtěli použít vlastní logiku.
- Chcete nastavit období počátečního odkladu pro nově vytvořené instance, aby se ustálily ve stabilním stavu zdraví, než se instance stanou způsobilými pro postupnou aktualizaci nebo opravy.
- Zajímáte se o to, mít větší kontrolu nad procesem pořadí a aktualizací prostřednictvím postupných upgradů tím, že emitujete vlastní metriky.
Binární zdravotní stavy byste měli použít v následujících případech:
- Nemáte zájem o konfiguraci vlastní logiky pro identifikaci a označení instance, která není v pořádku.
- Pro nově vytvořené instance nevyžadujete inicializaci období odkladu.
- Při postupném upgradu virtuálních počítačů nemusíte používat vlastní metriky .
Bohaté zdravotní stavy
Podrobná sestava zdravotních stavů obsahuje čtyři stavy: Inicializace, Zdravý, Nezdravý a Neznámý. Následující tabulky obsahují stručný popis konfigurace jednotlivých stavů.
Protokol HTTP/HTTPS
Protokol | Zdravotní stav | Popis |
---|---|---|
http/https | V pořádku | Pokud chcete odeslat zdravý signál, očekává se, že aplikace vrátí odpověď při sondování s kódem odpovědi sondy: Stav 2xx, tělo odpovědi sondy: {"ApplicationHealthState": "Healthy"} |
http/https | Není v pořádku | Pokud chcete odeslat signál, který není v pořádku, očekává se, že aplikace vrátí odpověď sondy: Kód odpovědi sondy: Stav 2xx, tělo odpovědi sondy:{"ApplicationHealthState": "Unhealthy"} |
http/https | Inicializace | Instance automaticky zadá inicializační stav při spuštění rozšíření. Další informace naleznete v tématu Inicializace stavu. |
http/https | Neznámý | V následujících scénářích může dojít k neznámému stavu: pokud aplikace vrátí stavový kód bez 2xx, když vyprší časový limit požadavku sondy, když koncový bod aplikace není dostupný nebo nesprávně nakonfigurovaný, když je v textu odpovědi zadána ApplicationHealthState chybějící nebo neplatná hodnota nebo když vyprší období odkladu. Další informace naleznete v tématu Neznámý stav. |
Protokol TCP
Protokol | Zdravotní stav | Popis |
---|---|---|
Protokol tcp | V pořádku | Pokud chcete odeslat zdravý signál, musí být úspěšný handshake proveden se zadaným koncovým bodem aplikace. |
Protokol tcp | Není v pořádku | Pokud u zadaného koncového bodu aplikace došlo k selhání nebo neúplnému handshake, instance se označí jako Nezdravá. |
Protokol tcp | Inicializace | Instance automaticky zadá inicializační stav při spuštění rozšíření. Další informace naleznete v tématu Inicializace stavu. |
Inicializace stavu
Tento stav platí jenom pro rich health states. Stav inicializace probíhá pouze jednou při spuštění rozšíření a lze ho nakonfigurovat nastavením rozšíření gracePeriod
a numberOfProbes
.
Při spuštění rozšíření zůstane stav aplikace ve stavu Inicializace , dokud nedojde k jednomu ze dvou scénářů:
- Stejný stav (v pořádku nebo není v pořádku) je hlášen stejný početkrát za sebou, jak je nakonfigurováno prostřednictvím parametru numberOfProbes.
- Platnost vyprší.
gracePeriod
Pokud je stejný stav (v pořádku nebo není v pořádku) hlášen po sobě, stav aplikace přejde z inicializačního stavu a do hlášeného stavu (v pořádku nebo není v pořádku).
Příklad
Pokud numberOfProbes
= 3, to by znamenalo:
- Přechod z inicializace do stavu V pořádku : Rozšíření stavu aplikace musí přijímat tři po sobě jdoucí signály v pořádku prostřednictvím protokolu HTTP/HTTPS nebo TCP.
- Přechod z inicializace do nezdravého stavu: Rozšíření stavu aplikace musí přijímat tři po sobě jdoucí nezdravé signály prostřednictvím protokolu HTTP/HTTPS nebo TCP.
Pokud gracePeriod
vyprší platnost před tím, než aplikace nahlásí po sobě jdoucí zdravotní stav, bude stav instance určen následujícím způsobem:
- Protokol HTTP/HTTPS: Stav aplikace se přepne z inicializace na Neznámý.
- Protokol TCP: Stav aplikace přejde z inicializace na není v pořádku.
Neznámý stav
Tento stav platí jenom pro rich health states. Neznámý stav je hlášen pouze pro sondy http nebo https a vyskytuje se v následujících scénářích:
- Pokud aplikace vrátí stavový kód, který není 2xx
- Když vyprší časový limit požadavku sondy
- Pokud je koncový bod aplikace nedostupný nebo nesprávně nakonfigurovaný
- Pokud je pro
ApplicationHealthState
v textu odpovědi zadána chybějící nebo neplatná hodnota - Po vypršení lhůty odkladu
Instance v neznámém stavu je považována za podobnou instanci, která není v pořádku. Pokud je tato možnost povolená, budou opravy instancí prováděny v neznámé instanci, zatímco postupné upgrady budou pozastaveny, dokud instance nepřejde zpět do stavu V pořádku .
Následující tabulka ukazuje interpretaci stavu systému pro rolling upgrady a opravy instancí:
Zdravotní stav | Interpretace postupného upgradu | Aktivační událost Oprav instancí |
---|---|---|
Inicializace | Počkejte, až bude stav v pořádku, není v pořádku nebo neznámý. | Ne |
V pořádku | V pořádku | Ne |
Není v pořádku | Není v pořádku | Ano |
Neznámý | Není v pořádku | Ano |
Schéma rozšíření pro bohaté zdravotní stavy
Následující kód JSON ukazuje schéma rozšíření Rich Health States. Rozšíření vyžaduje minimálně požadavek http nebo https s přidruženým portem nebo cestou požadavku. Podporují se také sondy TCP, ale nebudou moct nastavit ApplicationHealthState
prostřednictvím těla odpovědi a nebudou mít přístup k neznámému stavu .
{
"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
}
}
}
]
}
}
Hodnoty vlastností
Název | Hodnota / příklad | Datový typ |
---|---|---|
apiVersion | 2018-10-01 |
datum |
vydavatel | Microsoft.ManagedServices |
řetězec |
typ |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
řetězec |
typeHandlerVersion | 2.0 |
řetězec |
Nastavení
Název | Hodnota / příklad | Datový typ |
---|---|---|
protokol |
http nebo https tcp |
řetězec |
přístav | Volitelné, pokud je protokol http nebo https , povinné, pokud je protokol tcp . |
int (integer) |
requestPath | Povinné, pokud je http protokol nebo https , není povolen, pokud je protokol tcp |
řetězec |
interval v sekundách | Volitelné, výchozí hodnota je 5 sekund. Jedná se o interval mezi jednotlivými sondou stavu. Pokud například intervalInSeconds == 5, odešle se sonda do místního koncového bodu aplikace jednou za 5 sekund. Minimální hodnota je 5 sekund, maximum je 60 sekund. | int (integer) |
počet sond | Volitelné, výchozí hodnota je 1. Toto je počet po sobě jdoucích testů potřebných ke změně stavu. Pokud například numberOfProbles == 3, budete potřebovat 3 po sobě jdoucí signály "V pořádku", abyste změnili stav z "Není v pořádku"/"Neznámý" do stavu V pořádku. Stejný požadavek platí pro změnu stavu na Stav není v pořádku nebo Neznámý stav. Minimální hodnota je 1 sonda, maximum je 24 sond. | int (integer) |
období odkladu | Volitelné, výchozí = intervalInSeconds * numberOfProbes ; maximální období odkladu je 14400 sekund |
int (integer) |
Binární zdravotní stavy
Binární hlášení o zdravotním stavu obsahuje dva stavy, zdravý a nezdravý. Následující tabulky obsahují stručný popis konfigurace stavů.
Protokol HTTP/HTTPS
Protokol | Zdravotní stav | Popis |
---|---|---|
http/https | V pořádku | Pokud chcete odeslat zdravý signál, aplikace by měla vrátit kód odpovědi 200. |
http/https | Není v pořádku | Pokud z aplikace nepřijde kód odpovědi 200, bude tato instance označena jako Není v pořádku. |
Protokol TCP
Protokol | Zdravotní stav | Popis |
---|---|---|
Protokol tcp | V pořádku | Pokud chcete odeslat zdravý signál, musí být úspěšný handshake proveden se zadaným koncovým bodem aplikace. |
Protokol tcp | Není v pořádku | Pokud u zadaného koncového bodu aplikace došlo k selhání nebo neúplnému handshake, instance se označí jako Nezdravá. |
Mezi scénáře, které můžou vést ke stavu Není v pořádku , patří:
- Když koncový bod aplikace vrátí stavový kód, který není 200.
- Pokud v instancích virtuálního počítače není nakonfigurovaný žádný koncový bod aplikace pro zajištění stavu aplikace
- Pokud je koncový bod aplikace nesprávně nakonfigurovaný
- Pokud koncový bod aplikace není dostupný
Schéma rozšíření pro binární zdravotní stavy
Následující JSON ukazuje schéma pro rozšíření Zdraví aplikace. Rozšíření vyžaduje alespoň jeden požadavek typu "tcp", "http" nebo "https" s přidruženým portem nebo příslušnou cestou požadavku.
{
"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
}
}
}
]
}
}
Hodnoty vlastností
Název | Hodnota / příklad | Datový typ |
---|---|---|
apiVersion | 2018-10-01 |
datum |
vydavatel | Microsoft.ManagedServices |
řetězec |
typ |
ApplicationHealthLinux (Linux), ApplicationHealthWindows (Windows) |
řetězec |
typeHandlerVersion | 1.0 |
řetězec |
Nastavení
Název | Hodnota / příklad | Datový typ |
---|---|---|
protokol |
http nebo https tcp |
řetězec |
přístav | Volitelné, pokud je protokol http nebo https , povinné, pokud je protokol tcp . |
int (integer) |
requestPath | Povinné, pokud je http protokol nebo https , není povolen, pokud je protokol tcp |
řetězec |
interval v sekundách | Volitelné, výchozí hodnota je 5 sekund. Jedná se o interval mezi jednotlivými sondou stavu. Pokud například intervalInSeconds == 5, odešle se sonda do místního koncového bodu aplikace jednou za 5 sekund. Minimální hodnota je 5 sekund, maximum je 60 sekund. | int (integer) |
počet sond | Volitelné, výchozí hodnota je 1. Toto je počet po sobě jdoucích testů potřebných ke změně stavu. Pokud například numberOfProbles == 3, budete potřebovat 3 po sobě jdoucí signály "V pořádku" ke změně stavu ze stavu "Není v pořádku" na "V pořádku". Stejný požadavek platí pro změnu stavu na stav Není v pořádku. Minimální hodnota je 1 sonda, maximum je 24 sond. | int (integer) |
Nasazení rozšíření Zdraví aplikace
Rozšíření Služby Application Health můžete do škálovacích sad nasadit několika způsoby, jak je podrobně popsáno v následujících příkladech.
Bohaté zdravotní stavy
Následující příklad přidá rozšíření Stav aplikace – Rich States (s názvem myHealthExtension
) do modelu škálovací sady založeného na Windows.
Tento příklad můžete použít také k upgradu existujícího rozšíření z Binary na Rich Health States provedením volání PATCH místo 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>
}
}
}
Slouží PATCH
k úpravě již nasazeného rozšíření.
Upgradujte virtuální počítače a nainstalujte rozšíření.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Binární zdravotní stavy
Následující příklad přidá rozšíření Application Health (s názvem myHealthExtension) do extensionProfile v modelu škálovací sady založené na Windows.
Tento příklad můžete také použít ke změně existujícího rozšíření ze stavu Rich Health na Binary Health provedením volání PATCH místo 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>"
}
}
}
Slouží PATCH
k úpravě již nasazeného rozšíření.
Upgradujte virtuální počítače a nainstalujte rozšíření.
POST on `/subscriptions/<subscriptionId>/resourceGroups/<myResourceGroup>/providers/Microsoft.Compute/virtualMachineScaleSets/< myScaleSet >/manualupgrade?api-version=2022-08-01`
{
"instanceIds": ["*"]
}
Odstraňování potíží
Potřebuji pomoc s konfigurací odpovědi sondy
Podívejte se na ukázky stavu aplikace pro příklady odpovědí sondy stavu emitovaných do místního koncového bodu.
Zobrazení VMHealth – jedna instance
Get-AzVmssVM
-InstanceView `
-ResourceGroupName <rgName> `
-VMScaleSetName <vmssName> `
-InstanceId <instanceId>
Zobrazit VMHealth – dávkové volání
Tato možnost je k dispozici pouze pro škálovací sady virtuálních počítačů s jednotnou orchestrací.
GET on `/subscriptions/<subscriptionID>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>/virtualMachines/?api-version=2022-03-01&$expand=instanceview`
Stav zdravotního stavu se nezobrazuje
Pokud se zdravotní stav nezobrazuje na portálu Azure nebo prostřednictvím volání GET, zkontrolujte, jestli je virtuální počítač aktualizovaný na nejnovější model. Pokud virtuální počítač není na nejnovější model, upgradujte virtuální počítač a stav se zlepší.
Výstupní protokol spouštění rozšíření
Výstup spouštění rozšíření se protokoluje do souborů nalezených v následujících adresářích:
C:\WindowsAzure\Logs\Plugins\Microsoft.ManagedServices.ApplicationHealthWindows\<version>\
/var/lib/waagent/Microsoft.ManagedServices.ApplicationHealthLinux-<extension_version>/status
/var/log/azure/applicationhealth-extension
Protokoly také pravidelně zaznamenávají stav aplikace.
Další kroky
Zjistěte, jak nasadit aplikaci ve škálovacích sadách virtuálních počítačů.