Monitorare le istanze del servizio app usando il controllo integrità

Questo articolo usa il controllo integrità nel portale di Azure per monitorare le istanze di servizio app. Il controllo integrità aumenta la disponibilità dell'applicazione reindirizzando le richieste da istanze non integre e sostituendo le istanze se rimangono non integre. A tale scopo, effettuare il ping ogni minuto di un percorso dell'applicazione Web preferita.

Errore di controllo integrità

Si noti che /api/health è solo un esempio aggiunto a scopo illustrativo. Per impostazione predefinita, non viene creato un percorso controllo integrità. Assicurarsi che il percorso selezionato sia un percorso valido esistente all'interno dell'applicazione

Operazioni eseguite dal servizio app con i controlli di integrità

  • Quando viene specificato un percorso nell'app, il controllo integrità effettua il ping di questo percorso in tutte le istanze dell'app servizio app a intervalli di 1 minuto.
  • Se un'app Web in esecuzione in una determinata istanza non risponde con un codice di stato compreso tra 200 e 299 (inclusi) dopo 10 richieste, servizio app determina che non è integro e lo rimuove dal servizio di bilanciamento del carico per questa app Web. Il numero richiesto di richieste non riuscite per un'istanza ritenuta non integra è configurabile per almeno due richieste.
  • Dopo la rimozione, il controllo integrità continua a eseguire il ping dell'istanza non integra. Se l'istanza inizia a rispondere con un codice di stato integro (200-299), l'istanza viene restituita al servizio di bilanciamento del carico.
  • Se l'app Web in esecuzione in un'istanza rimane non integra per un'ora, l'istanza viene sostituita con una nuova.
  • Quando si aumenta il numero di istanze, servizio app esegue il ping del percorso di controllo integrità per assicurarsi che le nuove istanze siano pronte.

Nota

  • Il controllo integrità non segue i reindirizzamenti 302.
  • Verrà sostituita al massimo un'istanza all'ora, con un massimo di tre istanze al giorno per ogni piano del servizio app.
  • Se il controllo integrità assegna lo stato Waiting for health check response , è probabile che il controllo abbia esito negativo a causa di un codice di stato HTTP 307, che può verificarsi se il reindirizzamento HTTPS è abilitato ma è HTTPS Only disabilitato.

Abilita controllo integrità

Navigazione controllo integrità in portale di Azure

  1. Per abilitare il controllo integrità, passare al portale di Azure e selezionare l'app servizio app.
  2. In Monitoraggio selezionare Controllo integrità.
  3. Selezionare Abilita e specificare un percorso URL valido nell'applicazione, ad esempio /health o /api/health.
  4. Seleziona Salva.

Nota

  • Il piano di servizio app deve essere ridimensionato a due o più istanze per usare completamente il controllo integrità.
  • Il percorso controllo integrità deve controllare i componenti critici dell'applicazione. Ad esempio, se l'applicazione dipende da un database e da un sistema di messaggistica, l'endpoint controllo integrità deve connettersi a tali componenti. Se l'applicazione non riesce a connettersi a un componente critico, il percorso deve restituire un codice di risposta a 500 livelli per indicare che l'app non è integra. Inoltre, se il percorso non restituisce una risposta entro 1 minuto, il ping del controllo integrità viene considerato non integro.
  • Quando si seleziona il percorso controllo integrità, assicurarsi di selezionare un percorso che restituisce un codice di stato 200, solo quando l'app è completamente riscaldata.
  • Per usare il controllo integrità nell'app per le funzioni, è necessario usare un piano di hosting premium o dedicato.
  • I dettagli sul controllo integrità nelle app per le funzioni sono disponibili qui: Monitorare le app per le funzioni usando Controllo integrità.

Attenzione

Le modifiche alla configurazione del controllo integrità riavviano l'app. Per ridurre al minimo l'impatto sulle app di produzione, è consigliabile configurare gli slot di staging e passare all'ambiente di produzione.

Impostazione

Oltre a configurare le opzioni controllo integrità, è anche possibile configurare le impostazioni dell'app seguenti:

Nome impostazione app Valori consentiti Descrizione
WEBSITE_HEALTHCHECK_MAXPINGFAILURES 2 - 10 Numero richiesto di richieste non riuscite per un'istanza che deve essere considerata non integra e rimossa dal servizio di bilanciamento del carico. Ad esempio, quando è impostato su 2, le istanze vengono rimosse dopo 2 i ping non riusciti. (Il valore predefinito è 10)
WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT 1 - 100 Per impostazione predefinita, non più della metà delle istanze verrà esclusa dal servizio di bilanciamento del carico contemporaneamente per evitare di sovraccaricare le istanze integre rimanenti. Ad esempio, se un piano di servizio app viene ridimensionato su quattro istanze e tre non sono integre, vengono esclusi due. Le altre due istanze (una integra e una non integra) continuano a ricevere le richieste. Nello scenario peggiore in cui tutte le istanze non sono integre, nessuna viene esclusa.
Per eseguire l'override di questo comportamento, impostare l'impostazione dell'app su un valore compreso tra 1 e 100. Un valore superiore indica che vengono rimosse più istanze non integre (il valore predefinito è 50).

