Risolvi i problemi di Cloud Scheduler

Questa pagina mostra come risolvere i problemi relativi a Cloud Scheduler.

Cloud Scheduler pubblica i log all'inizio e alla fine di ogni esecuzione del job. Puoi recuperare, visualizzare e analizzare i log per un job specifico, inclusi gli audit log disponibili per Cloud Scheduler. Per saperne di più, consulta Visualizza i log.

Per impostazione predefinita, quando un job Cloud Scheduler non riceve una conferma dal servizio di destinazione, ovvero il gestore delle richieste del job, il job viene considerato non riuscito. Cloud Scheduler riproverà a eseguire il job in base al backoff esponenziale che hai configurato.

Per informazioni sugli incidenti che interessano i servizi Google Cloud , consulta la dashboard diGoogle Cloud Service Health e Tutti gli incidenti segnalati per Cloud Scheduler.

Il job non riesce a causa di un problema del servizio downstream

Un errore del job potrebbe essere dovuto a un problema in un servizio downstream scelto come target da Cloud Scheduler, ad esempio Cloud Run, anziché da Cloud Scheduler stesso. Puoi sospettare un problema del servizio downstream quando si applicano le seguenti condizioni:

  • Le autorizzazioni per Cloud Scheduler siano configurate correttamente.
  • Cloud Scheduler può raggiungere correttamente il servizio di destinazione.
  • I messaggi di errore nei log di esecuzione di Cloud Scheduler provengono dal servizio downstream.

Per risolvere questo problema, completa i seguenti passaggi:

  1. Richiama direttamente il servizio downstream: verifica che il servizio downstream possa essere richiamato correttamente senza Cloud Scheduler. Una chiamata riuscita indica che il problema è probabilmente causato da Cloud Scheduler; se non va a buon fine, il servizio downstream richiede un ulteriore debug.
  2. Esamina i log del servizio di destinazione: esamina i log del servizio di destinazione, determina gli errori di output e assegna loro la priorità di conseguenza.
  3. Cerca operazioni a lunga esecuzione: quando Cloud Scheduler restituisce un errore HTTP 504 per operazioni a lunga esecuzione (più di 30 minuti), controlla i log del servizio di destinazione per verificare se l'esecuzione è riuscita o meno, poiché il servizio di destinazione potrebbe avere un timeout della richiesta più lungo. In questo scenario, Cloud Scheduler va in timeout, ma il servizio di destinazione no.

Il job non riesce con un errore di autorizzazione

Le autorizzazioni controllano quali entità possono accedere alle risorse e quali operazioni sono consentite. Le autorizzazioni configurate in modo errato possono interrompere le esecuzioni dei job e causare errori di autorizzazione negata. I log di controllo forniscono un record dettagliato di tutte le modifiche alle autorizzazioni, consentendoti di identificare l'origine di questi problemi.

Quando un job Cloud Scheduler non riesce con un errore di autorizzazione, i log di esecuzione potrebbero visualizzare un messaggio simile a "debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403".

