O Cloud Scheduler publica registros no início e no final de cada execução de job que permitem diagnosticar e resolver problemas. É possível recuperar, visualizar e analisar registros de execução e auditoria de um job específico. Para mais informações, consulte Visualizar registros.
Por padrão, quando um job do Cloud Scheduler não recebe uma confirmação do serviço de destino (o gerenciador de solicitações de job), o Cloud Scheduler considera que o job falhou e tenta novamente de acordo com a espera exponencial que você configurou.
Para informações sobre incidentes que afetam os serviços do Google Cloud , consulte o Google Cloud Painel de integridade do serviço e Todos os incidentes informados para o Cloud Scheduler.
O job falha devido a um problema de serviço downstream
Uma falha de job pode ser causada por um problema em um serviço downstream que o Cloud Scheduler está segmentando (por exemplo, o Cloud Run), e não pelo próprio Cloud Scheduler. Um problema de serviço downstream é provável quando as seguintes condições se aplicam:
- As permissões do Cloud Scheduler estão configuradas corretamente.
- O Cloud Scheduler pode alcançar o serviço de destino.
- As mensagens de erro nos registros de execução do Cloud Scheduler são originadas do serviço downstream.
Para resolver esse problema, siga estas etapas:
- Invoque o serviço downstream diretamente: verifique se o serviço downstream pode ser invocado sem o Cloud Scheduler. Uma invocação bem-sucedida indica que o Cloud Scheduler provavelmente está causando o problema. Se não for bem-sucedida, o serviço downstream vai precisar de mais depuração.
- Examine os registros do serviço de destino: examine os registros do serviço de destino, determine os erros que estão sendo gerados e faça a triagem deles de acordo.
- Procure operações de longa duração: quando o Cloud Scheduler retornar
um erro HTTP
504para operações de longa duração (mais de 30 minutos), verifique os registros do serviço de destino para ver se a execução foi bem-sucedida ou falhou, porque o serviço de destino pode ter um tempo limite de solicitação mais longo. Nesse cenário, o Cloud Scheduler expira e pode tentar executar o job novamente enquanto o serviço de destino ainda está em execução. Para evitar execuções duplicadas em novas tentativas, consulte Eliminar duplicação de solicitações de job.
O job falha com um erro de permissão
As permissões controlam quais principais podem acessar recursos e quais operações são permitidas. Permissões configuradas incorretamente podem interromper as execuções de jobs e causar erros de permissão negada. Os registros de auditoria fornecem um registro detalhado de todas as mudanças de permissão para que você possa identificar a origem desses problemas.
Quando o job do Cloud Scheduler falha com um erro de permissão, os
registros de execução podem exibir uma mensagem semelhante a
"debugInfo":"URL_ERROR-ERROR_OTHER. Original HTTP response code number = 403".
Para resolver esse problema, conclua uma ou mais das seguintes verificações:
Verifique os papéis do Identity and Access Management (IAM) concedidos ao agente de serviço: o agente de serviço do Cloud Scheduler requer o papel Agente de serviço do Cloud Scheduler (
roles/cloudscheduler.serviceAgent). Sem esse papel, os jobs do Cloud Scheduler falham. É possível conceder manualmente o papel ao agente de serviço do Cloud Scheduler. Uma concessão manual é necessária somente se você tiver ativado a API Cloud Scheduler antes de 19 de março de 2019 ou se tiver removido o papel de agente de serviço do Cloud Scheduler. Para mais informações, consulte Conceder o papel de agente de serviço do Cloud Scheduler.Verifique as permissões da conta de serviço: confira se a conta de serviço anexada ao job tem as permissões e o escopo corretos para invocar o serviço de destino. Isso inclui cenários em que o destino está em outro projeto ou é o destino final de um serviço intermediário. Quando o destino estiver em Google Cloud, confirme se você concedeu os papéis necessários à sua conta de serviço. Cada serviço no Google Cloud requer um papel específico, e o serviço de recebimento verifica automaticamente o token gerado. Por exemplo, para o Cloud Run e o Cloud Run functions, é necessário conceder o papel
Cloud Run Invoker(roles/run.invoker). Quando o destino está fora do Google Cloud, o serviço de recebimento precisa verificar manualmente o token. Para mais informações, consulte Autenticar no Cloud Scheduler e Usar a autenticação com destinos HTTP.Verifique se há violações do VPC Service Controls: o VPC Service Controls é um recurso doGoogle Cloud que permite configurar um perímetro seguro para evitar a exfiltração de dados. Para determinar se um erro está relacionado ao VPC Service Controls, verifique se você o ativou e o aplicou aos projetos e serviços que está usando. Para verificar se os projetos e serviços estão protegidos pelo VPC Service Controls, verifique a política do VPC Service Controls no nível da hierarquia de recursos.
Para entender o escopo de um problema, é possível recuperar erros do VPC Service Controls nos registros de auditoria:
-
No console do Google Cloud , acesse a página Análise de registros:
Acessar a Análise de registros
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Logging.
Consulte os registros de auditoria para os seguintes critérios:
severity="ERROR" AND protoPayload.status.details.violations.type="VPC_SERVICE_CONTROLS"
Especificamente, as mensagens de erro podem incluir o seguinte texto:
Request is prohibited by organization's policyRequest violates VPC Service Controls
Para mais informações sobre problemas que podem ser encontrados ao configurar o VPC Service Controls, consulte Resolver problemas comuns.
-
Verifique todos os endpoints particulares: o Cloud Scheduler só pode invocar endpoints particulares compatíveis, como o Cloud Run, as funções do Cloud Run e as APIs do Google Cloud em um perímetro do VPC Service Controls. Verifique as configurações de entrada do serviço de destino (por exemplo, consulte Restringir a entrada de rede para o Cloud Run) e as permissões da conta de serviço anexada. Talvez você receba uma mensagem de erro
URL_ERROR-ERROR_DNS. Para mais informações, consulte O job falha devido a um destino inacessível neste documento.
O job falha devido a um destino inacessível
Esse problema ocorre quando o job do Cloud Scheduler falha porque o
destino não está acessível. Os registros de execução mostram erros que começam
com URL_ERROR ou URL_UNREACHABLE.
Para resolver esse problema, dependendo da mensagem de erro recebida, faça uma das seguintes verificações:
URL_ERROR-ERROR_AUTHENTICATION: um erro HTTP401 (Unauthorized)ou HTTP407 (Proxy Authentication Required)é retornado. O destino requer autenticação, mas a solicitação do Cloud Scheduler não inclui um token de autenticação válido. Por exemplo, a solicitação não tem um cabeçalho de autorização ou as credenciais são inválidas. Verifique as configurações de autenticação do job. Se o endpoint de destino exigir uma chave de API no cabeçalho da solicitação, verifique se o nome do cabeçalho corresponde ao que o serviço de destino espera, comox-api-keyouX-Goog-Api-Key, em vez deapi_key. Para mais informações, consulte Autenticar no Cloud Scheduler e Usar a autenticação com destinos HTTP.URL_ERROR-ERROR_DNS: indica que uma busca de URL falhou porque o nome do host não pôde ser resolvido usando o Sistema de Nomes de Domínio (DNS). Por exemplo, o nome do host não existe ou não tem um endereço IP associado. A mensagem de erro pode incluir o textoOriginal HTTP response code number = 0. Verifique a validade do nome do host e, ao invocar um endpoint particular, confira se ele é compatível com o Cloud Scheduler e verifique as configurações de entrada.URL_ERROR-ERROR_NOT_FOUND: o servidor da Web retorna um erro HTTP404 Not Found. Verifique se o URL de destino está correto e se o recurso existe.URL_ERROR-ERROR_OTHER: refere-se a um erro HTTP4xxgenérico não detalhado anteriormente. Verifique os registros para recuperar o código de resposta HTTP original. Se você receber um erro HTTP403, consulte O job falha com um erro de permissão neste documento.URL_UNREACHABLE-UNREACHABLE_5xx: o destino retorna um erro HTTP5xxou429. Isso pode ser uma condição temporária, como um servidor sobrecarregado. Verifique os registros do destino para depurar o problema.URL_UNREACHABLE-UNREACHABLE_CONNECTION_RESET: a conexão foi redefinida pelo peering. Verifique se há um problema no servidor externo.URL_UNREACHABLE-UNREACHABLE_ERROR: indica um erro de rede. Verifique se o URL de destino está correto e se alguma regra de firewall está bloqueando o acesso.
Destino não compatível ao usar um perímetro seguro
Quando o Cloud Scheduler é um serviço restrito em um perímetro do VPC Service Controls, qualquer tentativa de criar ou atualizar um job com um destino incompatível falha com um código do erro TARGET_TYPE_NOT_PERMITTED_FOR_VPC.
Para mais informações, consulte
Proteger cron jobs com o VPC Service Controls.
Problemas de execução de jobs
Os jobs do Cloud Scheduler são executados em horários definidos ou em intervalos regulares. Os problemas a seguir podem ocorrer durante a execução de um job.
Um job que funcionava anteriormente para de ser executado
Esse problema ocorre quando um job do Cloud Scheduler que foi executado com sucesso para de ser executado porque a API Cloud Scheduler está desativada. Para confirmar o horário em que a API foi desativada, consulte os registros de auditoria para os seguintes critérios:
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 esse problema, ative a API Cloud Scheduler.
As execuções de jobs subsequentes não estão sendo iniciadas
Esse problema ocorre quando um job ainda está em execução ou aguardando uma resposta do destino. Outras execuções programadas do job são ignoradas até que a execução atual seja concluída ou expire.
Nas entradas de registro, encontre a entrada type.googleapis.com/google.cloud.scheduler.logging.AttemptStarted mais recente e a entrada type.googleapis.com/google.cloud.scheduler.logging.AttemptFinished correspondente. Se
a entrada AttemptFinished estiver ausente ou aparecer após a próxima execução programada
do job, outras execuções pendentes serão bloqueadas e não serão iniciadas. Dependendo da
programação do job, isso pode impedir que várias execuções de job sejam iniciadas. Para
investigar mais, verifique o tempo limite no destino do job e
confira se o destino encontrou algum problema.
A execução de um job se torna irregular devido ao horário de verão
Ao criar um job do Cloud Scheduler usando o console do Google Cloud , é necessário especificar um fuso horário. Ao usar a Google Cloud CLI, é possível especificar um fuso horário usando a flag --time-zone. Caso contrário, o fuso horário padrão será o Tempo Universal Coordenado (UTC).
Esse problema ocorre quando um job é configurado com um fuso horário que não é UTC e a execução dele se torna irregular devido a mudanças no horário de verão (DST, na sigla em inglês). Trata-se do comportamento esperado.
Se o job exigir uma cadência exata, escolha um fuso horário que não observe o horário de verão. Para evitar esse problema, configure a programação do job para usar o fuso horário UTC.
Para mais informações, consulte Formato e fuso horário do cron job.
A seguir
Se você não encontrar uma solução para seu problema na documentação do Cloud Scheduler, considere as seguintes opções:
- Receba suporte da comunidade
fazendo perguntas no Stack Overflow
ou
pesquise problemas semelhantes
usando a tag
google-cloud-scheduler. - Abra um caso de suporte entrando em contato com o atendimento ao cliente doGoogle Cloud .
- Abra um bug ou uma solicitação de recurso usando o Issue Tracker público.
Para mais informações, consulte Suporte do Cloud Scheduler.