Monitora le modifiche dello stato di integrità delle VM


Questo documento descrive come visualizzare e leggere le voci del log delle modifiche dello stato di integrità di una VM in un gruppo di istanze gestite (MIG) e fornisce specifici casi d'uso per aiutarti a monitorare le VM nel gruppo.

Se hai configurato il controllo di integrità basato sull'applicazione per il MIG, Compute Engine scrive una voce di log ogni volta che cambia lo stato di integrità di un'istanza gestita, ad esempio quando l'istanza passa dallo stato HEALTHY a UNHEALTHY. Queste voci di log ti consentono di monitorare ed eseguire il debug dello stato di integrità di ogni istanza gestita, nonché dello stato complessivo del MIG.

Prima di iniziare

Prezzi

Compute Engine utilizza Cloud Logging per generare voci di log per le modifiche dello stato di integrità delle istanze gestite. Cloud Logging fornisce un'allocazione senza addebiti al mese, al di sopra della quale il prezzo delle voci di log viene calcolato in base al volume di dati. Per saperne di più, consulta il Riepilogo dei prezzi di Cloud Logging.

Per evitare i costi di logging, puoi disattivare i log delle modifiche dello stato di integrità.

Visualizzazione dei log delle modifiche dello stato di integrità

A condizione che i log delle modifiche dello stato di integrità rimangano abilitati, Compute Engine scrive una voce di log nei log della piattaforma ogni volta che cambia lo stato di integrità di un'istanza gestita. Puoi visualizzare questi log per un progetto, per un MIG specifico o per un'istanza gestita specifica.

Visualizzazione dei log per un progetto o un MIG

Per visualizzare le voci di log per un progetto o un MIG specifico, utilizza la consoleGoogle Cloud , gcloud CLI o REST.

Console

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Imposta i seguenti parametri di query:

    • Risorsa: Gestore di gruppi di istanze GCE
    • Nome log: instance_group_manager_events
  3. In alternativa, puoi copiare la seguente query in Query Builder.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*
    

    Puoi limitare la ricerca a un gruppo di istanze gestite specifico utilizzando la seguente query.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  4. Fai clic su Esegui query. I log verranno visualizzati in Risultati delle query.

gcloud

Utilizza il comando gcloud logging read per visualizzare e leggere le voci di log.

Per visualizzare tutti i log delle modifiche dello stato di integrità nel tuo progetto, utilizza il seguente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*'\
    --limit 10

Per visualizzare tutti i log delle modifiche dello stato di integrità per un gruppo di istanze gestite specifico, utilizza il seguente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"' \
    --limit 10

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • MIG_NAME: il MIG per il quale vuoi visualizzare i log delle modifiche dello stato di integrità.

REST

Per visualizzare i log delle modifiche dello stato di integrità, invia una richiesta POST al metodo entries.list.

Per visualizzare tutti i log delle modifiche dello stato di integrità nel tuo progetto, utilizza il seguente comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:*",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Per visualizzare i log delle modifiche dello stato di integrità per un gruppo di istanze gestite specifico, utilizza il seguente comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name=MIG_NAME",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Sostituisci quanto segue:

  • OAUTH2_TOKEN: il token di accesso della tua applicazione. Per i test locali, puoi utilizzare il comando gcloud auth print-access-token per generare un token.
  • PROJECT_ID: il tuo ID progetto.
  • MIG_NAME: il MIG per il quale vuoi visualizzare i log delle modifiche dello stato di integrità.

Per saperne di più sulle singole voci di log, consulta Formato delle voci di log.

A seconda che tu voglia archiviare i log, utilizzarli per l'analisi, trasmettere i log ad altre applicazioni o attivare una funzione Cloud Functions, puoi esportarli in destinazioni come Cloud Storage, BigQuery o Pub/Sub. Per saperne di più sull'esportazione dei log, consulta Panoramica delle esportazioni dei log.

Visualizzazione dei log delle modifiche dello stato di integrità per una VM specifica

Per visualizzare le voci di log per un'istanza gestita specifica, utilizza la consoleGoogle Cloud , gcloud CLI o REST.

Console

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Copia la seguente query in Query Builder.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Fai clic su Esegui query.

gcloud

Utilizza il comando gcloud logging read per visualizzare e leggere le voci di log.

Per visualizzare i log delle modifiche dello stato di integrità per un'istanza gestita, utilizza il seguente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"' \
    --limit 10

