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 e fornisce casi d'uso specifici per aiutarti a monitorare le VM nel gruppo.
Se hai configurato il controllo di integrità basato su applicazione per il gruppo di istanze gestite, Compute Engine scrive una voce di log ogni volta che lo stato di integrità di un'istanza gestita cambia, ad esempio quando l'istanza passa dallo stato HEALTHY
allo stato UNHEALTHY
. Queste voci di log consentono di monitorare ed eseguire il debug dello stato di integrità di ogni istanza gestita e dell'integrità complessiva del gruppo di istanze gestite.
Prima di iniziare
- Vedi Configurare il controllo di integrità e la riparazione automatica.
-
Se non l'hai ancora fatto, configura l'autenticazione.
L'autenticazione è il processo mediante il quale viene verificata l'identità per l'accesso ai servizi e alle API Google Cloud.
Per eseguire codice o esempi da un ambiente di sviluppo locale, puoi autenticarti in Compute Engine nel seguente modo.
Seleziona la scheda relativa a come prevedi di utilizzare gli esempi in questa pagina:
Console
Quando utilizzi la console Google Cloud per accedere ai servizi e alle API di Google Cloud, non devi configurare l'autenticazione.
gcloud
-
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
- Imposta una regione e una zona predefinite.
REST
Per utilizzare gli esempi di API REST in questa pagina in un ambiente di sviluppo locale, devi utilizzare le credenziali che fornisci a gcloud CLI.
Installa Google Cloud CLI, quindi initialize eseguendo questo comando:
gcloud init
-
Prezzi
Compute Engine utilizza Cloud Logging per generare voci di log per le modifiche dello stato di integrità delle istanze gestite. Cloud Logging ti offre un'allocazione gratuita al mese, dopodiché i prezzi delle voci di log in base al volume di dati. Per ulteriori informazioni, consulta il riepilogo dei prezzi di Cloud Logging.
Per evitare i costi di logging, puoi disabilitare i log delle modifiche dello stato di integrità.
Visualizzazione dei log delle modifiche dello stato di integrità
Se i log delle modifiche dello stato di integrità rimangono abilitati, Compute Engine scrive una voce di log nei log della piattaforma ogni volta che cambia lo stato di un'istanza gestita. Puoi visualizzare questi log per un progetto, per un gruppo di istanze gestite o un'istanza gestita specifica.
Visualizzazione dei log per un progetto o un gruppo di istanze gestite
Per visualizzare le voci di log per un progetto o per un gruppo di istanze gestite specifico, utilizza la console Google Cloud, gcloud CLI o REST.
Console
Vai a Esplora log nella console Google Cloud.
Imposta i seguenti parametri di ricerca:
- Risorsa - Gestore di gruppi di istanze GCE
- Nome log -
instance_group_manager_events
In alternativa, puoi copiare la seguente query nel generatore di query.
resource.type="gce_instance_group_manager" AND logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND jsonPayload.instanceHealthStateChange:*
Puoi restringere 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"
Fai clic su Esegui query. I risultati delle query mostreranno i log.
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 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 uno specifico gruppo di istanze gestite, 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 gruppo di istanze gestite per cui vuoi visualizzare i log delle modifiche dello stato di integrità.
REST
Per visualizzare i log delle modifiche dello stato di integrità, effettua una richiesta POST
al metodo entries.list
.
Per visualizzare tutti i log delle modifiche dello stato di integrità nel progetto, utilizza questo 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 uno specifico gruppo di istanze gestite, 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 comandogcloud auth print-access-token
per generare un token.PROJECT_ID
: il tuo ID progetto.MIG_NAME
: il gruppo di istanze gestite per cui vuoi visualizzare i log delle modifiche dello stato di integrità.
Per ulteriori informazioni su ciascuna voce 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 Cloud Function, puoi esportare i log in destinazioni come Cloud Storage, BigQuery o Pub/Sub. Per ulteriori informazioni sull'esportazione dei log, consulta la 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 console Google Cloud, gcloud CLI o REST.
Console
Vai a Esplora log nella console Google Cloud.
Copia la seguente query nel generatore di query.
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"
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à di 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, effettua 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 usare il comandogcloud 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 relative allo stato di integrità dell'istanza contengono informazioni utili per il monitoraggio e il debug dello stato delle istanze gestite.
I log vengono scritti nei log della piattaforma con il nome log instance_group_manager_events
. I log della piattaforma
consentono di eseguire il debug e risolvere i problemi.
logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events"
Le voci del log delle modifiche dello stato di integrità contengono i seguenti tipi di informazioni:
- Informazioni generali mostrate nella maggior parte dei log, ad esempio gravità, ID progetto, nome e ID del gruppo di istanze gestite, numero di progetto, timestamp e così via.
- Campi specifici per lo stato di integrità dell'istanza.
All'interno di ogni voce di log delle modifiche dello stato di integrità, il campo jsonPayload.instanceHealthStateChange
contiene le seguenti informazioni:
Campo | Description |
---|---|
instance |
URL per l'istanza, in base all'ID progetto della stringa e al nome dell'istanza. |
instanceWithId |
URL dell'istanza, in base al relativo ID progetto numerico e ID istanza. |
ipAddress |
Indirizzo IP dell'istanza, come verificato dal controllo di integrità. |
network |
URL della risorsa di rete per questa istanza, in base all'ID progetto della stringa e al nome della rete. |
networkWithId |
URL della risorsa di rete per questa istanza, in base al relativo ID progetto numerico e ID rete. |
healthCheck |
URL per il 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 del momento in cui si è verificata la modifica dello stato di integrità. |
I campi log di tipo booleano solitamente vengono visualizzati solo se hanno un valore true
.
Se un campo booleano ha il valore false
, viene omesso dal log.
Ai campi di log viene applicata la codifica UTF-8. I caratteri non UTF-8 vengono sostituiti da 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:
- Scopri con quale frequenza una determinata istanza VM ha modificato lo stato di integrità nel tempo.
- Valuta la frequenza con cui un gruppo di istanze gestite ha riscontrato cambiamenti dello stato di integrità delle istanze.
- Identifica le istanze VM problematiche che spesso eseguono
UNHEALTHY
. - Scopri il motivo di un tentativo di riparazione automatica.
- Scoprire se un tentativo di riparazione automatica è riuscito per un'istanza VM specifica.
- Perfeziona la configurazione del controllo di integrità per un'applicazione determinando un ritardo iniziale appropriato per la riparazione automatica.
Monitoraggio delle modifiche dello stato di integrità di una VM
Puoi monitorare la frequenza con cui lo stato di integrità di un'istanza VM cambia creando una metrica che tenga traccia delle modifiche dello stato di integrità di quella determinata VM.
Per creare la metrica e monitorare le modifiche:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, utilizzando il tuo 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"
Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.
Nella pagina Crea metrica di log, segui questi passaggi:
- Imposta Tipo di metrica su Contatore.
Inserisci un Nome metrica di log, ad esempio
health-mig-xyzq
.La sezione Crea filtro visualizza la query di log da Esplora log. Puoi anche configurare il filtro della metrica in modo da tenere conto solo degli stati invasivi, come
UNHEALTHY
eTIMEOUT
, aggiungendoseverity>=WARNING
al filtro.In Etichette, fai clic su Aggiungi etichetta.
Inserisci un Nome etichetta, ad esempio
health_state
.Imposta Tipo di etichetta su
STRING
.Imposta Nome campo su
jsonPayload.instanceHealthStateChange.detailedHealthState
. Ciò ti consentirà di distinguere tra diverse modifiche dello stato di integrità.Fai clic su Fine per aggiungere l'etichetta.
Fai clic su Crea metrica.
Vai alla pagina Metriche basate su log e trova la metrica appena creata.
Fai clic sul menu more_vert nella riga della metrica e seleziona Visualizza in Metrics Explorer. Si apre Metrics Explorer e mostra 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 gruppo di istanze gestite
Puoi monitorare le modifiche dello stato di integrità di tutte le istanze gestite creando una metrica che tenga traccia delle modifiche dello stato di integrità delle istanze gestite.
Per creare la metrica e monitorare le modifiche:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, 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"
Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.
Nella pagina Crea metrica di log, segui questi passaggi:
- Imposta Tipo di metrica su Contatore.
- Inserisci un Nome metrica di log, ad esempio
health-mig-xyzq
. - In Etichette, fai clic su Aggiungi etichetta.
- Inserisci un Nome etichetta, ad esempio
health_state
. - Imposta Tipo di etichetta su
STRING
. - Imposta Nome campo su
jsonPayload.instanceHealthStateChange.detailedHealthState
. Ciò ti consentirà di distinguere tra diverse modifiche dello stato di integrità. - Fai clic su Fine per aggiungere l'etichetta.
- Fai clic su Crea metrica.
Vai alla pagina Metriche basate su log e trova la metrica appena creata.
Fai clic sul menu more_vert nella riga della metrica e seleziona Visualizza in Metrics Explorer. Metrics Explorer si apre e mostra il grafico che rappresenta le modifiche dello stato di integrità di tutte le istanze VM nel gruppo di istanze gestite che hai specificato nella query.
Identificare le VM che presentano spesso uno stato non integro
Puoi identificare le VM problematiche che spesso passano UNHEALTHY
creando una metrica che tenga traccia delle modifiche dello stato di integrità di tutte le istanze VM nel tuo gruppo di istanze gestite e raggruppando la metrica per istanze.
Per creare la metrica e il raggruppamento per istanze:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, 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"
Nella sezione Risultati delle query, fai clic su Azioni e poi su Crea metrica.
Nella pagina Crea metrica di log, segui questi passaggi:
- Imposta Tipo di metrica su Contatore.
- Inserisci un Nome metrica di log, ad esempio
health-mig-xyzq
. - In Etichette, fai clic su Aggiungi etichetta.
- Inserisci un Nome etichetta, ad esempio
health_state
. - Imposta Tipo di etichetta su
STRING
. - Imposta Nome campo su
jsonPayload.instanceHealthStateChange.detailedHealthState
. Ciò ti consentirà di distinguere tra diverse modifiche dello stato di integrità. - Fai clic su Fine per aggiungere l'etichetta.
- Allo stesso modo, aggiungi una seconda etichetta, ad esempio
instance
, con il Nome campo impostato sujsonPayload.instanceHealthStateChange.instance
. - Fai clic su Crea metrica.
Vai alla pagina Metriche basate su log e trova la metrica appena creata.
Fai clic sul menu more_vert nella riga della metrica e seleziona Visualizza in Metrics Explorer. Metrics Explorer si apre e mostra il grafico che rappresenta le modifiche dello stato di integrità di tutte le istanze VM nel gruppo di istanze gestite che hai specificato nella query.
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à in forma aggregata sono quelle che più spesso risultano in stato non integro.
Verificare la causa di un tentativo di riparazione automatica
Puoi scoprire la causa di un tentativo di riparazione automatica filtrando i log per le operazioni repair
per una determinata istanza VM.
Per filtrare le operazioni di riparazione:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, utilizzando il tuo 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$"
Fai clic su Esegui query. I risultati delle query mostrano tutti i tentativi di riparazione automatica sulla VM con il motivo della riparazione automatica in
protoPayload.status.message
.
Controllo dell'esito positivo della riparazione automatica per una VM in corso...
Puoi scoprire se un tentativo di riparazione automatica è riuscito per un'istanza VM filtrando i log per le operazioni repair
e le modifiche di integrità in base al nome dell'istanza VM.
Se lo stato di integrità dell'istanza è cambiato in HEALTHY
dopo un'operazione di riparazione,
vedrai un log delle modifiche dello stato di integrità corrispondente. Procedi nel seguente modo:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, utilizzando il tuo 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 dei gruppi di istanze gestite 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 suHEALTHY
subito dopo un'operazione di riparazione indica che il tentativo di riparazione automatica è riuscito.
Determinazione del valore di ritardo iniziale di un gruppo di istanze gestite
La determinazione di un valore di ritardo iniziale appropriato per la riparazione automatica dei gruppi di istanze gestite è più semplice con il logging dello stato di integrità delle istanze VM. Puoi
utilizzare i log per osservare il tempo tra il completamento dell'operazione instances.insert
e la ricezione del primo indicatore integro per un insieme di istanze
in un gruppo. Questo intervallo di tempo mostra il tempo necessario per l'avvio completo delle istanze.
Poiché alcune VM potrebbero avviarsi più lentamente di altre, Google consiglia di aggiungere un po' di margine al tempo di inizializzazione osservato (dall'operazione di inserimento allo stato integro) quando si specifica il ritardo iniziale nel criterio di riparazione automatica.
Per misurare il tempo tra l'operazione di inserimento dell'istanza e il raggiungimento dello stato integro dell'istanza, esegui una query per le operazioni insert
e i log delle modifiche di integrità in base al nome dell'istanza VM. Usa i timestamp di entrambe le operazioni per calcolare
il tempo di inizializzazione. Procedi nel seguente modo:
Vai a Esplora log nella console Google Cloud.
Inserisci la seguente query nel builder di query, utilizzando il tuo 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.
Nei Risultati delle query, il timestamp dell'evento di modifica dello stato di integrità con
detailedHealthState
impostato suHEALTHY
subito dopo l'operazione di inserimento rivela il tempo necessario per l'avvio di questa VM.Ripeti i passaggi per alcune VM in più per ottenere un valore approssimativo del parametro di ritardo iniziale.