Risolvere i problemi relativi ai log di Apigee mancanti in Cloud Logging

Stai visualizzando la documentazione di Apigee e Apigee hybrid.
Non esiste una documentazione Apigee Edge equivalente per questo argomento.

Sintomo

L'invio dei log API Apigee a Cloud Logging è un caso d'uso comune. In genere, questa operazione viene eseguita tramite le norme MessageLogging o ServiceCallout. In entrambi i casi, Apigee utilizza l'API Cloud Logging per scrivere i log.

In alcuni casi, potresti non visualizzare i log dell'API Apigee in Cloud Logging.

Messaggio di errore

Non viene visualizzato alcun messaggio di errore.

Possibili cause

Causa Descrizione Istruzioni per la risoluzione dei problemi applicabili a
L'API Cloud Logging non è abilitata Assicurati di aver abilitato l'API Cloud Logging nel progetto Google Cloud della tua organizzazione Apigee. Apigee e Apigee hybrid
L'API IAM Service Account Credentials non è abilitata Assicurati di aver attivato l'API IAM Service Account Credentials nel progetto della tua organizzazione Apigee. Google Cloud Apigee e Apigee hybrid
Service account del servizio proxy configurato in modo errato Il account di servizio utilizzato al momento del deployment (Apigee) o nella configurazione di runtime (Apigee Hybrid) potrebbe essere stato eliminato/configurato in modo errato. Apigee e Apigee hybrid
Nome del progetto non corretto nella configurazione dei criteri Il nome del progetto nella configurazione del criterio non corrisponde a quello associato all'organizzazione Apigee. Apigee e Apigee hybrid
Ruoli/autorizzazioni mancanti per il service account di runtime Per Apigee Hybrid, assicurati che il service account runtime disponga del ruolo Creatore token service account. Questo è necessario per utilizzare l'autenticazione Google. Apigee hybrid
Dimensioni della voce di log superiori al limite consentito di Cloud Logging Cloud Logging ha un limite di dimensione delle voci di 256 KB che non può essere modificato. Apigee e Apigee hybrid
Esaurimento della quota di richieste di scrittura al minuto per l'API Cloud Logging Assicurati di non superare il valore della quota di richieste di scrittura al minuto per l'API Cloud Logging nel tuo progetto Google Cloud. Apigee e Apigee hybrid

Causa: l'API Cloud Logging non è abilitata

Diagnosi

Verifica che l'API Cloud Logging sia abilitata. Consulta Elencare i servizi abilitati per istruzioni su come elencare le API e i servizi abilitati nella console Google Cloud .

Risoluzione

Se l'API Cloud Logging non è abilitata, abilitala seguendo i passaggi descritti in Abilitazione dei servizi. L'abilitazione dell'API può richiedere alcuni minuti.

Se non riesci a risolvere il problema per cui i log non vengono visualizzati in Cloud Logging perché l'API Cloud Logging non è abilitata, consulta Informazioni diagnostiche da raccogliere.

Causa: l'API IAM Service Account Credentials non è abilitata

Diagnosi

Verifica che l'API IAM Service Account Credentials sia abilitata. Consulta Elencare i servizi abilitati per istruzioni su come elencare le API e i servizi abilitati nella console Google Cloud .

Risoluzione

Se l'API IAM Service Account Credentials non è abilitata, abilitala seguendo i passaggi descritti in Abilitazione dei servizi. L'abilitazione dell'API può richiedere alcuni minuti.

Se non riesci a risolvere il problema per cui i log non vengono visualizzati in Cloud Logging perché l'API IAM Service Account Credentials non è abilitata, consulta Informazioni diagnostiche da raccogliere.

Causa: account di servizio proxy configurato in modo errato

Diagnosi

