Solucionar problemas con registros de Apigee que faltan en Cloud Logging

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

Síntoma

Enviar registros de APIs de Apigee a Cloud Logging es un caso práctico habitual. Esto se suele hacer mediante la política MessageLogging o la política ServiceCallout. En ambos casos, Apigee usa la API 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 a
La API Cloud Logging no está habilitada Asegúrate de haber habilitado la API Cloud Logging en el proyecto de tu organización de Apigee. Google Cloud Apigee y Apigee Hybrid
La API Service Account Credentials de Gestión de Identidades y Accesos no está habilitada Asegúrate de que has habilitado la API de credenciales de cuenta de servicio de gestión de identidades y accesos en el proyecto Google Cloudde tu organización de Apigee. Apigee y Apigee Hybrid
Cuenta de servicio de proxy mal configurada Es posible que la cuenta de servicio utilizada en el momento de la implementación (Apigee) o en la configuración del tiempo de ejecución (Apigee hybrid) se haya eliminado o configurado incorrectamente. 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 a la organización de Apigee. Apigee y Apigee Hybrid
Faltan roles o permisos en la cuenta de servicio del tiempo de ejecución En Apigee hybrid, asegúrate de que la cuenta de servicio de tiempo de ejecución tenga el rol Creador de tokens de cuenta de servicio. Este paso es necesario para usar la autenticación de Google. Apigee Hybrid
Tamaño de la entrada de registro 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 superar el valor de la cuota de solicitudes de escritura por minuto de la API Cloud Logging en tu proyecto de Google Cloud. Apigee y Apigee Hybrid

Causa: la API Cloud Logging no está habilitada

Diagnóstico

Verifica que la API Cloud Logging esté habilitada. Consulta las instrucciones para enumerar las APIs y los servicios habilitados en la consola List enabled services (Enumerar servicios habilitados). Google Cloud

Resolución

Si la API Cloud Logging no está habilitada, sigue los pasos que se indican en Habilitar servicios para habilitarla. La API puede tardar unos minutos en habilitarse.

Si no puedes resolver el problema por el que no se ven los registros en Cloud Logging porque la API Cloud Logging no está habilitada, consulta la sección Información de diagnóstico que debes recoger.

Causa: La API Service Account Credentials de Gestión de Identidades y Accesos no está habilitada

Diagnóstico

Verifica que la API de credenciales de cuenta de servicio de gestión de identidades y accesos esté habilitada. Consulta las instrucciones para enumerar las APIs y los servicios habilitados en la consola List enabled services (Enumerar servicios habilitados). Google Cloud

Resolución

Si la API Service Account Credentials de Gestión de Identidades y Accesos no está habilitada, hazlo siguiendo los pasos que se indican en Habilitar servicios. La API puede tardar unos minutos en habilitarse.

Si no puedes resolver el problema por el que no se ven los registros en Cloud Logging porque la API de credenciales de cuentas de servicio de gestión de identidades y accesos no está habilitada, consulta Recopilación de información de diagnóstico.

Causa: cuenta de servicio proxy mal configurada

Diagnóstico

Apigee

  1. Busca el nombre de la cuenta de servicio.
    1. Usar la interfaz de usuario de Apigee:
      1. Haz clic en Desarrollo > Proxies de API y, a continuación, en el nombre de un proxy. Por ejemplo, TurboBooks.
      2. En Implementaciones, se muestra el nombre de la cuenta de servicio.

    2. Usar la API de Apigee:

      Ejecuta 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"

      Haz los cambios siguientes:

      • 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: 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 devuelve algo similar a lo 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"
      }

      Donde serviceAccount es la cuenta de servicio asociada al proxy de la API.

  2. Verifica lo siguiente en esta cuenta de servicio 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 despliega el proxy tiene el permiso iam.serviceAccounts.actAs en esta cuenta de servicio.
    3. La cuenta de servicio proxy tiene los permisos necesarios para llamar al servicio Cloud Logging.
      • Para ver una lista de los roles, consulta Roles de registro.
      • Para ver las instrucciones sobre cómo consultar los permisos de la cuenta de servicio proxy, consulta la sección Ver el acceso actual.

