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

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

Sintomo

Invio dei log dell'API Apigee a in corso... Cloud Logging è un caso d'uso comune. In genere, questo viene fatto tramite la norma MessageLogging o la norma ServiceCallout. In entrambi i casi, Apigee utilizza API Cloud Logging per e scrivere i log.

In alcuni casi, potresti non vedere 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 in Google Cloud della tua organizzazione Apigee. Apigee e Apigee hybrid
Account di servizio proxy configurato in modo errato L'account di servizio utilizzato al momento del deployment (Apigee) o in fase di runtime (Apigee Hybrid) potrebbe essere stata eliminata/configurazione errata. Apigee e Apigee hybrid
Nome del progetto non corretto nella configurazione dei criteri Il nome del progetto nella configurazione del criterio non corrisponde a una associata all'organizzazione Apigee. Apigee e Apigee hybrid
Mancano ruoli/autorizzazioni per l'account di servizio di runtime Per Apigee hybrid, assicurati che il servizio di runtime l'account di servizio ha il ruolo Creatore token account di servizio. Questo è che deve utilizzare l'autenticazione Google. Apigee hybrid
La dimensione della voce di log supera il limite consentito di Cloud Logging Cloud Logging ha un limite per le dimensioni delle voci di 256 kB che non può essere modificato. Apigee e Apigee hybrid
Esaurimento delle richieste di scrittura al minuto per l'API Cloud Logging Assicurati di non superare il valore della quota per le 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 Elenca 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 Cloud Logging perché l'API Cloud Logging non è stata abilitata. Consulta Devi raccogliere dati diagnostici.

Causa: service account proxy configurato in modo errato

Diagnosi

Apigee

  1. Trova il nome dell'account di servizio.
    1. Utilizzo dell'interfaccia utente di Apigee:
      1. Fai clic su Sviluppa > Proxy API e poi su un nome di proxy. Ad esempio, TurboBooks.
      2. In Deployment, il nome dell'Account di servizio è visualizzati.

    2. Utilizzo dell'API Apigee:

      Effettua 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 è l'account di servizio associato a il proxy API.

  2. Verifica quanto segue per questo account di servizio proxy:
    1. Questo account di servizio deve trovarsi nello stesso progetto Google Cloud 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 account di servizio.
    3. L'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 in ogni ambiente sia specificato un account di servizio che richieda l'autenticazione di 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 dell'account di servizio di runtime. In genere, avrai già creato l'account di servizio in Crea account di servizio durante l'installazione.

Risoluzione

  1. Se l'account di servizio non si trova nello stesso progetto Google Cloud utilizzato per creare l'organizzazione Apigee, è necessario creare e utilizzare un account di servizio nello stesso progetto Google Cloud. Questo valore è anche menzionato 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 la sezione Concedere un singolo ruolo.
  3. Se l'account di servizio proxy non dispone delle autorizzazioni necessarie per chiamare il servizio Cloud Logging, vedi Assegna un singolo ruolo.

Se i passaggi descritti in questo documento non risolvono il problema relativo alla configurazione errata dell'account di servizio proxy per Apigee e Apigee Hybrid, consulta Devi raccogliere informazioni di diagnostica.

Causa: nome del progetto errato nella configurazione del criterio

Diagnosi

Se utilizzi il criterio di logging dei messaggi per inviare i log a Cloud Logging:

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

    Sostituisci quanto segue:

    • PROJECT_ID: l'ID del progetto Google Cloud. 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 con il valore corretto.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Devi raccogliere dati diagnostici.

Causa: ruoli/autorizzazioni mancanti per l'account di servizio di runtime

Diagnosi

Assicurati che il runtime sia in grado di eseguire il furto d'identità dell'account di servizio proxy.

Esegui il seguente comando gcloud per verificare se l'account di servizio di runtime ha il ruolo iam.serviceAccountTokenCreator nell'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 dell'account di servizio proxy. Ad esempio, envsa-79.
  • PROJECT_ID: l'ID progetto Google Cloud. Ad esempio: apigee-example-org.

Viene restituito qualcosa di 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 dell'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, quindi segui i passaggi Soluzione per concedere i ruoli corretti.

Risoluzione

Concedi all'account di servizio di runtime Ruolo iam.serviceAccountTokenCreator nel servizio di proxy eseguendo questo comando 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 dell'account di servizio proxy. Per ad esempio envsa-79.
  • PROJECT_ID: l'ID progetto Google Cloud. Ad esempio, apigee-example-org.
  • RUNTIME_SA_NAME: l'ID dell'account di servizio di runtime. Ad esempio apigee-runtime.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Devi raccogliere dati diagnostici.

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

Diagnosi

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

Risoluzione

Si tratta di un limite non configurabile impostato su Cloud Logging e l'unica soluzione alternativa attualmente nota è mantenere le dimensioni della voce di log inviata da Apigee inferiori a 256 KB. Se stai registrando un payload con un potenziale superiore questo limite, non registrare il payload o comprendere che le transazioni non verranno registrate una volta raggiunto il limite.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Devi raccogliere dati diagnostici.

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

Diagnosi

A volte i clienti riscontrano di essere in grado di visualizzare la richiesta nella sessione di debug e, allo stesso tempo, la richiesta non viene collegata a 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 la perdita di messaggi. Per ulteriori informazioni, consulta Visualizzare e gestire le quote.

Queste quote possono essere aumentate all'interno della Google Cloud Console e questo può essere fatto dal cliente stesso seguendo la documentazione sull'aumento della quota.

Risoluzione

Per aumentare una quota, segui la procedura riportata di seguito:

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

Per ulteriori informazioni, consulta questa documentazione di su quote e limiti.

Deve raccogliere informazioni di diagnostica

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

  • nella piattaforma Apigee.
  • Ambiente e proxy API in cui si verifica il problema.
  • Sessione di debug scaricata (forniranno tutte le informazioni precedenti).
  • Il nome del criterio specifico nel proxy API a cui invia i log e in Cloud Logging.
  • Per Apigee hybrid: il file overrides.yaml.