Sostituisci quanto segue:

  • PROJECT_ID: il tuo ID progetto.
  • INSTANCE_NAME: l'istanza gestita per la quale vuoi visualizzare i log delle modifiche dello stato di integrità.

REST

Per visualizzare i log delle modifiche dello stato di integrità di un'istanza gestita, invia una richiesta POST al metodo entries.list.

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
        logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
        jsonPayload.instanceHealthStateChange:* AND
        labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME\"",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Sostituisci quanto segue:

  • OAUTH2_TOKEN: il token di accesso della tua applicazione. Per i test locali, puoi utilizzare il comando gcloud auth print-access-token per generare un token.
  • PROJECT_ID: il tuo ID progetto.
  • INSTANCE_NAME: l'istanza gestita per la quale vuoi visualizzare i log delle modifiche dello stato di integrità.

Formato delle voci di log

Le voci di log delle modifiche dello stato di integrità delle istanze contengono informazioni utili per monitorare ed eseguire il debug dello stato delle istanze gestite.

I log vengono scritti nei log della piattaforma con il nome instance_group_manager_events. I log della piattaforma ti aiutano a eseguire il debug e a risolvere i problemi.

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"

Le voci di log delle modifiche dello stato di integrità contengono i seguenti tipi di informazioni:

  • Informazioni generali mostrate nella maggior parte dei log, come gravità, ID progetto, nome e ID del MIG, numero di progetto, timestamp e così via.
  • Campi specifici per lo stato di integrità dell'istanza.

In ogni voce di log delle modifiche dello stato di integrità, il campo jsonPayload.instanceHealthStateChange contiene le seguenti informazioni:

Campo Descrizione
instance URL dell'istanza, basato sull'ID progetto e sul nome dell'istanza.
instanceWithId URL dell'istanza, basato sull'ID progetto e l'ID istanza in formato numerico.
ipAddress Indirizzo IP dell'istanza sottoposto al controllo di integrità.
network URL della risorsa di rete per questa istanza, basato sull'ID progetto e sul nome della rete in formato stringa.
networkWithId URL della risorsa di rete per questa istanza, basato sull'ID progetto e l'ID rete numerici.
healthCheck URL del controllo di integrità configurato per il gruppo di istanze gestite.
previousDetailedHealthState Stato di integrità precedente dell'istanza. Per l'elenco dei possibili stati, consulta Stati di integrità.
detailedHealthState Stato di integrità attuale dell'istanza. Per l'elenco dei possibili stati, consulta Stati di integrità.
notificationTime Timestamp che indica quando è avvenuta la modifica dello stato di integrità.

I campi dei log di tipo booleano in genere vengono visualizzati solo se hanno un valore true. Se un campo booleano ha un valore false, viene omesso dal log.

La codifica UTF-8 è applicata in modo forzato per i campi di log. I caratteri non UTF-8 vengono sostituiti con punti interrogativi.

Esempio di voce di log

L'esempio seguente mostra la modifica dello stato di integrità di un'istanza VM da HEALTHY a UNHEALTHY:

  {
    "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events",
    "resource": {
      "type": "gce_instance_group_manager",
      "labels": {
        "instance_group_manager_id": "3138236342290985981",
        "instance_group_manager_name": "my-mig",
        "project_id": "my-project",
        "location": "europe-west3"
      }
    },
    "labels": {
      "compute.googleapis.com/instance_id": "6498902454451155884",
      "compute.googleapis.com/instance_location": "europe-west3-a",
      "compute.googleapis.com/instance_name": "my-mig-a"
    },
    "timestamp": "2019-11-19T15:47:57.127Z",
    "severity": "INFO",
    "jsonPayload": {
      "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent",
      "instanceHealthStateChange": {
        "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a",
        "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884",
        "ipAddress": "10.0.0.4",
        "network": "projects/my-project/global/networks/net-1",
        "networkWithId": "projects/123456/global/networks/456",
        "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check",
        "previousDetailedHealthState": "HEALTHY",
        "detailedHealthState": "UNHEALTHY",
        "notificationTime": "2019-11-19T15:47:56.444Z"
      }
    },
    "receiveTimestamp": "2019-11-19T15:47:57.296439184Z"
  }
  

Casi d'uso

