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

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

Sintomo

L'invio dei log dell'API Apigee a 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 l'API Cloud Logging per 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 attivato 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 Credenziali account di servizio IAM nel progetto 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 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
Mancano ruoli/autorizzazioni per l'account di servizio di runtime Per Apigee Hybrid, assicurati che l'account di servizio di runtime abbia il ruolo Creatore token account di servizio. Questo è obbligatorio per poter utilizzare l'autenticazione Google. Apigee hybrid
Le dimensioni della voce di log superano il limite consentito da Cloud Logging Cloud Logging ha un limite di dimensioni 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 delle richieste di scrittura al minuto per l'API Logging Cloud 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'attivazione dell'API può richiedere alcuni minuti.

Se non riesci a risolvere il problema relativo alla mancata visualizzazione dei log in Cloud Logging a causa della mancata attivazione dell'API Cloud Logging, consulta Devi raccogliere informazioni di diagnostica.

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

Diagnosi

Verifica che l'API IAM Service Account Credentials 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 IAM Service Account Credentials non è abilitata, abilitala seguendo i passaggi descritti in Attivazione dei servizi. L'attivazione dell'API può richiedere alcuni minuti.

Se non riesci a risolvere il problema relativo alla mancata visualizzazione dei log in Cloud Logging a causa della mancata attivazione dell'API Cloud IAM Service Account Credentials, consulta È necessario raccogliere informazioni di diagnostica.

Causa: account di servizio 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, viene visualizzato il nome dell'account di servizio.

    2. Utilizzo dell'API Apigee:

      Esegui la seguente chiamata all'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 qualcosa di 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 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 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 aspetto è 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, consulta Concedi 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 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 informazioni di diagnostica.

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

Diagnosi

Assicurati che il runtime sia in grado di simulare l'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, segui i passaggi descritti in Risoluzione per concedere i ruoli corretti.

Risoluzione

Concedi all'account di servizio di runtime il ruolo iam.serviceAccountTokenCreator nell'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 dell'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 dell'account di servizio di runtime. Ad esempio, apigee-runtime.

Se i passaggi descritti in questo documento non risolvono il problema, consulta Devi raccogliere informazioni di diagnostica.

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 registri un payload che potrebbe superare questo limite, non registrarlo o 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 Devi raccogliere informazioni di diagnostica.

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

Diagnosi

A volte i clienti riferiscono di riuscire a vedere la richiesta nella sessione di debug, mentre al contempo la richiesta non viene registrata nell'esploratore dei log, nonostante sia presente nei log di Load Balancer.

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 in Google Cloud Console e questa operazione può essere eseguita dal cliente stesso seguendo la documentazione relativa all'aumento delle quote.

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 e 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 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 ulteriori informazioni, consulta questa documentazione 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:

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