Per risolvere il problema, completa una o più delle seguenti verifiche:

  • Verifica i ruoli IAM concessi all'agente di servizio: l'agente di servizio Cloud Scheduler richiede il ruolo Cloud Scheduler Service Agent (roles/cloudscheduler.serviceAgent). Senza questo ruolo, i job Cloud Scheduler non vanno a buon fine. Puoi concedere manualmente il ruolo all'agente di servizio Cloud Scheduler. La concessione manuale è richiesta solo se hai abilitato l'API Cloud Scheduler prima del 19 marzo 2019 o se hai rimosso il ruolo Agente di servizio Cloud Scheduler. Per saperne di più, consulta Concedi il ruolo Agente di servizio Cloud Scheduler.

  • Verifica le account di servizio account: assicurati che il service account collegato al job disponga delle autorizzazioni e dell'ambito corretti per richiamare il servizio di destinazione. Sono inclusi gli scenari in cui la destinazione si trova in un altro progetto o è la destinazione finale di un servizio intermediario. Quando il target è all'interno di Google Cloud, verifica di aver concesso i ruoli necessari al tuo account di servizio. Ogni servizio all'interno di Google Cloud richiede un ruolo specifico e il servizio di ricezione verifica automaticamente il token generato. Ad esempio, per Cloud Run e Cloud Run Functions, devi concedere il ruolo Cloud Run Invoker. Quando il target è esterno a Google Cloud, il servizio di ricezione deve verificare manualmente il token. Per saperne di più, consulta Autenticati in Cloud Scheduler e Utilizza l'autenticazione con i target HTTP.

  • Verifica eventuali violazioni dei Controlli di servizio VPC: i Controlli di servizio VPC sono una funzionalità Google Cloudche ti consente di configurare un perimetro sicuro per proteggerti dall'esfiltrazione di dati. Per determinare se un errore è correlato ai Controlli di servizio VPC, verifica se hai abilitato i Controlli di servizio VPC e se li hai applicati ai progetti e ai servizi che stai tentando di utilizzare. Per verificare se i progetti e i servizi sono protetti dai Controlli di servizio VPC, controlla la policy dei Controlli di servizio VPC a quel livello della gerarchia delle risorse.

    Per comprendere l'ambito di un problema, puoi recuperare gli errori dei Controlli di servizio VPC dagli audit log.

    1. Nella console Google Cloud , vai alla pagina Esplora log:

      Vai a Esplora log

      Se utilizzi la barra di ricerca per trovare questa pagina, seleziona il risultato con il sottotitolo Logging.

    2. Esegui una query sugli audit log in base ai seguenti criteri:

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

      In particolare, i messaggi di errore potrebbero includere il seguente testo:

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

    Per saperne di più sui problemi che potresti riscontrare durante la configurazione dei Controlli di servizio VPC, consulta Risolvi i problemi comuni.

  • Verifica gli endpoint privati: Cloud Scheduler può richiamare solo determinati endpoint privati come Cloud Run, Cloud Run Functions e le API Google Cloud all'interno di un perimetro dei Controlli di servizio VPC. Controlla le impostazioni del traffico in entrata per il servizio di destinazione, ad esempio consulta Limita il traffico di rete in entrata per Cloud Run, e le autorizzazioni del account di servizio collegato. Potresti ricevere un messaggio di errore URL_ERROR-ERROR_DNS. Per saperne di più, consulta Il job non va a buon fine perché la destinazione non è raggiungibile in questo documento.

Il job non riesce a causa di una destinazione non raggiungibile

Questo problema si verifica quando il job Cloud Scheduler non riesce perché la destinazione non è raggiungibile. I log di esecuzione mostrano errori che iniziano con URL_ERROR o URL_UNREACHABLE.

Per risolvere il problema, a seconda del messaggio di errore ricevuto, completa uno dei seguenti controlli:

  • URL_ERROR-ERROR_AUTHENTICATION: viene restituito un errore HTTP 401 (Unauthorized) o HTTP 407 (Proxy Authentication Required). La destinazione richiede l'autenticazione, ma la richiesta di Cloud Scheduler non include un token di autenticazione valido, ad esempio manca un'intestazione di autorizzazione o le credenziali non sono valide. Controlla le impostazioni di autenticazione del job. Se l'endpoint di destinazione richiede una chiave API nell'intestazione della richiesta, assicurati che il nome dell'intestazione corrisponda a quello previsto dal servizio di destinazione, ad esempio x-api-key o X-Goog-Api-Key, anziché api_key. Per saperne di più, consulta Autenticati in Cloud Scheduler e Utilizza l'autenticazione con i target HTTP.

  • URL_ERROR-ERROR_DNS: indica che il recupero di un URL non è riuscito perché non è stato possibile risolvere il nome host utilizzando il Domain Name System (DNS), ad esempio il nome host non esiste o non ha un indirizzo IP associato. Il messaggio di errore potrebbe includere il testo Original HTTP response code number = 0. Verifica la validità del nome host e, quando richiami un endpoint privato, assicurati che sia supportato da Cloud Scheduler e controlla le relative impostazioni di traffico in entrata.

  • URL_ERROR-ERROR_NOT_FOUND: il server web restituisce un errore HTTP 404 Not Found. Verifica che l'URL di destinazione sia corretto e che la risorsa esista.

  • URL_ERROR-ERROR_OTHER: si riferisce a un errore HTTP 4xx generico non descritto in precedenza. Controlla i log per recuperare il codice di risposta HTTP originale. Se ricevi un errore HTTP 403, consulta Il job non riesce con un errore di autorizzazione in questo documento.

  • URL_UNREACHABLE-UNREACHABLE_5xx: la destinazione target restituisce un errore HTTP 5xx o 429. Potrebbe trattarsi di una condizione temporanea, ad esempio un server sovraccarico. Controlla i log della destinazione per eseguire il debug del problema.

  • URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET: la connessione è stata reimpostata dal peer. Verifica la presenza di un problema sul lato server esterno.

  • URL_UNREACHABLE-UNREACHABLE_ERROR: indica un errore di rete. Controlla se l'URL di destinazione è corretto e se esistono regole firewall che bloccano l'accesso.

