Soluciona problemas con los registros de Apigee que faltan en Cloud Logging

Estás viendo la documentación de Apigee y Apigee hybrid.
No hay documentación de Apigee Edge equivalente para este tema.

Síntoma

Enviar registros de la API de Apigee a Cloud Logging es un caso de uso común. Por lo general, esto se hace a través de la política MessageLogging o la política ServiceCallout. En ambos casos, Apigee usa la API de Cloud Logging para escribir los registros.

En algunos casos, es posible que no veas los registros de la API de Apigee en Cloud Logging.

Mensaje de error

No se muestra ningún mensaje de error.

Causas posibles

Causa Descripción Instrucciones de solución de problemas aplicables para
La API de Cloud Logging no está habilitada Asegúrate de que habilitaste la API de Cloud Logging en el proyecto de Google Cloud de tu organización de Apigee. Apigee y Apigee Hybrid
Cuenta de servicio de proxy con la configuración incorrecta Es posible que la cuenta de servicio que se usó en el momento de la implementación (Apigee) o en la configuración del entorno de ejecución (Apigee Hybrid) se haya borrado o configurado de forma incorrecta. Apigee y Apigee Hybrid
Nombre de proyecto incorrecto en la configuración de la política El nombre del proyecto en la configuración de la política no es el mismo que el asociado con la organización de Apigee. Apigee y Apigee Hybrid
Faltan roles/permisos para la cuenta de servicio del entorno de ejecución Para Apigee Hybrid, asegúrate de que la cuenta de servicio del entorno de ejecución tenga el rol Creador de tokens de cuenta de servicio. Esto es obligatorio para usar la autenticación de Google. Apigee Hybrid
El tamaño de la entrada de registro es superior al límite permitido de Cloud Logging Cloud Logging tiene un límite de tamaño de entrada de 256 KB que no se puede cambiar. Apigee y Apigee Hybrid
Agotamiento de la cuota de solicitudes de escritura por minuto de la API de Cloud Logging Asegúrate de no exceder el valor de la cuota de solicitudes de escritura por minuto de la API de Cloud Logging en tu proyecto de Google Cloud. Apigee y Apigee Hybrid

Causa: La API de Cloud Logging no está habilitada

Diagnóstico

Verifica que la API de Cloud Logging esté habilitada. Consulta Enumera los servicios habilitados para obtener instrucciones sobre cómo enumerar las APIs y los servicios habilitados en la consola de Google Cloud.

Solución

Si la API de Cloud Logging no está habilitada, habilítala mediante los pasos que se indican en Habilita servicios. La habilitación de la API puede tardar unos minutos.

Si no puedes resolver el problema en el que los registros no se ven en Cloud Logging debido a que la API de Cloud Logging no está habilitada, consulta Debes recopilar información de diagnóstico.

Causa: Configuración incorrecta de la cuenta de servicio del proxy

Diagnóstico

Apigee

  1. Busca el nombre de la cuenta de servicio
    1. Con la IU de Apigee, haz lo siguiente:
      1. Haz clic en Desarrollar > Proxies de API y, luego, en el nombre de un proxy. Por ejemplo, TurboBooks.
      2. En Implementaciones, se muestra el nombre de la Cuenta de servicio.

    2. Con la API de Apigee:

      Realiza la siguiente llamada a la API de 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"

      Reemplaza lo siguiente:

      • ORG_NAME: El nombre de tu organización. Por ejemplo, apigee-example-org
      • ENV_NAME: El nombre del entorno. Por ejemplo, myenv
      • PROXY_NAME: El nombre del proxy Por ejemplo, TurboBooks
      • REVISION_NUMBER: El número de revisión. Por ejemplo, 4

      Por ejemplo:

      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"

      Se mostrará un resultado similar al siguiente:

      {
        "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"
      }

      En el que serviceAccount es la cuenta de servicio asociada con el proxy de la API.

  2. Verifica lo siguiente para esta cuenta de servicio de proxy:
    1. Esta cuenta de servicio debe estar en el mismo proyecto de Google Cloud que usaste para crear tu organización de Apigee. Por ejemplo: apigee-example-org..
    2. El usuario que implementa el proxy tiene el permiso iam.serviceAccounts.actAs en esta cuenta de servicio.
    3. La cuenta de servicio de proxy tiene los permisos necesarios para llamar al servicio de Cloud Logging.

Apigee Hybrid

Para Apigee Hybrid, además de los pasos enumerados en Apigee, abre tu archivo overrides.yaml y asegúrate de que haya una cuenta de servicio especificada en cada entorno que requiera Autenticación de Google Por ejemplo:

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME: El nombre del entorno. Por ejemplo, myenv.
  • KEY_FILE_PATH: La ruta al archivo de claves de la cuenta de servicio del entorno de ejecución. Por lo general, ya habrías creado la cuenta de servicio en Crea cuentas de servicio durante la instalación.

Solución

  1. Si la cuenta de servicio no está en el mismo proyecto de Google Cloud que usaste para crear tu organización de Apigee, debes crear una cuenta de servicio en el mismo proyecto de Google Cloud y usarla. Esto también se menciona en Usa la autenticación de Google.
  2. Si el usuario que implementa el proxy no tiene el permiso iam.serviceAccounts.actAs en esta cuenta de servicio, consulta Otorga un solo rol.
  3. Si la cuenta de servicio del proxy no tiene los permisos necesarios para llamar al servicio de Cloud Logging, consulta Otorga un solo rol.

Si los pasos de este documento no resuelven el problema en el que la cuenta de servicio del proxy está configurada de manera incorrecta para Apigee y Apigee Hybrid, consulta Debes recopilar información de diagnóstico.

Causa: Nombre de proyecto incorrecto en la configuración de la política

