Résoudre les problèmes liés à Cloud Scheduler

Cette page explique comment résoudre les problèmes liés à Cloud Scheduler.

Cloud Scheduler publie des journaux au début et à la fin de chaque exécution de job. Vous pouvez récupérer, afficher et analyser les journaux d'un job spécifique, y compris les journaux d'audit disponibles pour Cloud Scheduler. Pour en savoir plus, consultez Afficher les journaux.

Par défaut, lorsqu'une tâche Cloud Scheduler ne reçoit pas d'accusé de réception de son service cible (le gestionnaire de requêtes de la tâche), elle est considérée comme ayant échoué. Cloud Scheduler relance le job en fonction de l'intervalle exponentiel entre les tentatives que vous avez configuré.

Pour en savoir plus sur les incidents affectant les services Google Cloud , consultez le tableau de bord Service Health et Tous les incidents signalés pour Cloud Scheduler.Google Cloud

Échec du job en raison d'un problème de service en aval

Un échec de job peut être dû à un problème dans un service en aval ciblé par Cloud Scheduler (par exemple, Cloud Run) plutôt qu'à Cloud Scheduler lui-même. Vous pouvez suspecter un problème de service en aval lorsque les conditions suivantes s'appliquent :

  • Les autorisations pour Cloud Scheduler sont correctement configurées.
  • Cloud Scheduler peut accéder au service cible.
  • Les messages d'erreur dans les journaux d'exécution Cloud Scheduler proviennent du service en aval.

Pour résoudre ce problème, procédez comme suit :

  1. Appelez directement le service en aval : vérifiez que le service en aval peut être appelé sans problème sans Cloud Scheduler. Une invocation réussie indique que Cloud Scheduler est probablement à l'origine du problème. En cas d'échec, le service en aval nécessite un débogage plus approfondi.
  2. Examinez les journaux du service de destination : examinez les journaux du service de destination, identifiez les erreurs générées et triez-les en conséquence.
  3. Recherchez les opérations de longue durée : lorsque Cloud Scheduler renvoie une erreur HTTP 504 pour les opérations de longue durée (plus de 30 minutes), vérifiez les journaux du service de destination pour voir si l'exécution a réussi ou échoué, car le service de destination peut avoir un délai d'expiration de la requête plus long. Dans ce cas, Cloud Scheduler expire, mais pas le service de destination.

La tâche échoue en raison d'une erreur d'autorisation

Les autorisations contrôlent les comptes principaux qui peuvent accéder aux ressources et les opérations autorisées. Des autorisations mal configurées peuvent perturber l'exécution des jobs et entraîner des erreurs d'autorisation refusée. Les journaux d'audit fournissent un enregistrement détaillé de toutes les modifications apportées aux autorisations, ce qui vous permet d'identifier la source de ces problèmes.

Lorsque votre tâche Cloud Scheduler échoue en raison d'une erreur d'autorisation, les journaux d'exécution peuvent afficher un message semblable à "debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403".

Pour résoudre ce problème, effectuez une ou plusieurs des vérifications suivantes :

  • Vérifiez les rôles IAM attribués à l'agent de service : l'agent de service Cloud Scheduler nécessite le rôle Agent de service Cloud Scheduler (roles/cloudscheduler.serviceAgent). Sans ce rôle, les tâches Cloud Scheduler échouent. Vous pouvez attribuer manuellement le rôle à votre agent de service Cloud Scheduler. Une attribution manuelle n'est requise que si vous avez activé l'API Cloud Scheduler avant le 19 mars 2019 ou si vous avez supprimé le rôle d'agent de service Cloud Scheduler. Pour en savoir plus, consultez Attribuer le rôle "Agent de service Cloud Scheduler".

  • Vérifiez les autorisations de votre compte de service : assurez-vous que le compte de service associé à votre job dispose des autorisations et du champ d'application appropriés pour appeler le service de destination. Cela inclut les scénarios dans lesquels la cible se trouve dans un autre projet ou est la cible finale d'un service intermédiaire. Si votre cible se trouve dans Google Cloud, vérifiez que vous avez accordé les rôles nécessaires à votre compte de service. Chaque service dans Google Cloud nécessite un rôle spécifique, et le service de réception valide automatiquement le jeton généré. Par exemple, pour Cloud Run et Cloud Run Functions, vous devez accorder le rôle Cloud Run Invoker. Lorsque votre cible se trouve en dehors de Google Cloud, le service de réception doit valider manuellement le jeton. Pour en savoir plus, consultez S'authentifier auprès de Cloud Scheduler et Utiliser l'authentification avec des cibles HTTP.

  • Vérifiez les éventuels cas de non-respect de VPC Service Controls : VPC Service Controls est une fonctionnalité Google Cloudqui vous permet de configurer un périmètre sécurisé pour vous protéger contre l'exfiltration de données. Pour déterminer si une erreur est liée à VPC Service Controls, vérifiez que vous avez activé cette solution et que vous l'avez appliquée aux projets et services que vous tentez d'utiliser. Pour vérifier si les projets et les services sont protégés par VPC Service Controls, consultez la règle VPC Service Controls à ce niveau de la hiérarchie des ressources.

    Pour comprendre l'étendue d'un problème, vous pouvez récupérer les erreurs VPC Service Controls à partir des journaux d'audit.

    1. Dans la console Google Cloud , accédez à la page Explorateur de journaux.

      Accéder à l'explorateur de journaux

      Si vous utilisez la barre de recherche pour trouver cette page, sélectionnez le résultat dont le sous-titre est Logging.

    2. Interrogez les journaux d'audit en fonction des critères suivants :

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

      Plus précisément, les messages d'erreur peuvent inclure le texte suivant :

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

    Pour en savoir plus sur les problèmes que vous pouvez rencontrer lors de la configuration de VPC Service Controls, consultez Résoudre les problèmes courants.

  • Vérifiez les points de terminaison privés : Cloud Scheduler ne peut appeler que certains points de terminaison privés tels que Cloud Run, les fonctions Cloud Run et les API Google Cloud dans un périmètre VPC Service Controls. Vérifiez les paramètres d'entrée de votre service de destination (par exemple, consultez Restreindre l'entrée réseau pour Cloud Run) et les autorisations du compte de service associé. Vous pouvez recevoir un message d'erreur URL_ERROR-ERROR_DNS. Pour en savoir plus, consultez la section Échec de la tâche en raison d'une cible de destination inaccessible de ce document.