Autenticazione e sicurezza

Il controllo integrità si integra con le funzionalità di autenticazione e autorizzazione di servizio app. Non sono necessarie altre impostazioni se queste funzionalità di sicurezza sono abilitate.

Se si usa il proprio sistema di autenticazione, il percorso controllo integrità deve consentire l'accesso anonimo. Per proteggere l'endpoint controllo integrità, è necessario usare prima di tutto funzionalità quali restrizioni IP, certificati client o un Rete virtuale per limitare l'accesso alle applicazioni. Dopo aver creato queste funzionalità sul posto, è possibile autenticare la richiesta di controllo integrità controllando l'intestazione, x-ms-auth-internal-tokene convalidando che corrisponda all'hash SHA256 della variabile WEBSITE_AUTH_ENCRYPTION_KEYdi ambiente . Se corrispondono, la richiesta di controllo integrità è valida e ha origine da servizio app.

Nota

In particolare per l'autenticazione Funzioni di Azure, la funzione che funge da endpoint controllo integrità deve consentire l'accesso anonimo.

using System;
using System.Text;

/// <summary>
/// Method <c>HeaderMatchesEnvVar</c> returns true if <c>headerValue</c> matches WEBSITE_AUTH_ENCRYPTION_KEY.
/// </summary>
public Boolean HeaderMatchesEnvVar(string headerValue) {
    var sha = System.Security.Cryptography.SHA256.Create();
    String envVar = Environment.GetEnvironmentVariable("WEBSITE_AUTH_ENCRYPTION_KEY");
    String hash = System.Convert.ToBase64String(sha.ComputeHash(Encoding.UTF8.GetBytes(envVar)));
    return hash == headerValue;
}

Nota

L'intestazione x-ms-auth-internal-token è disponibile solo in Windows servizio app.

Istanze

Dopo aver abilitato Il controllo integrità, è possibile riavviare e monitorare lo stato delle istanze dell'applicazione tramite la scheda Istanze. La scheda Istanze mostra il nome dell'istanza, lo stato dell'istanza dell'applicazione e consente di riavviare manualmente l'istanza.

Se lo stato dell'istanza dell'applicazione non è integro, è possibile riavviare l'istanza manualmente usando il pulsante di riavvio nella tabella. Tenere presente che anche tutte le altre applicazioni ospitate nello stesso piano di servizio app dell'istanza saranno interessate dal riavvio. Se sono presenti altre applicazioni che usano lo stesso servizio app Piano dell'istanza, vengono elencate nel pannello di apertura dal pulsante di riavvio.

Se si riavvia l'istanza e il processo di riavvio ha esito negativo, si avrà la possibilità di sostituire il ruolo di lavoro (solo 1 istanza può essere sostituita all'ora). Ciò influirà anche sulle applicazioni che usano lo stesso piano di servizio app.

Le applicazioni Windows avranno anche la possibilità di visualizzare i processi tramite Esplora processi. In questo modo è possibile ottenere altre informazioni sui processi dell'istanza, tra cui il numero di thread, la memoria privata e il tempo totale della CPU.

Raccolta delle informazioni di diagnostica

Per le applicazioni Windows, è possibile raccogliere informazioni di diagnostica nella scheda Controllo integrità. L'abilitazione della raccolta di diagnostica aggiunge una regola di correzione automatica che crea dump di memoria per le istanze non integre e la salva in un account di archiviazione designato. L'abilitazione di questa opzione modifica le configurazioni di correzione automatica. Se sono presenti regole di correzione automatica esistenti, è consigliabile configurare questa impostazione tramite la diagnostica servizio app.

Dopo aver abilitato la raccolta di diagnostica, è possibile creare o scegliere un account di archiviazione esistente per i file. È possibile selezionare solo gli account di archiviazione nella stessa area dell'applicazione. Tenere presente che il salvataggio riavvia l'applicazione. Dopo il salvataggio, se le istanze del sito vengono trovate non integre dopo il ping continuo, è possibile passare alla risorsa dell'account di archiviazione e visualizzare i dump della memoria.

Monitoraggio

Dopo aver specificato il percorso di controllo integrità dell'applicazione, è possibile monitorare l'integrità del sito usando Monitoraggio di Azure. Nel pannello Controllo integrità nel portale selezionare le metriche nella barra degli strumenti superiore. Verrà aperto un nuovo pannello in cui è possibile visualizzare lo stato di integrità cronologico del sito e l'opzione per creare una nuova regola di avviso. Le metriche del controllo integrità aggregano i ping e gli errori di visualizzazione riusciti solo quando l'istanza è stata considerata non integra in base alla configurazione del controllo integrità. Per altre informazioni sul monitoraggio dei siti, vedere la guida su Monitoraggio di Azure.

