Diagnosticar jobs de agregação

As tabelas a seguir detalham uma infinidade de problemas e códigos de status de erro com possíveis causas e ações que você pode tomar para mitigar a implantação. Se você quiser conferir as especificações e mitigação de erros completas do serviço de agregação, consulte nossas orientações públicas atuais.

Temas do guia:

Permissões e erros de autorização

Problema Problemas de permissões ao executar terraform plan ou terraform apply no projeto de nuvem pública.
Exemplo de erro Error: UnauthorizedOperation: You are not authorized to perform this operation.
Resolução

Verifique se você está autenticado corretamente na CLI (interface de linha de comando) da nuvem pública que está usando.

Amazon Web Services

A AWS exige permissões de usuário para criar instâncias e outros serviços necessários para o serviço de agregação. Depois disso, você poderá executar o terraform plan e o terraform apply sem problemas.

Google Cloud Platform

No Google Cloud, você vai precisar imitar uma conta de serviço para implantar a segunda metade do Terraform. Seu comando terraform apply pode falhar se você tiver pulado esta etapa, porque a conta de serviço de implantação tem todas as permissões necessárias para criar recursos. Consulte a etapa 4 em "Configurar seu ambiente de implantação" na documentação do GitHub.

Erros de margem de privacidade

Erro PRIVACY_BUDGET_ERROR
Causa Isso indica que o serviço não conseguiu processar os relatórios devido a um erro no serviço de orçamento de privacidade.
Cheque Depois de tentar novamente o job para saber se o erro foi intermitente, entre em contato conosco pelo formulário de suporte técnico.
Erro PRIVACY_BUDGET_AUTHORIZATION_ERROR
Causa Você pode estar usando uma origem de relatórios diferente da que foi fornecida durante a integração.
Cheque

Verifique se o site que você está enviando no campo attribution_report_to da solicitação createJob é o mesmo que foi enviado durante a integração.

O site precisa ser igual ou um subdomínio do que foi integrado. A integração do serviço de agregação é processada no domínio de nível superior, e todos os subdomínios estão qualificados para usar o serviço de agregação depois que o domínio de nível superior é integrado.

Erro PRIVACY_BUDGET_AUTHENTICATION_ERROR
Causa Você pode estar usando um ARN desatualizado ou incorreto.
Cheque Google Cloud Platform

Verifique se a conta de serviço usada na implantação do serviço de agregação corresponde à conta de serviço fornecida durante a integração. Ele precisa corresponder exatamente, não apenas pertencer ao mesmo projeto.

Amazon Web Services

Esperamos que você esteja usando os mesmos coordenadores que foram informados por e-mail. Se você ainda tiver problemas, colete seu arquivo auto.tfvars e as informações de origem do relatório e entre em contato conosco pelo formulário de suporte técnico.

Erro PRIVACY_BUDGET_EXHAUSTED
Causa Erro:
            "result_info": {
              "return_code": "PRIVACY_BUDGET_EXHAUSTED",
              "return_message": "com.google.aggregate.adtech.worker.exceptions.AggregationJobProcessException:
              Insufficient privacy budget for one or more aggregatable reports. No aggregatable report can appear
              in more than one aggregation job. Information related to reports that do not have budget can be
              found in the following file:
              File path: //
              Filename: privacy budget exhausted debugging information  \n
              com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.consumePrivacyBudgetUnits(ConcurrentAggregationProcessor.java:525) \n com.google.aggregate.adtech.worker.aggregation.concurrent.ConcurrentAggregationProcessor.process(ConcurrentAggregationProcessor.java:319) \n com.google.aggregate.adtech.worker.WorkerPullWorkService.run(WorkerPullWorkService.java:157)",
              "error_summary": {
                  "error_counts": [],
                  "error_messages": []
              },
              "finished_at": 
            }
          

O problema de esgotamento do orçamento de privacidade ocorre quando você tenta agrupar um relatório cujo ID compartilhado já foi incluído em um lote anterior. Esse erro ocorre devido à regra"Sem duplicações", em que os relatórios agregáveis só podem aparecer em um único lote e contribuir para um relatório de resumo.

Cada relatório vai receber um "ID compartilhado" que consiste na API de campos shared_info, reporting_origin, destination_site, source_registration_time (truncado por dia), scheduled_report_time (truncado por hora) e version. Isso significa que vários relatórios podem pertencer ao mesmo "ID compartilhado" se tiverem os mesmos atributos do campo shared_info.