Échec du job en raison d'une cible de destination inaccessible

Ce problème se produit lorsque votre tâche Cloud Scheduler échoue, car la cible de destination est inaccessible. Les journaux d'exécution affichent les erreurs commençant par URL_ERROR ou URL_UNREACHABLE.

Pour résoudre ce problème, effectuez l'une des vérifications suivantes, en fonction du message d'erreur reçu :

  • URL_ERROR-ERROR_AUTHENTICATION : une erreur HTTP 401 (Unauthorized) ou HTTP 407 (Proxy Authentication Required) est renvoyée. La cible de destination nécessite une authentification, mais la requête Cloud Scheduler n'inclut pas de jeton d'authentification valide (par exemple, la requête ne contient pas d'en-tête d'autorisation ou les identifiants ne sont pas valides). Vérifiez les paramètres d'authentification de votre job. Pour en savoir plus, consultez S'authentifier auprès de Cloud Scheduler et Utiliser l'authentification avec des cibles HTTP.

  • URL_ERROR-ERROR_DNS : indique qu'une récupération d'URL a échoué, car le nom d'hôte n'a pas pu être résolu à l'aide du système de noms de domaine (DNS). Par exemple, le nom d'hôte n'existe pas ou n'est associé à aucune adresse IP. Le message d'erreur peut contenir le texte Original HTTP response code number = 0. Vérifiez la validité du nom d'hôte et, lorsque vous appelez un point de terminaison privé, assurez-vous qu'il est compatible avec Cloud Scheduler et vérifiez ses paramètres d'entrée.

  • URL_ERROR-ERROR_NOT_FOUND : le serveur Web renvoie une erreur HTTP 404 Not Found. Vérifiez que l'URL cible est correcte et que la ressource existe.

  • URL_ERROR-ERROR_OTHER : il s'agit d'une erreur HTTP 4xx générique qui n'a pas été détaillée précédemment. Consultez les journaux pour récupérer le code de réponse HTTP d'origine. Si vous recevez une erreur HTTP 403, consultez Échec de la tâche en raison d'une erreur d'autorisation dans ce document.

  • URL_UNREACHABLE-UNREACHABLE_5xx : la cible de destination renvoie une erreur HTTP 5xx ou 429. Il peut s'agir d'une condition temporaire (par exemple, un serveur surchargé). Consultez les journaux de la cible de destination pour déboguer le problème.

  • URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET : la connexion a été réinitialisée par l'homologue. Vérifiez s'il y a un problème côté serveur externe.

  • URL_UNREACHABLE-UNREACHABLE_ERROR : indique une erreur réseau. Vérifiez si l'URL cible est correcte et s'il existe des règles de pare-feu qui bloquent l'accès.

Problèmes d'exécution des jobs

Les jobs Cloud Scheduler s'exécutent à des heures définies ou à intervalles réguliers. Les problèmes suivants peuvent survenir lors de l'exécution d'un job.

Un job qui fonctionnait auparavant cesse de s'exécuter

Ce problème se produit lorsqu'une tâche Cloud Scheduler qui s'exécutait auparavant correctement cesse de s'exécuter, car l'API Cloud Scheduler est désactivée. Vous pouvez confirmer l'heure à laquelle l'API a été désactivée en interrogeant les journaux d'audit pour les critères suivants :

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

Pour résoudre ce problème, activez l'API Cloud Scheduler.

L'exécution d'un job devient irrégulière en raison de l'heure d'été

Lorsque vous créez un job Cloud Scheduler à l'aide de la console Google Cloud , vous devez spécifier un fuseau horaire. Lorsque vous utilisez Google Cloud CLI, vous pouvez éventuellement spécifier un fuseau horaire à l'aide de l'option --time-zone. Sinon, le fuseau horaire par défaut utilisé est le temps universel coordonné ou UTC.

Ce problème se produit lorsqu'un job est configuré avec un fuseau horaire autre qu'UTC et que son exécution devient irrégulière en raison des changements d'heure d'été. Il s'agit d'un comportement normal.

Si votre travail nécessite une cadence très précise, vous devez choisir un fuseau horaire qui n'observe pas l'heure d'été. Plus précisément, pour éviter complètement le problème, configurez la programmation de votre job pour qu'elle utilise le fuseau horaire UTC.

Pour en savoir plus, consultez Format et fuseau horaire des tâches Cron.

Étapes suivantes

Si vous ne trouvez pas de solution à votre problème dans la documentation Cloud Scheduler, envisagez les options suivantes :

Pour en savoir plus, consultez Assistance Cloud Scheduler.