تشخيص مهام التجميع

توضّح الجداول التالية مجموعة كبيرة من المشاكل ورموز حالة الخطأ مع الأسباب المحتملة لحدوثها والإجراءات التي يمكنك اتّخاذها للحدّ من عملية النشر. إذا أردت الاطّلاع على مواصفات الأخطاء وإجراءات التخفيف الكاملة لخدمة "تجميع الإحصاءات"، يمكنك الاطّلاع على الإرشادات المتاحة للجميع حاليًا.

مواضيع الدليل:

أخطاء الأذونات والتفويض

المشكلة مشاكل الأذونات عند تنفيذ terraform plan أو terraform apply في مشروع السحابة الإلكترونية العامة
مثال على الخطأ Error: UnauthorizedOperation: You are not authorized to perform this operation.
الدقة

تأكَّد من إثبات هويتك بشكل صحيح في واجهة سطر الأوامر (CLI) للسحابة العامة التي تستخدمها.

Amazon Web Services

تتطلّب خدمة AWS أذونات المستخدمين لتتمكّن من إنشاء مثيلات وخدمات أخرى مطلوبة لخدمة Aggregation Service. بعد تطبيق ذلك، يجب أن تتمكّن من تنفيذ خطة Terraform وتطبيقها بدون أي مشاكل.

Google Cloud Platform

في Google Cloud، عليك التظاهر بأنّك حساب خدمة لنشر النصف الثاني من Terraform. قد يتعذّر تنفيذ الأمر terraform apply إذا تخطّيت هذه الخطوة لأنّ حساب خدمة النشر لديه جميع الأذونات اللازمة لإنشاء الموارد. اطّلِع على الخطوة 4 في "إعداد بيئة النشر" ضمن مستندات GitHub.

أخطاء ميزانية الخصوصية

خطأ PRIVACY_BUDGET_ERROR
السبب يشير ذلك إلى أنّ الخدمة لم تتمكّن من معالجة التقارير بسبب حدوث خطأ في خدمة ميزانية الخصوصية.
شيك بعد إعادة محاولة تنفيذ المهمة لمعرفة ما إذا كان الخطأ متقطعًا، يُرجى التواصل معنا من خلال نموذج الدعم الفني.
خطأ PRIVACY_BUDGET_AUTHORIZATION_ERROR
السبب قد تستخدم مصدر تقارير مختلفًا عن المصدر الذي قدّمته أثناء عملية الإعداد.
شيك

تأكَّد من أنّ الموقع الإلكتروني الذي ترسله في حقل attribution_report_to من طلب createJob هو نفسه الموقع الإلكتروني الذي تم إرساله أثناء عملية الإعداد.

يجب أن يتطابق الموقع الإلكتروني مع النطاق الذي تم إعداده أو أن يكون نطاقًا فرعيًا منه. يُرجى العِلم أنّه تتم معالجة عملية إعداد "خدمة التجميع" على مستوى النطاق الأعلى، وتكون جميع النطاقات الفرعية مؤهَّلة لاستخدام "خدمة التجميع" بعد إعداد النطاق الأعلى.

خطأ PRIVACY_BUDGET_AUTHENTICATION_ERROR
السبب قد تستخدم ARN قديمًا أو غير صحيح.
شيك Google Cloud Platform

تأكَّد من أنّ حساب الخدمة المستخدَم في عملية نشر "خدمة التجميع" يتطابق مع حساب الخدمة الذي تم تقديمه أثناء عملية الإعداد. يجب أن تتطابق تمامًا، وليس أن تنتمي إلى المشروع نفسه فقط.

Amazon Web Services

من المتوقّع أن تستخدم جهات التنسيق نفسها التي تم توفيرها لك من خلال البريد الإلكتروني. إذا كنت لا تزال تواجه مشاكل، يُرجى جمع ملف 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": 
            }
          

تحدث مشكلة استنفاد "ميزانية الخصوصية" عند محاولة تجميع تقرير سبق أن تم تضمين رقم التعريف المشترَك الخاص به في مجموعة ناجحة سابقًا. يحدث هذا الخطأ بسبب قاعدة"عدم التكرار" التي لا تسمح بظهور التقارير القابلة للتجميع إلا في دفعة واحدة، ولا يمكن أن تساهم إلا في تقرير موجز واحد.

سيتم تخصيص "رقم تعريف مشترك" لكل تقرير، وسيتألف من حقول واجهة برمجة التطبيقات 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، يمكنك تشغيل التقرير عدة مرات لأغراض تصحيح الأخطاء. تُعلمك رسالة الخطأ هذه بأنّ المهمة كانت ستفشل بسبب استنفاد حدّ الخصوصية للتقرير إذا لم يتم تنفيذها في وضع تصحيح الأخطاء. لن يكون هذا الخطأ صالحًا إلا في الإصدارات 2.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": 
                }
            }
          
الدقة

يحدث الخطأ 403 عادةً عندما لا يكون حساب الخدمة قد تم إعداده بعد.RECEIVED تأكَّد من أنّ حساب الخدمة الذي تستخدمه يطابق ما قدّمته في طلب الإعداد. إذا لم تكن قد أكملت طلبًا بشأن منح إمكانيّة الوصول، يُرجى ملء نموذج منح إمكانيّة الوصول ونماذج التسجيل.

بعد التحقّق من حالة التسجيل والإعداد، راجِع ما حدث لوظيفتك قيد التشغيل.

Amazon Web Services

عند حدوث ذلك، قد لا يكون نظام AWS Enclave قيد التشغيل أو قد يكون قد تعطل، وبالتالي لا يتم استلام المهام.

  1. اتّصِل بـ Session Manager على مثيل 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 Cloud Platform

قد لا تكون مجموعة المثيلات المُدارة (MIG) سليمة. إذا كانت هذه هي عملية الإعداد للمرة الأولى، أو إذا أوقفت adtech_setup Terraform وأعدت إنشاءها، تأكَّد من إعداد حساب الخدمة. إذا لم يتم إعداد حساب الخدمة، لن تكون مجموعات مثيلات الإدارة سليمة.

  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 يمكن تنزيل الإصدارات الثابتة من هنا. إذا كنت بحاجة إلى مزيد من المساعدة، انتقِل إلى الخطوات التالية.

الخطوات التالية

تحقَّق مما إذا واجه أي مستخدم آخر المشكلة نفسها على لوحة بيانات حالة "مبادرة حماية الخصوصية" أو على مستودع GitHub العام.

إذا لم تجد حلاً لمشكلتك في Aggregation Service، يُرجى إعلامنا بذلك من خلال الإبلاغ عن مشكلة على GitHub أو إرسال نموذج الدعم الفني.