Limiti

  • Il controllo integrità può essere abilitato per i piani di servizio app gratuiti e condivisi, in modo da avere metriche sugli avvisi di integrità e configurazione del sito, ma poichéi siti gratuiti e condivisi non possono aumentare il numero di istanze, eventuali istanze non integre non verranno sostituite. È consigliabile aumentare le prestazioni fino al livello Basic o superiore in modo che sia possibile aumentare il numero di istanze a 2 o più istanze e sfruttare il vantaggio completo del controllo integrità. Questa opzione è consigliata per le applicazioni rivolte all'ambiente di produzione perché aumenterà la disponibilità e le prestazioni dell'app.
  • Il piano servizio app può avere un massimo di un'istanza non integra sostituita all'ora e, al massimo, tre istanze al giorno.
  • Esiste un limite non configurabile per il numero totale di istanze sostituite da Controllo integrità per unità di scala. Se viene raggiunto questo limite, non vengono sostituite istanze non integre. Questo valore viene reimpostato ogni 12 ore.

Domande frequenti

Cosa accade se l'app è in esecuzione in una singola istanza?

Se l'app viene ridimensionata solo in un'istanza e diventa non integra, non verrà rimossa dal servizio di bilanciamento del carico perché questa operazione eliminerebbe completamente l'applicazione. Tuttavia, dopo un'ora di ping non integri continui, l'istanza viene sostituita. Aumentare il numero di istanze a due o più istanze per ottenere il vantaggio di reindirizzamento del controllo integrità. Se l'app è in esecuzione in una singola istanza, è comunque possibile usare la funzionalità di monitoraggio del controllo integrità per tenere traccia dell'integrità dell'applicazione.

Perché le richieste di controllo integrità non vengono visualizzate nei log del server Web?

Le richieste di controllo integrità vengono inviate al sito internamente, quindi la richiesta non verrà visualizzata nei log del server Web. È possibile aggiungere istruzioni di log nel codice controllo integrità per mantenere i log di quando viene eseguito il ping del percorso di controllo integrità.

Le richieste di controllo integrità vengono inviate tramite HTTP o HTTPS?

In Windows servizio app, le richieste di controllo integrità vengono inviate tramite HTTPS quando è abilitato solo HTTPS nel sito. In caso contrario, vengono inviati tramite HTTP. In Linux servizio app, le richieste di controllo integrità vengono inviate solo tramite HTTP e non possono essere inviate tramite HTTPS in questo momento.

Il controllo integrità segue il codice dell'applicazione configurato per i reindirizzamenti tra il dominio predefinito e il dominio personalizzato?

No, la funzionalità Controllo integrità esegue il ping del percorso del dominio predefinito dell'applicazione Web. Se è presente un reindirizzamento dal dominio predefinito a un dominio personalizzato, il codice di stato restituito dal controllo integrità non sarà 200, ma un reindirizzamento (301), che contrassegnerà il ruolo di lavoro non integro.

Cosa accade se sono presenti più app nello stesso piano di servizio app?

Le istanze non integre verranno sempre rimosse dalla rotazione del servizio di bilanciamento del carico indipendentemente dalle altre app nel piano di servizio app (fino alla percentuale specificata in WEBSITE_HEALTHCHECK_MAXUNHEALTHYWORKERPERCENT). Quando un'app in un'istanza rimane non integra per più di un'ora, l'istanza verrà sostituita solo se anche tutte le altre app con controllo integrità abilitato non sono integre. Le app che non hanno il controllo integrità abilitato non verranno prese in considerazione.

Esempio

Si supponga di avere due applicazioni (o un'app con uno slot) con il controllo integrità abilitato, denominato App A e App B. Si trovano nello stesso piano di servizio app e che il piano viene ridimensionato in quattro istanze. Se l'app A diventa non integra in due istanze, il servizio di bilanciamento del carico interrompe l'invio di richieste all'app A in queste due istanze. Le richieste vengono comunque indirizzate all'app B in tali istanze presupponendo che l'app B sia integra. Se l'app A rimane non integra per più di un'ora in queste due istanze, tali istanze vengono sostituite solo se l'app B non è integra anche in tali istanze. Se l'app B è integra, l'istanza non viene sostituita.

Diagramma visivo che illustra lo scenario di esempio precedente.

Nota

Se nel piano (sito C) è presente un altro sito o uno slot senza controllo integrità abilitato, non verrà preso in considerazione per la sostituzione dell'istanza.

Cosa accade se tutte le istanze non sono integre?

Nello scenario in cui tutte le istanze dell'applicazione non sono integre, servizio app non rimuoverà le istanze dal servizio di bilanciamento del carico. In questo scenario, l'uscita di tutte le istanze di app non integre dalla rotazione del servizio di bilanciamento del carico causerebbe un'interruzione dell'applicazione; Tuttavia, la sostituzione delle istanze verrà comunque rispettata.

Il controllo integrità funziona sulle ambiente del servizio app?

Sì, il controllo integrità è disponibile per il ambiente del servizio app v3, ma non per le versioni 1 o 2. Se si usano le versioni precedenti del ambiente del servizio app, è possibile usare la funzionalità di migrazione per eseguire la migrazione dei ambiente del servizio app alla versione 3.

Passaggi successivi