Apigee

  1. Trova il nome del account di servizio.
    1. Utilizzo della UI Apigee:
      1. Fai clic su Sviluppa > Proxy API e poi sul nome di un proxy. Ad esempio, TurboBooks.
      2. In Deployment, viene visualizzato il nome dell'account di servizio.

    2. Utilizzo dell'API Apigee:

      Esegui la seguente chiamata API Apigee:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/ENV_NAME/apis/PROXY_NAME/revisions/REVISION_NUMBER/deployments"

      Sostituisci quanto segue:

      • ORG_NAME: il nome della tua organizzazione. Ad esempio, apigee-example-org.
      • ENV_NAME: il nome dell'ambiente. Ad esempio, myenv.
      • PROXY_NAME: il nome del proxy. Ad esempio, TurboBooks.
      • REVISION_NUMBER: il numero di revisione. Ad esempio, 4.

      Ad esempio:

      curl -H "Authorization: Bearer $(gcloud auth print-access-token)" "https://apigee.googleapis.com/v1/organizations/apigee-example-org/environments/myenv/apis/TurboBooks/revisions/4/deployments"

      Viene restituito un risultato simile al seguente:

      {
        "environment": "myenv",
        "apiProxy": "TurboBooks",
        "revision": "4",
        "deployStartTime": "1687408163394",
        "state": "READY",
        "instances": [
          {
            "instance": "apiginstance",
            "deployedRevisions": [
              {
                "revision": "4",
                "percentage": 100
              }
          .
          .
          .
          .
        "serviceAccount": "projects/-/serviceAccounts/envsa-79@apigee-example-org.iam.gserviceaccount.com"
      }

      dove serviceAccount è il account di servizio associato al proxy API.

  2. Verifica quanto segue per questo account di servizio proxy:
    1. Questo account di servizio deve trovarsi nello stesso progetto Google Cloud che hai utilizzato per creare l'organizzazione Apigee. Ad esempio, apigee-example-org.
    2. L'utente che esegue il deployment del proxy dispone dell'autorizzazione iam.serviceAccounts.actAs su questo service account.
    3. Il account di servizio proxy dispone delle autorizzazioni necessarie per chiamare il servizio Cloud Logging.

Apigee hybrid

Per Apigee hybrid, oltre ai passaggi elencati in Apigee, apri il file overrides.yaml e assicurati che sia specificato un account di servizio in ogni ambiente che richiede l'autenticazione Google. Ad esempio:

envs:
  - name: "ENVIRONMENT_NAME"
    serviceAccountPaths:
      runtime: "KEY_FILE_PATH"

Sostituisci quanto segue:

  • ENVIRONMENT_NAME: il nome dell'ambiente. Ad esempio, myenv.
  • KEY_FILE_PATH: il percorso del file della chiave del account di servizio di runtime. In genere, l'account di servizio viene creato in Creare service account durante l'installazione.

Risoluzione

  1. Se il account di servizio non si trova nello stesso Google Cloud progetto che hai utilizzato per creare l'organizzazione Apigee, è necessario creare e utilizzare un account di servizio nello stesso Google Cloud progetto. Questo aspetto è menzionato anche in Utilizzo dell'autenticazione Google.
  2. Se l'utente che esegue il deployment del proxy non dispone dell'autorizzazione iam.serviceAccounts.actAs su questo account di servizio, consulta Concedere un singolo ruolo.
  3. Se il account di servizio proxy non dispone delle autorizzazioni necessarie per chiamare il servizio Cloud Logging, consulta Concedere un singolo ruolo.

Se i passaggi descritti in questo documento non risolvono il problema per cui l'account di servizio proxy è configurato in modo errato per Apigee e Apigee Hybrid, consulta Informazioni diagnostiche da raccogliere.

Causa: nome del progetto errato nella configurazione del criterio

Diagnosi

Se utilizzi i criteri MessageLogging per inviare i log a Cloud Logging:

  1. Nell'interfaccia utente Apigee, fai clic su Sviluppa > Proxy API > Nome proxy API > scheda Sviluppa.
  2. Nel riquadro Codice, individua l'elemento <CloudLogging>.
  3. Verifica che il valore di <LogName> sia il nome del progetto corretto:
    <CloudLogging>
      <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName>
    </CloudLogging>

    Sostituisci quanto segue:

    • PROJECT_ID: l' Google Cloud ID progetto. Ad esempio, apigee-example-org.
    • LOG_ID: l'ID log di Cloud Logging. Ad esempio, apigee-logs.

Risoluzione

Se il valore nell'elemento <LogName> non è corretto, aggiornalo.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Informazioni diagnostiche da raccogliere.

Causa: ruoli/autorizzazioni mancanti per il account di servizio di runtime

Diagnosi

Assicurati che il runtime possa rappresentare il account di servizio proxy.

Esegui questo comando gcloud per verificare se il account di servizio di runtime dispone del ruolo iam.serviceAccountTokenCreator sul account di servizio proxy:

gcloud iam service-accounts get-iam-policy PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com

Sostituisci quanto segue:

  • PROXY_SA_NAME: il nome del account di servizio proxy. Ad esempio, envsa-79.
  • PROJECT_ID: l' Google Cloud ID progetto. Ad esempio, apigee-example-org.

Viene restituito un risultato simile al seguente:

- members:
  - serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com
  role: roles/iam.serviceAccountTokenCreator

Sostituisci quanto segue:

RUNTIME_SA_NAME: l'ID del account di servizio di runtime. Ad esempio, apigee-runtime.

Ad esempio:

gcloud iam service-accounts get-iam-policy envsa-79@apigee-example-org.iam.gserviceaccount.com
  bindings:
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountAdmin
  - members:
    - serviceAccount:apigee-runtime@apigee-example-org.iam.gserviceaccount.com
    role: roles/iam.serviceAccountTokenCreator
  - members:
    - user:222larabrown@gmail.com
    role: roles/iam.serviceAccountUser
  etag: BwX-shcrL3o=
  version: 1

Se non vedi il ruolo iam.serviceAccountTokenCreator e il membro previsto nell'output, segui i passaggi descritti nella soluzione per concedere i ruoli corretti.

Risoluzione

Concedi all'account di servizio di runtime il ruolo iam.serviceAccountTokenCreator sull'account di servizio proxy eseguendo il seguente comando gcloud:

gcloud iam service-accounts add-iam-policy-binding \
PROXY_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--member=serviceAccount:RUNTIME_SA_NAME@PROJECT_ID.iam.gserviceaccount.com \
--role=roles/iam.serviceAccountTokenCreator

Sostituisci quanto segue:

  • PROXY_SA_NAME: il nome del account di servizio proxy. Ad esempio, envsa-79.
  • PROJECT_ID: l'ID progetto Google Cloud . Ad esempio, apigee-example-org.
  • RUNTIME_SA_NAME: l'ID del account di servizio di runtime. Ad esempio, apigee-runtime.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Informazioni diagnostiche da raccogliere.

Causa: le dimensioni della voce di log superano il limite di logging consentito

Diagnosi

Se non vedi alcuni log in Cloud Logging dopo aver verificato che le altre cause descritte in questo documento non siano il problema, è possibile che le dimensioni di alcune voci di log inviate da Apigee superino i 256 KB, che è il limite rigido per una voce di log in Cloud Logging. Per ulteriori informazioni, consulta la sezione Limiti di utilizzo del logging.

Risoluzione

Si tratta di un limite non configurabile impostato su Cloud Logging e l'unico workaround attualmente noto è mantenere le dimensioni della voce di log inviata da Apigee inferiori a 256 KB. Se registri un payload che potrebbe superare questo limite, non registrarlo oppure tieni presente che alcune transazioni non verranno registrate una volta raggiunto il limite.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Informazioni diagnostiche da raccogliere.

Causa: esaurimento della quota di richieste di scrittura al minuto per l'API Cloud Logging

Diagnosi

A volte i clienti riscontrano di poter visualizzare la richiesta nella sessione di debug, mentre allo stesso tempo la richiesta non viene registrata in Esplora log, nonostante sia presente nei log del bilanciatore del carico.

La perdita di messaggi osservata potrebbe essere attribuita all'esaurimento della quota all'interno del progetto. L'API Cloud Logging applica un limite di frequenza di 120.000 richieste di scrittura al minuto. Il superamento di questa quota potrebbe comportare l'eliminazione dei messaggi.Per saperne di più, consulta Visualizza e gestisci le quote.

Queste quote possono essere aumentate all'interno di Google Cloud console e questa operazione può essere eseguita dal cliente stesso seguendo la documentazione relativa all'aumento della quota.

Risoluzione

Segui la procedura riportata di seguito per aumentare una quota:

  1. Nella pagina Quote , utilizza le caselle di controllo per selezionare API Cloud Logging e poi fai clic su Modifica quote. Se ricevi l'errore Edit is not allowed for this quota, puoi contattare l'assistenza clienti Google Cloud per richiedere modifiche alla quota. Tieni presente inoltre che per poter selezionare le caselle di controllo è necessario che la fatturazione sia attivata nel progetto Google Cloud.
  2. Nel riquadro Modifiche alla quota, seleziona il servizio per espandere la visualizzazione, quindi compila i campi di descrizione Nuovo limite e Richiesta. Fai clic su Avanti.
  3. Compila il modulo nel riquadro Dettagli di contatto e fai clic su Invia richiesta.

Per saperne di più, consulta questa documentazione su quote e limiti .

Deve raccogliere informazioni diagnostiche

Se il problema persiste anche dopo aver seguito le istruzioni riportate sopra, raccogli le seguenti informazioni diagnostiche e poi contatta l'assistenza clienti Google Cloud:

  • Organizzazione Apigee.
  • Ambiente e proxy API in cui si verifica il problema.
  • Sessione di debug scaricata (fornisce tutte le informazioni riportate sopra).
  • Il nome della policy specifica nel proxy API che invia i log a Cloud Logging.
  • Per Apigee hybrid: il file overrides.yaml.