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
- Busca el nombre de la cuenta de servicio.
- Usar la interfaz de usuario de Apigee:
- Haz clic en Desarrollo > Proxies de API y, a continuación, en el nombre de un proxy. Por ejemplo, TurboBooks.
-
En Implementaciones, se muestra el nombre de la cuenta de servicio.
-
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. - ORG_NAME: el nombre de tu organización. Por ejemplo,
- Usar la interfaz de usuario de Apigee:
- Verifica lo siguiente en esta cuenta de servicio proxy:
-
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.
-
El usuario que despliega el proxy tiene el permiso
iam.serviceAccounts.actAs
en esta cuenta de servicio.- Para ver una lista de roles, consulta la sección sobre roles de cuentas de servicio.
- Para ver los roles de un usuario concreto, consulta la sección Ver el acceso actual.
-
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.
-
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 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
- 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.
-
Si el usuario que implementa el proxy no tiene el permiso
iam.serviceAccounts.actAs
en esta cuenta de servicio, consulta Asignar un solo rol. - 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:
- En la interfaz de usuario de Apigee, haz clic en Desarrollo > Proxies de API > Nombre del proxy de API > pestaña Desarrollo.
-
En el panel Código, busque el elemento
<CloudLogging>
. -
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
.
-
PROJECT_ID: el Google Cloud ID de proyecto. Por ejemplo,
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:
- 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. - 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.
- 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
.