Puoi utilizzare i log delle modifiche dello stato di integrità nei seguenti scenari di monitoraggio o debug:

  • Per scoprire la frequenza con cui gli stati di integrità di una determinata istanza VM sono cambiati nel tempo.
  • Per valutare la frequenza con cui un MIG ha registrato modifiche dello stato di integrità delle sue istanze.
  • Per identificare le istanze VM problematiche che passano spesso a UNHEALTHY.
  • Per scoprire cosa ha causato un tentativo di riparazione automatica.
  • Per scoprire se un tentativo di riparazione automatica è andato a buon fine per un'istanza VM specifica.
  • Per ottimizzare la configurazione del controllo di integrità per un'applicazione determinando un ritardo iniziale adeguato per la riparazione automatica.

Monitoraggio delle modifiche dello stato di integrità di una VM

Puoi monitorare la frequenza con cui cambia lo stato di integrità di un'istanza VM creando una metrica che monitora le modifiche dello stato di integrità di quella determinata VM.

Per creare la metrica e monitorare le modifiche, segui questi passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando l'ID progetto e il nome dell'istanza.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.

  4. Nella pagina Crea una metrica, segui questi passaggi:

    1. Imposta il Tipo di metrica su Contatore.
    2. Inserisci un Nome metrica di log, ad esempio health-mig-xyzq.

      La sezione Crea filtro mostra la query di log di Esplora log. Puoi anche configurare il filtro della metrica in modo da tenere conto solo degli stati di interruzione, come UNHEALTHY e TIMEOUT, aggiungendo severity>=WARNING al filtro.

    3. In Etichette, fai clic su Aggiungi etichetta.

    4. Inserisci un Nome etichetta, ad esempio health_state.

    5. Imposta Tipo di etichetta su STRING.

    6. Imposta Nome campo su jsonPayload.instanceHealthStateChange.detailedHealthState. In questo modo potrai distinguere tra le diverse modifiche dello stato di integrità.

    7. Fai clic su Fine per aggiungere l'etichetta.

    8. Fai clic su Crea metrica.

  5. Vai alla pagina Metriche basate su log e trova la metrica appena creata.

  6. Fai clic sul menu nella riga della metrica e seleziona Visualizza in Esplora metriche. Si apre Esplora metriche e viene visualizzato il grafico che rappresenta le modifiche dello stato di integrità dell'istanza VM specificata nella query.

Monitoraggio delle modifiche dello stato di integrità di tutte le VM in un MIG

Puoi monitorare le modifiche dello stato di integrità di tutte le istanze gestite creando una metrica che monitora le modifiche dello stato di integrità delle istanze gestite.

Per creare la metrica e monitorare le modifiche, segui questi passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando il tuo ID progetto e il nome del gruppo di istanze gestite.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.

  4. Nella pagina Crea una metrica, segui questi passaggi:

    1. Imposta il Tipo di metrica su Contatore.
    2. Inserisci un Nome metrica di log, ad esempio health-mig-xyzq.
    3. In Etichette, fai clic su Aggiungi etichetta.
    4. Inserisci un Nome etichetta, ad esempio health_state.
    5. Imposta Tipo di etichetta su STRING.
    6. Imposta Nome campo su jsonPayload.instanceHealthStateChange.detailedHealthState. In questo modo potrai distinguere tra le diverse modifiche dello stato di integrità.
    7. Fai clic su Fine per aggiungere l'etichetta.
    8. Fai clic su Crea metrica.
  5. Vai alla pagina Metriche basate su log e trova la metrica appena creata.

  6. Fai clic sul menu nella riga della metrica e seleziona Visualizza in Esplora metriche. Si apre Esplora metriche e viene visualizzato il grafico che rappresenta le modifiche dello stato di integrità di tutte le istanze VM nel gruppo di istanze gestite specificato nella query.

Identificazione delle VM che passano spesso allo stato non integro

Puoi identificare le VM problematiche che passano spesso allo stato UNHEALTHY creando una metrica che monitora le modifiche dello stato di integrità di tutte le istanze VM nel MIG e raggruppando la metrica per istanze.