Destinazione non supportata quando si utilizza un perimetro sicuro

Quando Cloud Scheduler è un servizio limitato in un perimetro dei Controlli di servizio VPC, qualsiasi tentativo di creare o aggiornare un job con un target non supportato non andrà a buon fine e verrà visualizzato un codice di errore TARGET_TYPE_NOT_PERMITTED_FOR_VPC. Per saperne di più, consulta Proteggi i cron job con i Controlli di servizio VPC.

Problemi di esecuzione dei job

I job Cloud Scheduler vengono eseguiti in orari definiti o a intervalli regolari. Durante l'esecuzione di un job potrebbero verificarsi i seguenti problemi.

Un job che in precedenza funzionava smette di essere eseguito

Questo problema si verifica quando un job Cloud Scheduler che in precedenza veniva eseguito correttamente smette di essere eseguito perché l'API Cloud Scheduler è disabilitata. Puoi confermare l'ora in cui l'API è stata disabilitata eseguendo una query sugli audit log in base ai seguenti criteri:

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

Per risolvere il problema, abilita l'API Cloud Scheduler.

Le esecuzioni dei job successive non vengono avviate

Questo problema si verifica quando un job è ancora in esecuzione o è in attesa di una risposta dalla sua destinazione. Le altre esecuzioni pianificate del job vengono ignorate fino al completamento o al timeout dell'esecuzione corrente.

Nelle voci di log, trova l'ultima voce type.googleapis.com/google.cloud.scheduler.logging.AttemptStarted e la voce type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished corrispondente. Se la voce AttemptFinished non è presente o viene visualizzata dopo la successiva esecuzione pianificata del job, le altre esecuzioni in attesa vengono bloccate e non verranno avviate. A seconda della pianificazione del job, ciò può impedire l'avvio di più esecuzioni del job. Per indagare ulteriormente, verifica il timeout sulla destinazione target del job e se questo target ha riscontrato problemi.

Tieni presente che deve essere eseguita una sola istanza di un job alla volta. In rari casi, è possibile che vengano richieste più istanze dello stesso job. Di conseguenza, il gestore delle richieste deve essere idempotente e il codice deve garantire che non si verifichino effetti collaterali dannosi in questo caso.

L'esecuzione di un job diventa irregolare a causa dell'ora legale

Quando crei un job Cloud Scheduler utilizzando la console Google Cloud , devi specificare un fuso orario. Quando utilizzi Google Cloud CLI, puoi facoltativamente specificare un fuso orario utilizzando il flag --time-zone; in caso contrario, il fuso orario predefinito utilizzato è il fuso orario universale coordinato o UTC.

Questo problema si verifica quando un job è configurato con un fuso orario diverso da UTC e la sua esecuzione diventa irregolare a causa dei cambi dell'ora legale. Questo è un comportamento previsto.

Se il job richiede una cadenza molto precisa, devi scegliere un fuso orario che non osserva l'ora legale. In particolare, per evitare del tutto il problema, configura la pianificazione del job in modo che utilizzi il fuso orario UTC.

Per saperne di più, consulta Formato e fuso orario dei cron job.

Passaggi successivi

Se non riesci a trovare una soluzione al tuo problema nella documentazione di Cloud Scheduler, considera le seguenti opzioni:

Per saperne di più, consulta Assistenza di Cloud Scheduler.