Apigee Hybrid

En Apigee hybrid, además de los pasos que se indican en Apigee, abre el archivo overrides.yaml y asegúrate de que haya una cuenta de servicio especificada en cada entorno que requiera la autenticación de Google. Por ejemplo:

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

Haz los cambios siguientes:

  • ENVIRONMENT_NAME: el nombre del entorno. Por ejemplo, myenv.
  • KEY_FILE_PATH: Ruta al archivo de clave de la cuenta de servicio de tiempo de ejecución. Normalmente, ya habrías creado la cuenta de servicio en Crear cuentas de servicio durante la instalación.

Resolución

  1. Si la cuenta de servicio no está en el mismo Google Cloud proyecto que usaste para crear tu organización de Apigee, debes crear una cuenta de servicio en el mismo Google Cloud proyecto y usarla. También se menciona en la sección Usar 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 Asignar un solo rol.
  3. Si la cuenta de servicio proxy no tiene los permisos necesarios para llamar al servicio Cloud Logging, consulta Conceder un solo rol.

Si los pasos de este documento no resuelven el problema por el que la cuenta de servicio proxy se ha configurado incorrectamente para Apigee y Apigee hybrid, consulta Información de diagnóstico que debes recoger.

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

Diagnóstico

Si usas la política MessageLogging para enviar registros a Cloud Logging:

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

    Haz los cambios siguientes:

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

Resolución

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

Si los pasos que se indican en este documento no resuelven el problema, consulta Información de diagnóstico que debes recoger.

Causa: faltan roles o permisos en la cuenta de servicio del tiempo de ejecución

Diagnóstico

Asegúrate de que el tiempo de ejecución pueda suplantar la identidad de la cuenta de servicio proxy.

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

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

Haz los cambios siguientes:

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

Se devuelve algo similar a lo siguiente:

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

Haz los cambios siguientes:

RUNTIME_SA_NAME: ID de la cuenta de servicio de tiempo 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 ni el miembro esperado en el resultado, sigue los pasos de la sección Resolución para asignar los roles correctos.

Resolución

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

Haz los cambios siguientes:

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

Si los pasos que se indican en este documento no resuelven el problema, consulta Información de diagnóstico que debes recoger.

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

Diagnóstico

Si no ve algunos de los registros en Cloud Logging después de asegurarse de que no se debe a las otras causas descritas en este documento, es posible que el tamaño de algunas de las entradas de registro enviadas desde Apigee supere los 256 KB, que es el límite máximo para una entrada de registro en Cloud Logging. Para obtener más información, consulta Límites de uso de Logging.

Resolución

Se trata de 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 enviada 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 que se indican en este documento no resuelven el problema, consulta Información de diagnóstico que debes recoger.

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

Diagnóstico

A veces, los clientes ven la solicitud en la sesión de depuración, pero no se registra en el explorador de registros, aunque esté presente en los registros del balanceador de carga.

La pérdida de mensajes observada podría deberse al agotamiento de la cuota en el proyecto. La API Cloud Logging aplica un límite de frecuencia de 120.000 solicitudes de escritura por minuto. Si se supera esta cuota, es posible que se pierdan mensajes.Para obtener más información, consulta Ver y gestionar cuotas.

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

Resolución

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

  1. En la página Cuotas , marca las casillas correspondientes a la API de Cloud Logging y haz clic en Editar cuotas. Si recibes un error Edit is not allowed for this quota, puedes ponerte en contacto con el equipo de Asistencia de Google Cloud para solicitar cambios en la cuota. Ten en cuenta también que la facturación debe estar habilitada en el proyecto de Google Cloud para poder hacer clic en las casillas.
  2. En el panel Cambios en las cuotas, selecciona el servicio para ampliar la vista y, a continuación, rellena los campos Nuevo límite y Descripción de la solicitud. Haz clic en Siguiente.
  3. Rellena el formulario del panel Datos de contacto y haz clic en Enviar solicitud.

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

Debe recoger información de diagnóstico

Si el problema persiste incluso después de seguir las instrucciones anteriores, recoge la siguiente información de diagnóstico y ponte en contacto con el equipo de Asistencia de Google Cloud:

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