Cheque

Recomendamos que você teste o suporte de orçamento esgotado de privacidade fornecido pela resposta do job para inspecionar e resolver o erro. Isso fornece um novo arquivo JSON auxiliar que mostra quais relatórios contribuíram para o erro.

Se você estiver fazendo isso corretamente, talvez se qualifique para a recuperação de orçamento (explicação). Sugira que eles leiam a explicação e preencham o formulário, mas observe que a solicitação precisa ser aprovada para recuperar o orçamento e executar o job novamente.

Erro DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED
Causa Isso indica que você está executando o job no modo de depuração. O job_parameters na solicitação createJob contém o debug_run: true. Quando a flag debug_run está ativada, é possível executar o relatório várias vezes para fins de depuração. Essa mensagem de erro informa que o job teria falhado devido ao esgotamento do orçamento de privacidade do relatório se não tivesse sido executado no modo de depuração. Esse erro só será válido nas versões v2.10.0 ou anteriores.
Cheque O corpo da solicitação createJob vai conter debug_run no job_parameters.
            {
              "job_request_id": "{job_request_id}",
              "input_data_blob_prefix": "{input_prefix}",
              "input_data_bucket_name": "{input_bucket}",
              "output_data_blob_prefix": "{output_prefix}",
              "output_data_bucket_name": "{output_bucket}",
              "job_parameters": {
                "output_domain_blob_prefix": "{output_domain_prefix}",
                "output_domain_bucket_name": "{output_domain_bucket}",
                "attribution_report_to": "{reporting_origin}",
                "debug_run": "true"
              }
            }
          

Erros de execução do job

Erro INVALID_JOB
Endpoint createJob
Causa Isso pode acontecer quando o epsilon de privacidade de depuração fornecido não está dentro dos limites (0,64) ou quando os parâmetros do job falham na validação.
Cheque Qual valor de epsilon foi usado? Quais parâmetros de job foram usados na solicitação createJob e correspondem ao seu ambiente? Eles estão formatados corretamente? Faça as correções necessárias e tente novamente.
Erro INTERNAL_ERROR
Endpoint getJob
Causa Pode ser um problema de formatação que causa falha no processamento de domínios de saída ou relatórios. Também pode ser um problema com a implantação do serviço de agregação.
Cheque Verifique se o local do domínio de saída é um caminho válido. Tente novamente. Se o erro persistir, solicite o arquivo auto.tfvars e a saída do plano do Terraform para resolver problemas na implantação do serviço de agregação.
Erro RESULT_WRITE_ERROR
Endpoint getJob
Causa Isso pode acontecer quando a gravação no diretório de saída falha, seja temporariamente ou devido à falta de permissão de gravação no diretório. Erros de gravação consomem o orçamento de privacidade, e o job não pode ser tentado novamente. Isso pode contribuir para outro resultado de erro de PRIVACY_BUDGET_EXHAUSTED.
Cheque Esse erro ocorre em todos os jobs ou apenas de forma intermitente? Se isso estiver ocorrendo em todos os jobs, verifique se você ativou as permissões de gravação no diretório de saída. Se for uma falha intermitente, as permissões estarão corretas. É um problema conhecido que a criação de relatórios de resumo pode falhar, mas o orçamento de privacidade ainda será consumido. Nesse caso, solicite a recuperação do orçamento (explicação).
Problema Erros 403 ao executar um job e recuperar um token de serviço de atestado. O job sempre retorna com o status "RECEIVED".
Erro
            {
                "job_status": "RECEIVED",
                "request_received_at": "{utc timestamp}",
                "request_updated_at": "{utc timestamp}",
                "job_request_id": "0001",
                "input_data_blob_prefix": "reports/",
                "input_data_bucket_name": "{bucket_name}",
                "output_data_blob_prefix": "summary/",
                "output_data_bucket_name": "{bucket_name}",
                "postback_url": "",
                "job_parameters": {
                    "output_domain_bucket_name": "{bucket_name}",
                    "output_domain_blob_prefix": "output_domain/",
                    "attribution_report_to": 
                }
            }
          
Resolução

