Soluciona problemas de Cloud Scheduler

En esta página, se muestra cómo resolver problemas con Cloud Scheduler.

Cloud Scheduler publica registros al comienzo y al final de cada ejecución de trabajo. Puedes recuperar, ver y analizar los registros de un trabajo específico, incluidos los registros de auditoría que están disponibles para Cloud Scheduler. Para obtener más información, consulta Visualiza registros.

De forma predeterminada, cuando un trabajo de Cloud Scheduler no recibe un reconocimiento de su servicio de destino (el controlador de solicitudes de trabajo), se considera que el trabajo falló. Cloud Scheduler volverá a intentar el trabajo según la retirada exponencial que hayas configurado.

Para obtener información sobre los incidentes que afectan a los servicios de Google Cloud , consulta el Panel de Service Health deGoogle Cloud y Todos los incidentes informados para Cloud Scheduler.

El trabajo falla debido a un problema del servicio downstream

La falla de un trabajo puede deberse a un problema en un servicio descendente al que se orienta Cloud Scheduler, por ejemplo, Cloud Run, en lugar de Cloud Scheduler. Puedes sospechar que hay un problema con el servicio descendente cuando se aplican las siguientes condiciones:

  • Los permisos de Cloud Scheduler están configurados correctamente.
  • Cloud Scheduler puede llegar correctamente al servicio de destino.
  • Los mensajes de error en los registros de ejecución de Cloud Scheduler se originan en el servicio downstream.

Para resolver este problema, realiza los siguientes pasos:

  1. Invoca el servicio downstream directamente: Verifica que el servicio downstream se pueda invocar correctamente sin Cloud Scheduler. Una invocación exitosa indica que es probable que Cloud Scheduler esté causando el problema. Si no tiene éxito, el servicio downstream requiere más depuración.
  2. Examina los registros del servicio de destino: Examina los registros del servicio de destino, determina los errores que se generan y clasifícalos según corresponda.
  3. Busca operaciones de larga duración: Cuando Cloud Scheduler devuelve un error de HTTP 504 para operaciones de larga duración (más de 30 minutos), verifica los registros del servicio de destino para ver si la ejecución se realizó correctamente o falló, ya que el servicio de destino podría tener un tiempo de espera de solicitud más largo. En este caso, Cloud Scheduler agota el tiempo de espera, pero el servicio de destino no.

El trabajo falla con un error de permiso

Los permisos controlan qué principales pueden acceder a los recursos y qué operaciones están permitidas. Los permisos mal configurados pueden interrumpir las ejecuciones de trabajos y generar errores de permiso denegado. Los registros de auditoría proporcionan un registro detallado de todos los cambios de permisos, lo que te permite identificar el origen de estos problemas.

Cuando tu trabajo de Cloud Scheduler falla con un error de permiso, los registros de ejecución pueden mostrar un mensaje similar a "debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403".