Per creare la metrica e raggruppare per istanze, segui questi passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando il tuo ID progetto e il nome del gruppo di istanze gestite.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.

  4. Nella pagina Crea una metrica, segui questi passaggi:

    1. Imposta il Tipo di metrica su Contatore.
    2. Inserisci un Nome metrica di log, ad esempio health-mig-xyzq.
    3. In Etichette, fai clic su Aggiungi etichetta.
    4. Inserisci un Nome etichetta, ad esempio health_state.
    5. Imposta Tipo di etichetta su STRING.
    6. Imposta Nome campo su jsonPayload.instanceHealthStateChange.detailedHealthState. In questo modo potrai distinguere tra le diverse modifiche dello stato di integrità.
    7. Fai clic su Fine per aggiungere l'etichetta.
    8. Allo stesso modo, aggiungi una seconda etichetta, ad esempio instance, con Nome campo impostato su jsonPayload.instanceHealthStateChange.instance.
    9. Fai clic su Crea metrica.
  5. Vai alla pagina Metriche basate su log e trova la metrica appena creata.

  6. Fai clic sul menu nella riga della metrica e seleziona Visualizza in Esplora metriche. Si apre Esplora metriche e viene visualizzato il grafico che rappresenta le modifiche dello stato di integrità di tutte le istanze VM nel gruppo di istanze gestite specificato nella query.

  7. Imposta Raggruppa per su instance per visualizzare il numero aggregato di modifiche dello stato di integrità per ogni istanza.

Le istanze con il maggior numero di modifiche dello stato di integrità aggregate sono quelle che passano più spesso allo stato non integro.

Controllo della causa di un tentativo di riparazione automatica

Per scoprire cosa ha causato un tentativo di riparazione automatica, filtra i log per le operazioni repair per una determinata istanza VM.

Per filtrare le operazioni di riparazione, segui questi passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando l'ID progetto e il nome dell'istanza.

    resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$"
    
  3. Fai clic su Esegui query. La sezione Risultati query mostra tutti i tentativi di riparazione automatica sulla VM con il motivo della riparazione automatica in protoPayload.status.message.

Verifica della riuscita della riparazione automatica per una VM

Per scoprire se un tentativo di riparazione automatica è andato a buon fine per un'istanza VM, filtra i log per le operazioni repair e le modifiche dello stato di integrità in base al nome dell'istanza VM. Se lo stato di integrità dell'istanza è passato a HEALTHY dopo un'operazione di riparazione, vedrai un log delle modifiche dello stato di integrità corrispondente. Segui i passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando l'ID progetto e il nome dell'istanza.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$")
    OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    La prima parte della query mostra le operazioni di riparazione dell'istanza, che indicano che la ricreazione è stata attivata dalla riparazione automatica del MIG per ripristinare l'integrità dell'istanza. La seconda parte della query mostra tutte le modifiche dello stato di integrità dell'istanza VM.

    In Risultati delle query, l'evento di modifica dello stato di integrità con detailedHealthState impostato su HEALTHY poco dopo un'operazione di riparazione indica che il tentativo di riparazione automatica è riuscito.

Determinazione del valore del ritardo iniziale di un MIG

Con il logging degli stati di integrità delle istanze VM è più facile determinare un valore appropriato per il ritardo iniziale della riparazione automatica del MIG. Puoi utilizzare i log per osservare il tempo che intercorre tra il termine dell'operazione instances.insert e la ricezione del primo indicatore di stato integro per un insieme di istanze in un gruppo. Questo intervallo indica il tempo necessario per l'avvio completo delle istanze. Poiché alcune VM potrebbero avviarsi più lentamente di altre, Google consiglia di aggiungere un margine al tempo di inizializzazione osservato (dall'operazione di inserimento allo stato integro) quando si specifica il ritardo iniziale nella policy di riparazione automatica.

Per misurare il tempo che intercorre tra l'operazione di inserimento dell'istanza e il momento in cui l'istanza è in stato integro, esegui una query per le operazioni insert e i log delle modifiche di stato in base al nome dell'istanza VM. Utilizza i timestamp di entrambe le operazioni per calcolare il tempo di inizializzazione dell'istanza. Segui i passaggi:

  1. Vai a Esplora log nella console Google Cloud .

    Vai a Esplora log

  2. Inserisci la seguente query in Query Builder, utilizzando l'ID progetto e il nome dell'istanza.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND
    protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND
    operation.last="true" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$") OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    La prima parte della query mostra il completamento dell'operazione di inserimento della VM. La seconda parte mostra tutte le modifiche dello stato di integrità della VM.

    In Risultati delle query, il timestamp dell'evento di modifica dello stato di integrità con detailedHealthState impostato su HEALTHY poco dopo l'operazione di inserimento indica il tempo necessario per l'avvio di questa VM.

  3. Ripeti i passaggi per qualche altra VM per ottenere un valore approssimativo migliore del parametro di ritardo iniziale.