Risolvere i problemi relativi alle credenziali

Questo documento fornisce informazioni utili per risolvere i problemi di autorizzazione e credenziali di Ops Agent nelle istanze VM di Compute Engine.

Se Ops Agent segnala errori di accesso o di autorizzazione oppure se l'agente sembra funzionare normalmente ma i dati non sono disponibili o i criteri di avviso non funzionano come previsto, verifica che le credenziali dell'istanza VM siano corrette e che specifichi il progetto corretto:

  • Se utilizzi un'istanza VM di Compute Engine con credenziali standard (non a chiave privata), è improbabile che i dati vadano al progetto sbagliato, ma le tue credenziali potrebbero essere comunque carenti. Per informazioni sulle credenziali, vedi Autorizzare Ops Agent. Per verificare le credenziali, consulta Verificare le credenziali di Compute Engine.

  • Se utilizzi credenziali di chiave privata sull'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 credenziali, vedi Verifica delle credenziali della 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. In genere le credenziali vengono aggiunte nell'account di servizio predefinito di tutte le nuove istanze VM di Compute Engine. Tuttavia, è possibile sovrascrivere queste impostazioni durante la creazione di un'istanza.

Nella console Google Cloud, vai alla pagina Istanze VM:

Vai a Istanze VM

Se usi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Compute Engine.

  1. Se necessario, modifica l'attuale progetto Google Cloud in modo che corrisponda a quello associato alla tua istanza VM di Compute Engine. Ad esempio, se ti viene chiesto di abilitare la fatturazione, significa che nel progetto attuale non sono presenti istanze VM di Compute Engine.
  2. Nella pagina Istanze VM, fai clic sul nome dell'istanza VM. Viene visualizzata la pagina dei dettagli dell'istanza VM.
  3. Nella pagina Dettagli istanza VM, cerca sotto l'intestazione Ambiti di accesso all'API Cloud:
    • Se vedi il messaggio "Consenti l'accesso completo a tutte le API Cloud", significa che disponi di credenziali adeguate.
    • Se accanto all'API Stackdriver Monitoring vedi un nome meno recente per l'API Cloud Monitoring, che indica che disponi dell'autorizzazione di sola scrittura o completa, significa che disponi delle credenziali adeguate.
    • In caso contrario, l'account di servizio predefinito della tua istanza non dispone delle credenziali necessarie dall'agente. Per usare l'agente sull'istanza, devi aggiungere le credenziali dell'account di servizio chiavi privata. Per le istruzioni, consulta Aggiungere le credenziali.

Se disponi delle credenziali predefinite corrette, passa direttamente alla sezione Installazione su Linux e Windows.

Verifica delle credenziali della chiave privata in corso...

Per verificare che nell'istanza VM siano installate credenziali con chiave privata valide, verifica innanzitutto che il file delle credenziali esista nella posizione prevista, quindi verifica che le informazioni contenute nel file delle credenziali siano valide. Le credenziali valide in precedenza possono essere revocate utilizzando la sezione IAM e amministrazione > Account di servizio della console Google Cloud. Se non sono presenti credenziali valide, consulta la sezione Aggiungere credenziali per sostituire quelle esistenti o per aggiungerne di nuove.

Le credenziali sono presenti?

Per verificare se nell'istanza sono presenti credenziali dell'account di servizio chiavi privata, esegui i seguenti comandi Linux nell'istanza:

sudo cat $GOOGLE_APPLICATION_CREDENTIALS
sudo cat /etc/google/auth/application_default_credentials.json

Se uno dei due comandi visualizza un file come quello mostrato di seguito, l'istanza potrebbe avere credenziali di chiave privata valide. Se entrambi i comandi visualizzano un file, viene utilizzato il file indicato con 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 delle credenziali.

Le credenziali sono valide?

Nel file delle credenziali, il campo project_id è il tuo progetto Google Cloud, client_email identifica l'account di servizio nel progetto e private_key_id identifica la chiave privata nell'account di servizio. Abbina queste informazioni a quanto visualizzato nella sezione IAM e amministrazione > Account di servizio della console Google Cloud.

Il file delle credenziali non è valido se una delle seguenti condizioni è vera:

  • Stai controllando un'istanza VM di Compute Engine, ma il progetto Google Cloud nel file delle credenziali non è quello che contiene la tua istanza.
  • L'account di servizio elencato non esiste. Potrebbe essere stato eliminato.
  • Per l'account di servizio in elenco non sono abilitati i ruoli corretti. Deve avere almeno roles/monitoring.metricWriter (Writer metriche Monitoring) per la raccolta delle metriche e roles/logging.logWriter (Writer log) per la scrittura di log.
  • La chiave privata non esiste. Potrebbe essere stato revocato.

Se l'account di servizio è a posto, 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 Aggiunta di credenziali riportata di seguito.

Generazione delle nuove credenziali in corso...

Se le credenziali non sono valide:

  1. Per ogni progetto connesso contenente istanze che devono essere autorizzate con una chiave privata (istanze di 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à. Procedi come indicato di seguito:
    1. Nella console Google Cloud, vai alla pagina  Impostazioni di Monitoring:

      Vai alle impostazioni di Monitoring

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Monitoring.

    2. Seleziona la scheda Riepilogo. Identifica il progetto contenente le risorse Compute Engine in questione e vai alla console Google Cloud.
    3. Vai alla pagina Account di servizio IAM della console Google Cloud, seleziona il progetto Google Cloud, crea un nuovo account di servizio, quindi genera una nuova chiave privata per quell'account.

      Per farlo, procedi in uno dei seguenti modi:

      • Vai alla pagina Account di servizio IAM, seleziona il tuo progetto Google Cloud, quindi segui i passaggi descritti in Creare un account di servizio:

        Vai agli account di servizio IAM

      • Fai clic sul pulsante seguente e seleziona il tuo progetto Google Cloud:

        Crea l'account di servizio e scarica la chiave

        Il pulsante precedente automatizza il processo di creazione e download di una chiave nel sistema locale per l'account di servizio specifico dell'agente. Se necessario, il processo crea anche l'account di servizio richiesto e assicura che l'account di servizio disponga delle autorizzazioni corrette. Gli account di servizio 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:

        Un banner che comunica all'utente che sono stati creati un account di servizio e una chiave.

  2. Sostituisci la chiave privata nelle istanze che corrispondono all'account di servizio 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 maggiori informazioni, consulta Copia della chiave privata nell'istanza.
  3. Riavvia l'agente

    • Su Linux, esegui sudo service stackdriver-agent restart
    • Su Windows, vai alla console di gestione del servizio e riavvia il servizio Cloud Monitoring.

Se hai più progetti che richiedono nuove chiavi private, ripeti questa procedura per ciascuno.

Per verificare che la chiave privata sia corretta, consulta Le credenziali sono presenti?. In particolare:

  • Leggi il file JSON della chiave privata nell'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 il quale hai appena generato le credenziali.