Risolvere i problemi relativi alle credenziali

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

Se 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, controlla che le credenziali dell'istanza VM siano corrette, inclusa la specifica del progetto corretto:

  • Se utilizzi un'istanza VM Compute Engine con credenziali standard (non private-key), è improbabile che i dati vengano inviati al progetto sbagliato, ma le tue credenziali potrebbero comunque essere insufficienti. Per informazioni sulle credenziali, consulta Autorizzare l'agente operativo. Per verificare le tue credenziali, consulta la pagina Verificare le credenziali di Compute Engine.

  • Se utilizzi le credenziali con chiave privata sull'istanza Compute Engine, le credenziali potrebbero non essere valide o provenire dal progetto sbagliato. Per informazioni sulle credenziali, consulta 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 l'istanza VM di Compute Engine disponga delle 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, ma è possibile sovrascrivere i valori predefiniti durante la creazione di un'istanza.

Nella console Google Cloud, vai alla pagina Istanze VM:

Vai a Istanze VM

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

  1. Se necessario, modifica il progetto Google Cloud corrente in modo che sia associato all'istanza VM Compute Engine. Ad esempio, se ti viene chiesto di attivare la fatturazione, significa che il progetto corrente non contiene istanze VM 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 l'intestazione Ambiti di accesso alle API Cloud:
    • Se vedi "Consenti l'accesso completo a tutte le API Cloud", significa che disponi delle credenziali adeguate.
    • Se accanto a API Stackdriver Monitoring è visualizzato un nome precedente dell'API Cloud Monitoring e disponi dell'autorizzazione Scrittura solo o Completa, significa che disponi delle credenziali adeguate.
    • In caso contrario, l'account di servizio predefinito dell'istanza non dispone delle credenziali necessarie per l'agente. Per utilizzare l'agente nell'istanza, devi aggiungere le credenziali dell'account di servizio chiavi privata. Per le istruzioni, consulta Aggiungere le credenziali.

Se disponi delle credenziali predefinite corrette, vai a Installazione su Linux e Windows.

Verifica delle credenziali della chiave privata

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

Le credenziali sono presenti?

Per verificare se le credenziali dell'account di servizio chiavi 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 comandi mostra un file come quello mostrato di seguito, la tua istanza potrebbe avere credenziali della 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 delle 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. Confronta queste informazioni con quelle riportate 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 Compute Engine, ma il progetto Google Cloud nel file delle credenziali non è il progetto che contiene l'istanza.
  • L'account di servizio elencato non esiste. Potrebbe essere stato eliminato.
  • Nell'account di servizio elencato non sono abilitati i ruoli corretti. Deve avere almeno roles/monitoring.metricWriter (Monitoring Metric Writer) per la raccolta delle metriche e roles/logging.logWriter (Logs Writer) per la scrittura dei log.
  • La chiave privata non esiste. Potrebbe essere stata revocata.

Se l'account di servizio è corretto, ma la chiave privata è stata revocata, puoi creare una nuova chiave privata e copiarla nella tua istanza. In caso contrario, devi creare un nuovo account di servizio come descritto nella sezione Aggiunta delle credenziali che segue.

Generazione di nuove credenziali

Se le credenziali non sono valide, svolgi i seguenti passaggi:

  1. Per ogni progetto collegato contenente istanze che devono essere autorizzate con una chiave privata, ovvero le 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à. Procedi nel seguente modo:
    1. Nella console Google Cloud, vai alla pagina  Impostazioni:

      Vai a Impostazioni

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

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

      Per eseguire questi passaggi, svolgi una delle seguenti operazioni:

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

        Vai ad Account di servizio IAM

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

        Creare l'account di servizio e scaricare la chiave

        Il pulsante precedente automatizza la procedura di creazione e download di una chiave sul sistema locale per l'account di servizio specifico dell'agente. Se necessario, la procedura crea anche l'account di servizio richiesto e garantisce che 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 al termine 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 corrispondenti all'account di servizio in questione.

    • Su Linux, sostituisci la chiave privata situata 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 ulteriori informazioni, consulta Copiare la 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 di essi.

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 cui hai appena generato le credenziali.