Os trabalhos ficam presos no status RECEIVED e o erro 403 geralmente ocorre quando a conta de serviço ainda não foi integrada. Verifique se a conta de serviço que você está usando corresponde ao que você informou no pedido de integração. Se você não tiver concluído uma solicitação de integração, preencha o formulário de integração e os formulários de inscrição.

Depois de verificar o status de inscrição e integração, confira o que aconteceu com o job em execução.

Amazon Web Services

Quando isso acontece, é possível que o enclave da AWS não esteja em execução ou tenha falhado e, portanto, os jobs não estão sendo processados.

  1. Conecte-se ao Session Manager da instância do EC2.
  2. Siga esta documentação da AWS, que inclui as etapas a seguir para se conectar ao Session Manager.
  3. Acesse AWS Console Manager > EC2 > Instances.
  4. Selecione o ID da instância do serviço de agregação em execução.
  5. Selecione a guia "Gerenciador de sessão" > botão "Conectar". Isso vai conectar você à sua instância.
  6. Quando a instância do Enclave estiver em execução, execute no terminal:
    sudo nitro-cli describe-enclaves
    Se esse comando não mostrar os registros como esperado, execute o seguinte antes de tentar novamente:
    sudo nitro-cli run-enclave --cpu-count=2 --memory=7000 --eif-path=/opt/google/worker/enclave.eif
  7. Para verificar se o enclave da AWS travou, execute o comando: sudo journalctl -u aggregate-worker.service
  8. Você vai notar que os registros de saída estão sendo preenchidos, como:
    Starting aggregate-worker.service - Watcher script for nitro enclave.
    Os erros vão aparecer aqui se houver falhas etc.
Google Cloud Platform

O grupo de instâncias gerenciadas (MIG) pode não estar saudável. Se esta é a primeira vez que você está configurando ou se você destruiu e recriou o Terraform adtech_setup, confirme se a conta de serviço foi integrada. Se a conta de serviço não for integrada, os MIGs não serão saudáveis.

  1. No console do Cloud, acesse Compute Engine > Grupos de instâncias.
  2. Verifique as colunas de status (as marcas de seleção verdes estão íntegras)
  3. Clique em um dos grupos de instâncias e confira a guia "Erros" para saber mais sobre o problema. Clique no nome da instância para acessar informações no nível da VM.
  4. Você também pode usar o Terminal para interagir com o grupo de instâncias e receber as mesmas informações. Use o comando "list-errors":
    gcloud compute instance-groups managed list-errors --region=
    Confira um exemplo de saída.
                      INSTANCE_URL: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd
                      ACTION: VERIFYING
                      ERROR_CODE: WAITING_FOR_HEALTHY_TIMEOUT_EXCEEDED
                      ERROR_MESSAGE: Waiting for HEALTHY state timed out (autohealingPolicy.initialDelay=200 sec) for instance projects/aggservice-sandbox/zones/us-central1-c/instances/collector-operator-demo-env-67hd and health check projects/aggservice-sandbox/global/healthChecks/operator-demo-env-collector-auto-heal-hc.
                      TIMESTAMP: 
                      INSTANCE_TEMPLATE: https://www.googleapis.com/compute/v1/projects/aggservice-sandbox/global/instanceTemplates/operator-demo-env-collector
                      VERSION_NAME: primary
                    
Se você continuar tendo problemas, salve esta página e envie para nossa equipe. Siga para as próximas etapas.

O relatório de resumo está convertendo como esperado?

Uma situação pode ocorrer em que a chamada getJob é bem-sucedida, mas há um problema com o relatório resumido retornado pelo serviço de agregação. O relatório de resumo tem formato AVRO e precisa ser convertido para o formato JSON. Depois de ser convertido em um formato JSON, ele vai ficar parecido com o seguinte.

{
  "bucket": "\u0005Y",
  "metric": 26308
}

Se a conversão do AVRO estiver com algum problema, tente usar as ferramentas do AVRO e use o comando abaixo no relatório do AVRO. java -jar avro-tools-1.11.1.jar tojson [report_name].avro > [report_name].json Faça o download das versões estáveis aqui. Se precisar de mais ajuda, siga para as próximas etapas.

Próximas etapas

Verifique se outra pessoa encontrou o mesmo problema no Painel de status do Sandbox de privacidade ou no repositório público do GitHub.

Se você não encontrar uma solução para o problema do serviço de agregação, notifique a gente registrando um problema do GitHub ou enviando o formulário de suporte técnico.