Risoluzione dei problemi dei log Apigee mancanti in Cloud Logging

Stai visualizzando la documentazione relativa a Apigee e Apigee ibrido.
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. Generalmente, questo viene fatto tramite MessageLogging o il criterio . 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 in Cloud Logging.

Messaggio di errore

Non viene visualizzato alcun messaggio di errore.

Possibili cause

Causa Descrizione Le istruzioni di 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 errato nella configurazione dei criteri Il nome del progetto nella configurazione del criterio non corrisponde a una associata all'organizzazione Apigee. Apigee e Apigee hybrid
Ruoli/autorizzazioni mancanti 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

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 abilitate e servizi aggiuntivi nella console Google Cloud.

Risoluzione

Se l'API Cloud Logging non è abilitata, abilitala utilizzando il metodo passi in . Attivazione 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: account di servizio proxy non configurato correttamente

Diagnosi

Apigee

  1. Trova il nome dell'account di servizio.
    1. Utilizzando l'UI di Apigee:
        .
      1. Fai clic su Sviluppo > Proxy API, quindi fai clic sul nome di un proxy. Ad esempio, TurboBooks.
      2. In Deployment, il nome dell'Account di servizio è visualizzati.

    2. Se utilizzi l'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 che utilizzato per creare la tua organizzazione Apigee. Ad esempio: apigee-example-org.
    2. L'utente che esegue il deployment del proxy dispone Autorizzazione iam.serviceAccounts.actAs per questo servizio .
    3. L'account di servizio proxy dispone delle autorizzazioni necessarie per chiamare 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 della chiave dell'account di servizio di runtime . In genere avresti già creato l'account di servizio Creare account di servizio durante l'installazione.

Risoluzione

  1. Se l'account di servizio non si trova nello stesso progetto Google Cloud che utilizzata per creare la tua organizzazione Apigee, un account di servizio deve da creare e utilizzare 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 della iam.serviceAccounts.actAs autorizzazione per questo account di servizio, vedi Concedi 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 in cui il proxy l'account di servizio non è configurato correttamente per Apigee Apigee hybrid, vedi Devi raccogliere dati diagnostici.

Causa: nome di progetto errato nel criterio configurazione

Diagnosi

Se utilizzi Criterio MessageLogging per inviare log a Cloud Logging:

  1. Nell'UI di Apigee, fai clic su Sviluppa > Proxy API > Nome proxy API > Sviluppa.
  2. Nel riquadro Codice, individua il . <CloudLogging>.
  3. Verifica che il valore <LogName> sia il progetto corretto nome:
    <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 ha il valore corretto, aggiornalo con quello 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 impersonare l'account di servizio proxy.

Esegui questo comando gcloud per verificare se l'account di servizio di runtime ha . iam.serviceAccountTokenCreator per l'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 del progetto Google Cloud. 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 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 del progetto Google Cloud. Ad esempio: apigee-example-org.
  • RUNTIME_SA_NAME: l'ID dell'account di servizio di runtime. Per 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 di log superano il limite di logging consentito

Diagnosi

Se non vedi alcuni dei log visualizzati in Cloud Logging dopo assicurarsi che le altre cause descritte in questo documento non siano il problema, è possibile che la dimensione di alcune voci di log inviate Apigee supera i 256 kB, che è il limite rigido per una voce relativa alle dimensioni di log in Cloud Logging. Vedi Limiti di utilizzo di Logging per saperne di più.

Risoluzione

Si tratta di un limite non configurabile impostato su Cloud Logging e l'unico una soluzione alternativa nota attualmente è quella di mantenere le dimensioni della voce di log inviata da Apigee sotto i 256 kB. Se stai registrando un payload che potrebbe andare oltre 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.

Raccogliere dati diagnostici

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

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