Nesta página, mostramos como resolver problemas com o Cloud Scheduler.
O Cloud Scheduler publica registros no início e no final de cada execução de job. É possível recuperar, visualizar e analisar os registros de um job específico, incluindo os registros de auditoria disponíveis para o Cloud Scheduler. 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), ele é considerado como falho. O Cloud Scheduler vai tentar executar novamente o job 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 do Service Health 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, como o Cloud Run, e não pelo próprio Cloud Scheduler. Você pode suspeitar de um problema de serviço downstream 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 exigir 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.
- 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, já que o serviço de destino pode ter um tempo limite de solicitação mais longo. Nesse cenário, o Cloud Scheduler expira, mas o serviço de destino não.
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 levar a erros de permissão negada. Os registros de auditoria fornecem um registro detalhado de todas as mudanças de permissão, permitindo que você identifique 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 IAM concedidos ao agente de serviço: o agente de serviço do Cloud Scheduler requer o papel de 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 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: verifique 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. 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 do Google 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ê ativou o VPC Service Controls e o aplicou aos projetos e serviços que está tentando usar. Para verificar se os projetos e serviços estão protegidos pelo VPC Service Controls, verifique a política 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 determinados endpoints particulares, 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, neste documento, consulte Falha no job devido a um destino inacessível.
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 de 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. Essa 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 há regras de firewall 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 não compatível vai
falhar com um código de 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 se
esse destino teve algum problema.
Apenas uma instância de um job deve ser executada por vez. Em raras circunstâncias, é possível que várias instâncias do mesmo job sejam solicitadas. Como resultado, o gerenciador de solicitações precisa ser idempotente, e o código precisa garantir que não haja efeitos colaterais prejudiciais se isso ocorrer.
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 usado
será o Horário Universal Coordenado ou 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 muito exata, escolha um fuso horário que não use o horário de verão. Especificamente, para evitar o 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.