Para resolver este problema, completa una o más de las siguientes verificaciones:

  • Verifica los roles de IAM otorgados al agente de servicio: El agente de servicio de Cloud Scheduler requiere el rol de agente de servicio de Cloud Scheduler (roles/cloudscheduler.serviceAgent). Sin este rol, los trabajos de Cloud Scheduler fallan. Puedes otorgar el rol de forma manual a tu agente de servicio de Cloud Scheduler. Se requiere un otorgamiento manual solo si habilitaste la API de Cloud Scheduler antes del 19 de marzo de 2019 o si quitaste el rol de agente de servicio de Cloud Scheduler. Para obtener más información, consulta Otorga el rol de agente de servicio de Cloud Scheduler.

  • Verifica los permisos de tu cuenta de servicio: Asegúrate de que la cuenta de servicio adjunta a tu trabajo tenga los permisos y el alcance correctos para invocar el servicio de destino. Esto incluye situaciones en las que el destino se encuentra en otro proyecto o es el destino final de un servicio intermediario. Cuando tu destino esté dentro de Google Cloud, confirma que hayas otorgado los roles necesarios a tu cuenta de servicio. Cada servicio dentro de Google Cloud requiere un rol específico, y el servicio receptor verifica automáticamente el token generado. Por ejemplo, para Cloud Run y Cloud Run Functions, debes otorgar el rol Cloud Run Invoker. Cuando tu destino está fuera de Google Cloud, el servicio receptor debe verificar el token de forma manual. Para obtener más información, consulta Autentica en Cloud Scheduler y Usa la autenticación con destinos HTTP.

  • Verifica cualquier incumplimiento de los Controles del servicio de VPC: Los Controles del servicio de VPC son una función de Google Cloud que te permite configurar un perímetro seguro para protegerte contra el robo de datos. Para identificar si el error está relacionado con los Controles del servicio de VPC, verifica si habilitaste los Controles del servicio de VPC y si los aplicaste a los proyectos y servicios que intentas usar. Para verificar si los proyectos y servicios están protegidos por los Controles del servicio de VPC, consulta la política de los Controles del servicio de VPC en ese nivel de la jerarquía de recursos.

    Para comprender el alcance de un problema, puedes recuperar errores de los Controles del servicio de VPC a partir de los registros de auditoría.

    1. En la consola de Google Cloud , ve a la página Explorador de registros del :

      Ir al Explorador de registros

      Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuyo subtítulo es Logging.

    2. Consulta los registros de auditoría para los siguientes criterios:

      severity="ERROR" AND protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS"

      Específicamente, los mensajes de error pueden incluir el siguiente texto:

      • Request is prohibited by organization's policy
      • Request violates VPC Service Controls

    Para obtener más información sobre los problemas que pueden surgir cuando configuras los Controles del servicio de VPC, consulta Soluciona problemas habituales.

  • Verifica los extremos privados: Cloud Scheduler solo puede invocar ciertos extremos privados, como Cloud Run, Cloud Run Functions y las APIs de Google Cloud dentro de un perímetro de Controles del servicio de VPC. Verifica la configuración de entrada para tu servicio de destino; por ejemplo, consulta Restringe la entrada de red para Cloud Run y los permisos de la cuenta de servicio adjunta. Es posible que recibas un mensaje de error URL_ERROR-ERROR_DNS. Para obtener más información, consulta El trabajo falla debido a un destino inaccesible en este documento.

El trabajo falla debido a un destino inaccesible

Este problema se produce cuando el trabajo de Cloud Scheduler falla porque no se puede acceder al destino. Los registros de ejecución muestran errores que comienzan con URL_ERROR o URL_UNREACHABLE.

Para resolver este problema, según el mensaje de error recibido, completa una de las siguientes verificaciones:

  • URL_ERROR-ERROR_AUTHENTICATION: Se devuelve un error HTTP 401 (Unauthorized) o HTTP 407 (Proxy Authentication Required). El destino requiere autenticación; sin embargo, la solicitud de Cloud Scheduler no incluye un token de autenticación válido, por ejemplo, falta un encabezado de autorización en la solicitud o las credenciales no son válidas. Verifica la configuración de autenticación de tu trabajo. Si tu extremo de destino requiere una clave de API en el encabezado de la solicitud, asegúrate de que el nombre del encabezado coincida con lo que espera el servicio de destino, como x-api-key o X-Goog-Api-Key, en lugar de api_key. Para obtener más información, consulta Autentica en Cloud Scheduler y Usa la autenticación con destinos HTTP.

  • URL_ERROR-ERROR_DNS: Indica que falló la recuperación de una URL porque no se pudo resolver el nombre de host con el sistema de nombres de dominio (DNS). Por ejemplo, el nombre de host no existe o no tiene una dirección IP asociada. Es posible que el mensaje de error incluya el texto Original HTTP response code number = 0. Verifica la validez del nombre de host y, cuando invoques un extremo privado, asegúrate de que sea compatible con Cloud Scheduler y verifica su configuración de entrada.

  • URL_ERROR-ERROR_NOT_FOUND: El servidor web devuelve un error de HTTP 404 Not Found. Verifica si la URL de destino es correcta y si el recurso existe.

  • URL_ERROR-ERROR_OTHER: Se refiere a un error de HTTP 4xx genérico que no se detalló antes. Verifica los registros para recuperar el código de respuesta HTTP original. Si recibes un error de HTTP 403, consulta El trabajo falla con un error de permiso en este documento.

  • URL_UNREACHABLE-UNREACHABLE_5xx: El destino muestra un error HTTP 5xx o 429. Esta podría ser una condición transitoria, por ejemplo, un servidor sobrecargado. Verifica los registros del destino para depurar el problema.

  • URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET: El par restableció la conexión. Verifica si hay un problema en el servidor externo.

  • URL_UNREACHABLE-UNREACHABLE_ERROR: Indica un error de red. Verifica si la URL de destino es correcta y si hay alguna regla de firewall que bloquee el acceso.

