Soluciona problemas de 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 mal configurada 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 necesario 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

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 tomar 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: Cuenta de servicio de proxy mal configurada

Diagnóstico

Apigee

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

    2. Usa 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"

      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 ejemplo anterior, serviceAccount es la cuenta de servicio asociada con el proxy de API.

  2. Verifica lo siguiente para esta cuenta de servicio del 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, se debe 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 <LogName> sea el nombre del proyecto correcto:
    <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 en el elemento <LogName> no tiene el valor correcto, actualízalo al valor correcto.

Si los pasos de este documento no resuelven el problema, consulta Recopila 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 actuar en nombre 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 Recopila 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 la carga útil que tiene el potencial de superar este límite, no registres esta carga útil ni comprendas 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 Recopila información de diagnóstico.

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 Asistencia de Apigee:

  • 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.