Диагностика ваших заданий агрегирования

В следующих таблицах подробно описано множество проблем и кодов состояний ошибок с указанием возможных причин и действий, которые можно предпринять для смягчения последствий развертывания. Если вы хотите ознакомиться с полными спецификациями ошибок и способами их устранения для службы агрегации, ознакомьтесь с нашим текущим общедоступным руководством.

Темы руководства:

Разрешения и ошибки авторизации

Проблема Проблемы с разрешениями при выполнении terraform plan или terraform apply к вашему проекту общедоступного облака.
Пример ошибки Error: UnauthorizedOperation: You are not authorized to perform this operation.
Разрешение

Убедитесь, что вы правильно прошли аутентификацию в cli (интерфейсе командной строки) общедоступного облака, которое вы используете.

Веб-сервисы Amazon

AWS требует разрешений пользователя для создания экземпляров и других сервисов, необходимых для службы агрегации. После того, как вы примените это, вы сможете выполнить план терраформирования и применить его без каких-либо проблем.

Облачная платформа Google

Обратите внимание, что в Google Cloud вам придется выдать себя за учетную запись службы для развертывания второй половины Terraform. Если вы пропустили этот шаг, ваша команда применения terraform может завершиться неудачей, поскольку учетная запись службы развертывания имеет все необходимые разрешения для создания ресурсов. См . шаг 4 в разделе «Настройка среды развертывания» в документации GitHub.

Ошибки бюджета конфиденциальности

Ошибка PRIVACY_BUDGET_ERROR
Причина Это будет означать, что службе не удалось обработать отчеты из-за ошибки службы бюджета конфиденциальности.
Проверять После того как вы повторите задание, чтобы проверить, была ли ошибка периодической, обратитесь к нам через форму технической поддержки .
Ошибка PRIVACY_BUDGET_AUTHORIZATION_ERROR
Причина Возможно, вы используете другой источник отчетности, отличный от того, который был указан при регистрации.
Проверять

Убедитесь, что сайт, который вы отправляете в поле attribution_report_to запроса createJob , является тем же сайтом, который был отправлен во время регистрации.

Сайт должен совпадать с тем, что было подключено, или быть поддоменом. Обратите внимание, что подключение службы агрегации осуществляется в домене верхнего уровня, и все поддомены имеют право использовать службу агрегации после подключения домена верхнего уровня.

Ошибка PRIVACY_BUDGET_AUTHENTICATION_ERROR
Причина Возможно, вы используете устаревший или неправильный ARN.
Проверять Облачная платформа Google

Убедитесь, что учетная запись службы, используемая при развертывании службы агрегации, соответствует учетной записи службы, указанной во время регистрации. Он должен точно совпадать, а не просто принадлежать одному и тому же проекту.

Веб-сервисы Amazon

Предполагается, что вы пользуетесь услугами тех же координаторов, которые были вам предоставлены по электронной почте. Если у вас по-прежнему возникают проблемы, соберите файл auto.tfvars и информацию о происхождении отчета и свяжитесь с нами через форму технической поддержки .

Ошибка PRIVACY_BUDGET_EXHAUSTED
Причина Ошибка:
            "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": 
            }
          

Проблема исчерпания бюджета конфиденциальности возникает при попытке пакетной обработки отчета, общий идентификатор которого уже был включен в ранее успешный пакет. Эта ошибка возникает из-за правила «Нет дубликатов», согласно которому агрегированные отчеты могут появляться только в одном пакете и могут использоваться только в одном сводном отчете.

Каждому отчету будет назначен «общий идентификатор», который будет состоять из API shared_info , reporting_origin , destination_site , source_registration_time (усечено по дням), scheduled_report_time (усечено по часам) и version . Это будет означать, что несколько отчетов могут принадлежать одному и тому же «общему идентификатору», если они имеют одни и те же атрибуты shared_info .

Проверять

Мы рекомендуем вам попробовать поддержку «Бюджет конфиденциальности исчерпан», предоставляемый в ответ на задание, чтобы проверить и устранить вашу ошибку. В результате будет создан новый вспомогательный файл JSON, который предоставит информацию о том, какие отчеты способствовали возникновению ошибки.

Обратите внимание: если вы правильно формируете пакеты, вы можете иметь право на возмещение бюджета ( пояснение ). Предложите им прочитать пояснение и заполнить форму, но учтите, что их запрос необходимо будет утвердить, чтобы успешно восстановить бюджет и снова запустить задание.

Ошибка DEBUG_SUCCESS_WITH_PRIVACY_BUDGET_EXHAUSTED
Причина Это означает, что вы выполняете задание в режиме отладки. job_parameters в запросе createJob содержит debug_run: true . Если флаг debug_run включен, вы можете запускать отчет несколько раз в целях отладки. Это сообщение об ошибке информирует вас о том, что задание не удалось бы выполнить из-за исчерпания бюджета конфиденциальности отчета, если бы оно не запускалось в режиме отладки. Эта ошибка будет действительна только в версиях v2.10.0 или ниже.
Проверять Тело запроса createJob будет содержать debug_run в 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"
              }
            }
          

Ошибки выполнения задания