Destino no admitido cuando se usa un perímetro seguro

Cuando Cloud Scheduler es un servicio restringido en un perímetro de Controles del servicio de VPC, cualquier intento de crear o actualizar un trabajo con un destino no compatible fallará con un código de error TARGET_TYPE_NOT_PERMITTED_FOR_VPC. Para obtener más información, consulta Protege los trabajos cron con los Controles del servicio de VPC.

Problemas de ejecución de trabajos

Los trabajos de Cloud Scheduler se ejecutan en horarios definidos o a intervalos regulares. Los siguientes problemas pueden ocurrir mientras se ejecuta un trabajo.

Un trabajo que antes funcionaba deja de ejecutarse

Este problema se produce cuando un trabajo de Cloud Scheduler que se ejecutó correctamente deja de ejecutarse porque la API de Cloud Scheduler está inhabilitada. Puedes confirmar la hora en que se inhabilitó la API consultando los registros de auditoría con los siguientes criterios:

resource.type="audited_resource" AND
protoPayload.serviceName="cloudscheduler.googleapis.com" AND
operation.producer="serviceusage.googleapis.com" AND
protoPayload.authorizationInfo.permission="serviceusage.services.disable"

Para resolver este problema, habilita la API de Cloud Scheduler.

No se inician las ejecuciones de trabajos posteriores

Este problema se produce cuando un trabajo aún se está ejecutando o está esperando una respuesta de su destino. Se omiten otras ejecuciones programadas del trabajo hasta que finalice la ejecución actual o se agote el tiempo de espera.

En las entradas de registro, busca la entrada type.googleapis.com/google.cloud.scheduler.logging.AttemptStarted más reciente y su entrada type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished correspondiente. Si falta la entrada AttemptFinished o aparece después de la próxima ejecución programada del trabajo, se bloquearán otras ejecuciones pendientes y no se iniciarán. Según la programación del trabajo, esto puede evitar que se inicien varias ejecuciones de trabajos. Para investigar más, verifica el tiempo de espera en el destino de tu trabajo y si este destino tuvo algún problema.

Ten en cuenta que solo se debe ejecutar una instancia de un trabajo en cualquier momento. En raras circunstancias, es posible que se soliciten varias instancias del mismo trabajo. Como resultado, tu controlador de solicitudes debe ser idempotente, y tu código debe garantizar que no haya efectos secundarios dañinos si esto ocurre.

La ejecución de un trabajo se vuelve irregular debido al horario de verano

Cuando creas un trabajo de Cloud Scheduler con la consola de Google Cloud , debes especificar una zona horaria. Cuando usas Google Cloud CLI, puedes especificar una zona horaria de forma opcional con la marca --time-zone. De lo contrario, la zona horaria predeterminada que se usa es la hora universal coordinada o UTC.

Este problema se produce cuando un trabajo se configura con una zona horaria que no es UTC y su ejecución se vuelve irregular debido a los cambios del horario de verano (DST). Este es el comportamiento esperado.

Si tu trabajo requiere una cadencia muy exacta, debes elegir una zona horaria que no use el horario de verano. Específicamente, para evitar el problema por completo, configura la programación de tu trabajo para que use la zona horaria UTC.

Para obtener más información, consulta Formato y zona horaria del trabajo cron.

¿Qué sigue?

Si no encuentras una solución a tu problema en la documentación de Cloud Scheduler, considera las siguientes opciones:

Para obtener más información, consulta Asistencia de Cloud Scheduler.