Questo documento fornisce informazioni per aiutarti a risolvere i problemi di autorizzazione e credenziali dellOps Agent sulle istanze VM di Compute Engine.
Se l'Ops Agent segnala errori di accesso o autorizzazione oppure se l'agente sembra funzionare normalmente, ma non sono presenti dati o i criteri di avviso non funzionano come previsto, verifica che le credenziali dell'istanza VM siano corrette, incluso che specifichino il progetto corretto:
Se utilizzi un'istanza VM di Compute Engine con credenziali standard (non con chiave privata), è improbabile che i dati vengano inviati al progetto sbagliato, ma le tue credenziali potrebbero comunque essere insufficienti. Per informazioni sulle credenziali, vedi Autorizzazione dell'agente operativo. Per verificare le tue credenziali, consulta la pagina Verifica delle credenziali di Compute Engine.
Se utilizzi le credenziali con chiave privata nell'istanza Compute Engine, le credenziali potrebbero non essere valide o potrebbero provenire dal progetto sbagliato. Per informazioni sulle credenziali, vedi Autorizzare Ops Agent. Per verificare le tue credenziali, consulta Verifica delle credenziali con chiave privata.
Verifica delle credenziali di Compute Engine
Utilizza la pagina Istanze VM di Compute Engine della console Google Cloud per verificare che la tua istanza VM di Compute Engine disponga di credenziali adeguate per Ops Agent. Le credenziali vengono in genere aggiunte alaccount di serviziot predefinito di tutte le nuove istanze VM di Compute Engine, ma è possibile sovrascrivere questi valori predefiniti durante la creazione di un'istanza.
Nella Google Cloud console, vai alla pagina Istanze VM.
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.
- Se necessario, cambia il progetto Google Cloud corrente in quello associato alla tua istanza VM di Compute Engine. Ad esempio, se ti viene chiesto di attivare la fatturazione, significa che il progetto attuale non contiene istanze VM di Compute Engine.
- Nella pagina Istanze VM, fai clic sul nome dell'istanza VM. Viene visualizzata la pagina di dettaglio dell'istanza VM.
- Nella pagina Dettagli istanza VM, cerca la sezione Ambiti di accesso
all'API Cloud:
- Se vedi "Consenti l'accesso completo a tutte le API Cloud", significa che hai credenziali adeguate.
- Se accanto all'API Stackdriver Monitoring vedi un nome precedente per l'API Cloud Monitoring e disponi dell'autorizzazione Solo scrittura o Completa, le credenziali sono adeguate.
- In caso contrario, l'account di servizio predefinito della tua istanza non dispone delle credenziali necessarie all'agente. Per utilizzare l'agente sull'istanza, devi aggiungere le credenziali dell'account di servizio chiavi privata. Per le istruzioni, vedi Aggiungere le credenziali.
Se hai le credenziali predefinite corrette, vai a Installazione su Linux e Windows.
Verifica delle credenziali della chiave privata
Per verificare che le credenziali della chiave privata valide siano installate sull'istanza VM, verifica innanzitutto che il file delle credenziali esista nella posizione prevista, quindi verifica che le informazioni nel file delle credenziali siano valide. Le credenziali precedentemente valide possono essere revocate utilizzando la sezione IAM e amministrazione > Service account della console Google Cloud . Se non sono presenti credenziali valide, consulta la sezione Aggiunta di credenziali per sostituire quelle esistenti o aggiungerne di nuove.
Sono presenti le credenziali?
Per verificare se le credenziali del account di servizio con chiave privata sono presenti nell'istanza, esegui i seguenti comandi Linux sull'istanza:
sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json
Se uno dei due comandi mostra un file come quello riportato di seguito, la tua istanza
potrebbe avere credenziali di chiave privata valide. Se entrambi i comandi mostrano un file, viene utilizzato il file indicato da GOOGLE_APPLICATION_CREDENTIALS
.
{
"type": "service_account",
"project_id": "{your-project-id}",
"private_key_id": "{your-private-key-id}",
"private_key": "{your-private-key}",
"client_email": "{your-project-number}-{your-key}@developer.gserviceaccount.com",
"client_id": "{your-client-id}",
"auth_uri": "https://accounts.google.com/o/oauth2/auth",
"token_uri": "https://accounts.google.com/o/oauth2/token",
"auth_provider_x509_cert_url": "{x509-cert-url}",
"client_x509_cert_url": "{client-x509-cert-url}"
}
Se non sono presenti file di credenziali, consulta Aggiunta di credenziali.
Le credenziali sono valide?
Nel file delle credenziali, il campo project_id
è il tuo progetto Google Cloud , client_email
identifica il account di servizio nel progetto e private_key_id
identifica la chiave privata nel account di servizio. Abbina queste informazioni a quelle
visualizzate nella sezione IAM e amministrazione > Service account della
consoleGoogle Cloud .
Il file delle credenziali non è valido se una delle seguenti condizioni è vera:
- Stai controllando un'istanza VM di Compute Engine, ma il progettoGoogle Cloud nel file delle credenziali non è il progetto che contiene l'istanza.
- Il account di servizio elencato non esiste. Potrebbe essere stato eliminato.
- Il account di servizio elencato non dispone dei ruoli corretti attivati. Deve
avere almeno
roles/monitoring.metricWriter
(Monitoring Metric Writer) per la raccolta delle metriche eroles/logging.logWriter
(Logs Writer) per la scrittura dei log. - La chiave privata non esiste. Potrebbe essere stato revocato.
Se l'account di servizio è corretto, ma la chiave privata è stata revocata, puoi creare una nuova chiave privata e copiarla nell'istanza. In caso contrario, devi creare un nuovo account di servizio come descritto nella sezione successiva, Aggiunta delle credenziali.
Generazione di nuove credenziali
Se le credenziali non sono valide, procedi nel seguente modo:
- Per ogni progetto connesso contenente istanze che devono essere autorizzate
con una chiave privata —
istanze Compute Engine create
senza includere l'ambito di accesso
https://www.googleapis.com/auth/monitoring.write
— crea un account di servizio e genera una chiave privata, se non esistono già. Segui questi passaggi:-
Nella console Google Cloud , vai alla pagina settings Impostazioni:
Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.
- Seleziona la scheda Ambito metrica.
- Identifica il progetto contenente le risorse Compute Engine in questione e vai alla consoleGoogle Cloud .
- Vai alla pagina Account di servizio IAM della
console Google Cloud , seleziona il tuo progetto Google Cloud , crea un nuovo
service account e poi genera una nuova chiave privata per questo
service account.
Per eseguire questi passaggi, procedi in uno dei seguenti modi:
Vai alla pagina Service account IAM, seleziona il tuo progetto Google Cloud e poi segui i passaggi descritti in Creare un service account:
Fai clic sul pulsante seguente e seleziona il tuo progetto Google Cloud :
Crea account di servizio e scarica la chiave
Il pulsante precedente automatizza il processo di creazione e download di una chiave nel tuo sistema locale per l'account di servizio specifico dell'agente. Se necessario, il processo crea anche il account di servizio richiesto e garantisce che disponga delle autorizzazioni corrette. I service account specifici dell'agente hanno un nome simile a
stackdriver-1234@PROJECT_ID.iam.gserviceaccount.com
. Riceverai una notifica del completamento di queste azioni con una finestra di dialogo simile alla seguente:
-
Sostituisci la chiave privata sulle istanze corrispondenti al account di serviziot in questione.
- Su Linux, sostituisci la chiave privata che si trova in
/etc/google/auth/application_default_credentials.json
. - Su Windows, sostituisci la chiave privata che si trova in
C:\ProgramData\Google\Auth\application_default_credentials.json
. Per saperne di più, vedi Copiare la chiave privata nell'istanza.
- Su Linux, sostituisci la chiave privata che si trova in
Riavvia l'agente
- Su Linux, esegui
sudo service stackdriver-agent restart
- Su Windows, vai alla console di gestione dei servizi e riavvia il servizio
Cloud Monitoring
.
- Su Linux, esegui
Se hai più progetti che richiedono nuove chiavi private, ripeti questa procedura per ciascuno di essi.
Per verificare che la chiave privata sia corretta, consulta Sono presenti le credenziali?. In particolare:
- Leggi il file JSON della chiave privata sull'istanza, ad esempio (su Linux):
sudo cat /etc/google/auth/application_default_credentials.json
- Assicurati che il valore del campo
project_id
corrisponda a quello del progetto monitorato per cui hai appena generato le credenziali.