Ошибка INVALID_JOB
Конечная точка createJob
Причина Это может произойти, если предоставленный эпсилон конфиденциальности отладки выходит за пределы (0,64) или когда параметры задания не проходят проверку.
Проверять Какое значение эпсилона было использовано? Какие параметры задания использовались в запросе createJob и соответствуют ли они вашей среде? Правильно ли они отформатированы? Внесите необходимые исправления и повторите задание.
Ошибка INTERNAL_ERROR
Конечная точка getJob
Причина Это может быть проблема форматирования, которая приводит к сбою обработки выходного домена или отчетов. Также может возникнуть проблема с развертыванием службы агрегации.
Проверять Убедитесь, что местоположение выходного домена является допустимым путем. Повторите задание. Если ошибка не исчезнет, ​​запросите файл auto.tfvars и выходные данные плана Terraform, чтобы устранить неполадки при развертывании службы агрегации.
Ошибка RESULT_WRITE_ERROR
Конечная точка getJob
Причина Это может произойти, если запись в выходной каталог не удалась, либо временно, либо из-за отсутствия разрешения на запись в каталоге. Обратите внимание, что ошибки записи расходуют бюджет конфиденциальности, и задание невозможно повторить. Это может способствовать возникновению другой ошибки PRIVACY_BUDGET_EXHAUSTED .
Проверять Эта ошибка возникает при каждом задании или только время от времени? Если это происходит в каждом задании, убедитесь, что у вас включены разрешения на запись в выходной каталог. Если это периодический сбой, разрешения должны быть правильными. Это известная проблема: написание сводных отчетов может оказаться неудачным, но бюджет конфиденциальности все равно будет израсходован. В этом случае вы можете запросить возмещение бюджета ( объяснитель ).
Проблема Обнаружение ошибок 403 при запуске задания и получении токена службы аттестации, и задание всегда возвращается обратно со статусом «ПОЛУЧЕНО».
Ошибка
            {
                "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": 
                }
            }
          
Разрешение

Задания зависают в статусе RECEIVED , и ошибка 403 обычно возникает, когда учетная запись службы еще не подключена. Убедитесь, что используемая вами учетная запись службы соответствует той, которую вы указали в своем запросе на регистрацию. Если вы не заполнили запрос на регистрацию, заполните форму регистрации и формы регистрации.

После того как вы подтвердите свою регистрацию и статус адаптации , проверьте, что случилось с вашим текущим заданием.

Веб-сервисы Amazon

В этом случае возможно, что анклав AWS не работает или произошел сбой, и поэтому задания не выполняются.

  1. Подключитесь к диспетчеру сеансов экземпляра EC2.
  2. Следуйте этой документации AWS , которая включает следующие шаги для подключения к Session Manager.
  3. Перейдите в Диспетчер консоли AWS > EC2 > Экземпляры.
  4. Выберите идентификатор экземпляра работающей службы агрегации.
  5. Выберите вкладку «Менеджер сеансов» > кнопку «Подключиться». Это соединит вас с вашим экземпляром.
  6. После запуска экземпляра Enclave выполните в терминале:
    sudo nitro-cli describe-enclaves
    Если эта команда не отображает журналы должным образом, перед повторной попыткой выполните следующее:
    sudo nitro-cli run-enclave --cpu-count=2 --memory=7000 --eif-path=/opt/google/worker/enclave.eif
  7. Чтобы проверить, не произошел ли сбой в анклаве AWS, выполните команду: sudo journalctl -u aggregate-worker.service
  8. Вы должны увидеть файлы журналов вывода, например:
    Starting aggregate-worker.service - Watcher script for nitro enclave.
    Здесь должны быть видны ошибки, если есть какие-то сбои и т.п.
Облачная платформа Google

Возможно, группа управляемых экземпляров (MIG) неработоспособна. Если это первая настройка или вы уничтожили и заново создали adtech_setup Terraform, убедитесь, что ваша учетная запись службы подключена. Если учетная запись службы не подключена, MIG не будет работоспособным.

  1. Cloud Console, перейдите в раздел Compute Engine > Группы экземпляров.
  2. Проверьте столбцы статуса (зеленые галочки здоровы)
  3. Щелкните одну из групп экземпляров и перейдите на вкладку «Ошибки», чтобы узнать больше о проблеме. Щелкните имя экземпляра, чтобы получить доступ к информации на уровне виртуальной машины.
  4. Вы также можете использовать свой Терминал для взаимодействия с группой экземпляров и получения той же информации. Попробуйте команду list-errors:
    gcloud compute instance-groups managed list-errors --region=
    Ниже приведен пример вывода.
                      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
                    
Если вы продолжаете видеть проблемы, сохраните это и передайте нашей команде. Перейдите к следующим шагам.

Конвертируется ли ваш сводный отчет должным образом?

Может возникнуть ситуация, когда вызов getJob прошел успешно, но возникла проблема со сводным отчетом, возвращаемым службой агрегирования. Сводный отчет имеет формат AVRO, и его необходимо преобразовать в формат JSON . После преобразования в формат json он будет выглядеть примерно так.

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

Если при преобразовании AVRO возникают какие-либо проблемы, попробуйте использовать инструменты AVRO и используйте следующую команду в отчете AVRO. java -jar avro-tools-1.11.1.jar tojson [report_name].avro > [report_name].json Стабильные версии можно скачать здесь. Если вам нужна дополнительная помощь, перейдите к нашим следующим шагам.

Следующие шаги

Проверьте, не сталкивался ли кто-нибудь еще с такой же проблемой на панели мониторинга состояния Privacy Sandbox или в общедоступном репозитории GitHub .

Если вы не видите решения проблемы со службой агрегирования, сообщите нам об этом, оставив заявку на GitHub или отправив форму технической поддержки .