Diagnóstico

Si usas la política de MessageLogging para enviar registros a Cloud Logging, haz lo siguiente:

  1. En la IU de Apigee, haz clic en la pestaña Desarrollar > Proxies de API > Nombre del proxy de API > Desarrollar.
  2. En el panel Código, busca el elemento <CloudLogging>.
  3. Verifica que el valor de <LogName> sea el nombre correcto del proyecto:
    <CloudLogging>
      <LogName>projects/PROJECT_ID/logs/LOG_ID</LogName>
    </CloudLogging>

    Reemplaza lo siguiente:

    • PROJECT_ID: El ID del proyecto de Google Cloud. Por ejemplo, apigee-example-org.
    • LOG_ID: El ID del registro de Cloud Logging. Por ejemplo, apigee-logs.

Solución

Si el valor del elemento <LogName> no tiene el valor correcto, actualízalo.

Si los pasos de este documento no resuelven el problema, consulta Debes recopilar información de diagnóstico.

Causa: Roles o permisos faltantes para la cuenta de servicio del entorno de ejecución

Diagnóstico

Asegúrate de que el entorno de ejecución pueda usar la identidad de la cuenta de servicio del proxy.

Ejecuta el siguiente comando de gcloud para verificar si la cuenta de servicio del entorno de ejecución tiene el rol iam.serviceAccountTokenCreator en la cuenta de servicio del proxy:

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

Reemplaza lo siguiente:

  • PROXY_SA_NAME: El nombre de la cuenta de servicio del proxy. Por ejemplo, envsa-79
  • PROJECT_ID: El ID del proyecto de Google Cloud. Por ejemplo, apigee-example-org.

Se mostrará un resultado similar al siguiente:

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

Reemplaza lo siguiente:

RUNTIME_SA_NAME: El ID de la cuenta de servicio del entorno de ejecución. Por ejemplo, apigee-runtime

Por ejemplo:

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

Si no ves el rol iam.serviceAccountTokenCreator y el miembro esperado en el resultado, sigue los pasos en Resolución para otorgar las funciones correctas.

Solución

Otorga a la cuenta de servicio del entorno de ejecución el rol iam.serviceAccountTokenCreator en la cuenta de servicio de proxy mediante la ejecución del siguiente comando de 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

Reemplaza lo siguiente:

  • PROXY_SA_NAME: El nombre de la cuenta de servicio del proxy. Por ejemplo, envsa-79.
  • PROJECT_ID: El ID del proyecto de Google Cloud. Por ejemplo, apigee-example-org.
  • RUNTIME_SA_NAME: El ID de la cuenta de servicio del entorno de ejecución. Por ejemplo, apigee-runtime.

Si los pasos de este documento no resuelven el problema, consulta Debes recopilar información de diagnóstico.

Causa: El tamaño de la entrada de registro supera el límite de registro permitido

Diagnóstico

Si no ves algunos de los registros en Cloud Logging después de asegurarte de que las otras causas descritas en este documento no son el problema, es posible que el tamaño de algunas de las entradas de registro enviadas desde Apigee supera los 256 KB, que es el límite estricto de una entrada de tamaño de registro en Cloud Logging. Consulta Límites de uso de Logging para obtener más información.

Solución

Este es un límite no configurable establecido en Cloud Logging y la única solución alternativa conocida actualmente es mantener el tamaño de la entrada de registro enviado desde Apigee por debajo de 256 KB. Si registras una carga útil que puede superar este límite, no la registres o ten en cuenta que algunas transacciones no se registrarán una vez que se alcance el límite.

Si los pasos de este documento no resuelven el problema, consulta Debes recopilar información de diagnóstico.

Causa: Agotamiento de la cuota de solicitudes de escritura por minuto de la API de Cloud Logging

Diagnóstico

A veces, los clientes pueden ver la solicitud en la sesión de depuración y, al mismo tiempo, la solicitud no se registra en el explorador de registros, a pesar de que está presente en los registros del balanceador de cargas.

La pérdida de mensajes observada podría deberse al agotamiento de la cuota dentro del proyecto. La API de Cloud Logging aplica un límite de frecuencia de 120,000 solicitudes de escritura por minuto. Si superas esta cuota, es posible que se pierdan mensajes. Para obtener más información, consulta Visualiza y administra las cuotas.

Estas cuotas se pueden aumentar en la consola de Google Cloud, y el cliente puede hacerlo siguiendo la documentación sobre el aumento de cuotas.

Solución

Sigue el procedimiento a continuación para aumentar una cuota:

  1. En la página Cuotas, usa las casillas de verificación para seleccionar la API de Cloud Logging y, luego, haz clic en Editar cuotas. Si recibes un error Edit is not allowed for this quota, puedes comunicarte con Atención al cliente de Google Cloud para solicitar cambios en la cuota. También ten en cuenta que la facturación debe estar habilitada en el proyecto de Google Cloud para poder hacer clic en las casillas de verificación.
  2. En el panel Cambios en la cuota, selecciona el servicio para expandir la vista y, luego, completa los campos de descripción Nuevo límite y Solicitud. Haz clic en Siguiente.
  3. Completa el formulario del panel Detalles de contacto y haz clic en Enviar solicitud.

Para obtener más información, consulta esta documentación sobre cuotas y límites.

Se debe recopilar información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recopila la siguiente información de diagnóstico y, luego, comunícate con Atención al cliente de Google Cloud:

  • Organización de Apigee.
  • Entorno y proxy de API que ven el problema.
  • Sesión de depuración descargada (esto proporcionará toda la información anterior).
  • El nombre de la política específico en el proxy de API que envía registros a Cloud Logging.
  • Para Apigee Hybrid: el archivo overrides.yaml.