يمكن أن تؤدي عوامل متعدّدة إلى حدوث مشاكل أثناء استخدام "خدمة التجميع"، بما في ذلك تنسيق التقارير ومشاكل نطاق الإخراج ومشاكل المنسّق. من المهم فهم مصدر الخطأ وأي بيانات وصفية يتضمّنها لتشخيص المشكلة بدقة.
مواضيع الدليل:
- التحقّق من إعداد واجهة برمجة التطبيقات لقياس أداء العميل
- تحديد المشاكل في إعداد مصدر التقارير وحلّها
- تحديد المشاكل في التقارير المجمّعة وحلّها
- فحص إصدار النشر
تأكيد إعداد واجهة برمجة التطبيقات لقياس أداء العميل
بعد التأكّد من تسجيل خادم المصدر بشكل صحيح، أكمِل الخطوات التالية:
تحقَّق من طريقة إرسال التقارير. تأكَّد من أنّك تتلقّى تنسيق التقرير الصحيح وفقًا لواجهة برمجة التطبيقات المستخدَمة:
- Attribution Reporting API
- بالنسبة إلى Attribution Reporting API، تأكَّد من أنّك سجّلت المصدر بنجاح (الحدث والملخّص). لتنفيذ عملية تسجيل المشغِّل (الحدث والملخّص)، تأكَّد من صحة ملف JSON الذي تم تمريره إلى
Attribution-Reporting-Register-Triggerباستخدام أداة التحقّق من صحة العنوان. (مزيد من المعلومات عن التقارير الموجزة في Attribution Reporting API)
- بالنسبة إلى Attribution Reporting API، تأكَّد من أنّك سجّلت المصدر بنجاح (الحدث والملخّص). لتنفيذ عملية تسجيل المشغِّل (الحدث والملخّص)، تأكَّد من صحة ملف JSON الذي تم تمريره إلى
- Private Aggregation API
- يمكن إكمال عملية إعداد التقارير في Private Aggregation API باستخدام الدالة
contributeToHistogram. تأكَّد من إدخال مفتاح المجموعة وقيمتها. يجب أن يكون مفتاح الحزمة بالتنسيقBigInt. (مزيد من المعلومات عن Private Aggregation API)
- يمكن إكمال عملية إعداد التقارير في Private Aggregation API باستخدام الدالة
- Attribution Reporting API
إذا كنت تُنشئ التقارير على النحو الموصى به، ولكنّ المشكلة لا تزال قائمة، تحقَّق ممّا إذا كانت هناك أخطاء في "وحدة تحكّم مطوّر البرامج في Chrome" ضمن كلّ من علامة التبويب "وحدة التحكّم" و"الشبكة".
إذا كنت بحاجة إلى مزيد من المساعدة في تحديد المشاكل وحلّها في واجهات برمجة التطبيقات الخاصة بالعملاء، يمكنك الانتقال إلى إرشادات تصحيح الأخطاء في Attribution Reporting API وPrivate Aggregation API + Shared Storage.
تحديد المشاكل وحلّها في إعداد مصدر التقارير
خادم مصدر إعداد التقارير هو المكان الذي حدّدت فيه نقاط نهاية .well-known الصحيحة التي سيتم إرسال التقارير القابلة للتجميع إليها. تأكَّد من أنّه تم تسجيل خادم المصدر الذي تم نشره بشكل صحيح.
هل يتلقّى مصدر التقارير التقارير؟
تأكَّد من أنّ خادم المصدر الخاص بإعداد التقارير الذي تم نشره قد تم تسجيله بشكل صحيح. هذا الخادم هو المكان الذي حدّدت فيه نقاط نهاية .well-known الصحيحة والمناسبة التي سيتم إرسال التقارير القابلة للتجميع إليها.
| واجهة برمجة تطبيقات لقياس البيانات من جهة العميل | نقطة النهاية المطابقة القابلة للتجميع |
|---|---|
| Attribution Reporting | POST /.well-known/attribution-reporting/report-aggregate-attribution |
| Private Aggregation + Shared Storage (مجموعة) | POST /.well-known/private-aggregation/report-shared-storage |
| Private Aggregation + Protected Audience (مجموعة) | POST /.well-known/private-aggregation/report-protected-audience |
بعد التأكّد من تسجيل خادم المصدر بشكل صحيح، أكمل الخطوات التالية:
تحقَّق من طريقة إرسال التقارير. تأكَّد من أنّك تتلقّى تنسيق التقرير الصحيح وفقًا لواجهة برمجة التطبيقات المستخدَمة:
إذا كنت تُنشئ التقارير على النحو الموصى به ولكنّك لا تزال تواجه المشكلة، تحقّق ممّا إذا كانت هناك أخطاء في "وحدة تحكّم أدوات مطوّري البرامج في Chrome" ضمن كلّ من علامة التبويب "وحدة التحكّم" وعلامة التبويب "الشبكة".
إذا كنت بحاجة إلى مزيد من الدعم لتحديد المشاكل وحلّها في واجهات برمجة التطبيقات الخاصة بالعميل، تابِع إرشادات تصحيح الأخطاء في Attribution Reporting API وPrivate Aggregation API + Shared Storage.
تحديد المشاكل في التقارير المجمّعة وحلّها
يتم إنشاء التقارير المجمّعة من خلال واجهات برمجة التطبيقات لقياس الأداء من جهة العميل، ويتم إرسالها إلى مصدر إعداد التقارير. يجب أن يتم تحويل هذه التقارير إلى تنسيق AVRO من خلال نقطة نهاية إعداد التقارير. إذا كانت هناك مشاكل في هذه الإحالة الناجحة، أو إذا كانت التقارير نفسها غير سليمة، قد تظهر لك أخطاء في "خدمة التجميع".
هل يتم تحويل تقاريرك القابلة للتجميع بشكلٍ صحيح؟
تأكَّد من أنّ نقطة نهاية إعداد التقارير (.well-known/…) تحوّل تقرير JSON القابل للتجميع المحدّد إلى AVRO بشكل صحيح.
في ما يلي أخطاء واجهة برمجة التطبيقات التي قد تظهر بسبب هذه المشكلة:
| خطأ | DECRYPTION_ERROR |
|---|---|
| مثال |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [
{
"category": "DECRYPTION_ERROR",
"count": 1,
"description": "Unable to decrypt the report. This may be caused by: tampered aggregatable report shared info, corrupt encrypted report, or other such issues."
},
{
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}
],
"error_messages": []
}
}
|
| شيك |
يمكن أن يحدث ذلك بسبب أخطاء في فك التشفير، والتي يمكن أن تحدث بسبب عدم إنشاء تقارير AVRO بشكل صحيح، سواء كانت تقارير AVRO القابلة للتجميع أو تقارير AVRO الخاصة بنطاق الإخراج. هل يتم إنشاء تقارير AVRO القابلة للتجميع بشكل صحيح؟ يجب فك ترميز الحمولة باستخدام base64 وتحويلها إلى مصفوفة بايت. تأكَّد من أنّ التقرير بتنسيق avro. بالإضافة إلى ذلك، تحقَّق مما إذا كان نطاق الإخراج AVRO صحيحًا. يتم تحويل الحِزم إلى تنسيق سداسي عشري لترميز Unicode مع إلغاء الأحرف الخاصة، ثم يتم تحويلها إلى صفيف بايت.
إذا ظهر لك أكثر من عدد خطأ واحد، يمكنك الاطّلاع على مزيد من المعلومات حول الأخطاء في صفحة GitHub الخاصة بخدمة التجميع.
|
| خطأ | DECRYPTION_KEY_NOT_FOUND |
|---|---|
| مثال |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [{
"category": "DECRYPTION_KEY_NOT_FOUND",
"count": 1,
"description": "Could not find decryption key on private key endpoint."
}, {
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}],
"error_messages": []
}
}
|
| شيك |
Attribution Reporting API
بالنسبة إلى Attribution Reporting API، قد يكون سبب هذا الخطأ مشكلة في تسجيل مشغّل. تأكَّد من أنّ المعلِن قد سجّل مشغّله في السحابة الإلكترونية الصحيحة باستخدام حقل aggregation_coordinator_origin (التعليمات هنا). يمكنك أيضًا تقديم تقارير مشفّرة باستخدام AWS إلى عملية نشر "خدمة التجميع" على Google Cloud، أو تقارير مشفّرة باستخدام Google Cloud إلى عملية النشر على AWS. اطلب منهم التحقّق من نقطة نهاية المفتاح العام التي تم استخدامها لتشفير التقارير القابلة للتجميع. بالنسبة إلى Google Cloud، يجب أن يكون الحقل `aggregation_coordinator_origin` في التقرير القابل للتجميع هو https://publickeyservice.msmt.gcp.privacysandboxservices.com. أما بالنسبة إلى AWS، فيجب أن يكون الحقل هو https://publickeyservice.msmt.aws.privacysandboxservices.com. Private Aggregation APIبالنسبة إلى Private Aggregation API، عليك تحديد `aggregationCoordinatorOrigin` باستخدام المثال الوارد في قسم "اختيار أداة التجميع" في مستند شرح Private Aggregation API. يُرجى تحديد https://publickeyservice.msmt.gcp.privacysandboxservices.com كـ على سبيل المثال:
sharedStorage.run('someOperation', {'privateAggregationConfig':
{'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});
|
| خطأ | DECRYPTION_KEY_FETCH_ERROR |
|---|---|
| مثال |
"result_info": {
"return_code": "REPORTS_WITH_ERRORS_EXCEEDED_THRESHOLD",
"return_message": "Aggregation job failed early because the number of reports excluded from aggregation exceeded threshold.",
"error_summary": {
"error_counts": [
{
"category": "DECRYPTION_KEY_FETCH_ERROR",
"count": 1,
"description": "Fetching the decryption key for report decryption failed. This can happen using an unapproved aggregation service binary, running the aggregation service binary in debug mode, key corruption or service availability issues."
},
{
"category": "NUM_REPORTS_WITH_ERRORS",
"count": 1,
"description": "Total number of reports that had an error. These reports were not considered in aggregation. See additional error messages for details on specific reasons."
}
]
}
}
|
| شيك | في حال حدوث مشاكل في الوضع الثنائي أو وضع تصحيح الأخطاء غير الموافق عليهما، سيؤدي استخدام الوضع الثنائي الصحيح إلى حلّ المشكلة. اتّبِع التعليمات هنا لاستخدام صورة AMI مُنشأة مسبقًا أو إنشاء صورة AMI بنفسك. |
أكمِل الخطوات التالية لإثبات ملكية حسابك:
يمكنك استخدام أداة
aggregatable_report_converterلتحويل التقارير القابلة للتجميع التي جمعتها من نقطة النهاية المعروفة إلى AVRO، وإنشاء مفاتيح نطاق الإخراج. (ملاحظة: يجب أن تكون ملفات نطاق الإخراج سلسلة بايت ذات 16 بايت بنظام الترتيب الكبير).اتّبِع الخطوات الواردة في الدرس التطبيقي حول الترميز الخاص بمزوّد الخدمات السحابية العامة لجمع تقارير تصحيح الأخطاء وتشغيل مهمة في "خدمة التجميع" باستخدام مفاتيح نطاق الإخراج: أ. Google Cloud: اتّبِع الخطوات من 3.1.2 إلى 3.2.3 في برنامج Google Cloud التدريبي حول خدمة التجميع ب. Amazon Web Services: اتّبِع الخطوات من 4.2 إلى 5.3 في Aggregation Service AWS Codelab.
إذا ظهرت استجابة SUCCESS، يعني ذلك أنّ الإحالة الناجحة تعمل.
هل تقاريرك القابلة للتجميع سليمة؟
تأكَّد من أنّ تقريرك المجمّع ومفاتيح نطاق الإخراج والمعلومات المشترَكة سليمة. راجِع نماذج الرموز لتحويل التقارير القابلة للتجميع وإنشاء ملفات النطاقات إذا أردت الحصول على مزيد من المعلومات.
في ما يلي أخطاء واجهة برمجة التطبيقات التي قد تظهر لك والمرتبطة بهذه المشكلة:
| خطأ | INPUT_DATA_READ_FAILED |
|---|---|
| نقطة نهاية | createJob |
| شيك |
هل الحقول input_data_bucket_name وinput_data_blob_prefix وoutput_data_bucket_name وoutput_data_blob_prefix في طلب createJob صحيحة؟ هل يتضمّن موقع بيانات تقرير الإدخال التقارير المطلوب معالجتها؟ هل لديك إذن بالقراءة من موقع التخزين الخاص بالتقارير ونطاق الإخراج؟
|
أكمِل الخطوات التالية لإثبات ملكية حسابك:
التحقّق من التقرير المجمّع:
- أنشئ تقارير مجمّعة واستخدِم أداة
aggregatable_report_converterلتحويل نطاق الإخراج إلى تنسيقAVRO. - نفِّذ طلب
createJobباستخدام هذا التقرير القابل للتجميع وملف النطاق الناتج. - إذا عرضت هذه السمة القيمة
SUCCESS، يعني ذلك أنّ التقرير القابل للتجميع سليم. إذا ظهر خطأ، يعني ذلك أنّ هناك مشكلة في التقرير القابل للتجميع أو في كلّ من التقرير والنطاق. - انتقِل إلى التحقّق من ملف النطاق في الخطوة التالية.
- أنشئ تقارير مجمّعة واستخدِم أداة
تحقَّق من ملف نطاق الإخراج:
- أنشئ ملف نطاق الإخراج واستخدِم الأداة
aggregatable_report_converterلإنشاء التقرير القابل للتجميع. - نفِّذ طلب
createJobباستخدام هذا التقرير القابل للتجميع وملف النطاق الناتج. - إذا تم عرض
SUCCESS، يعني ذلك أنّ نطاق الإخراج سليم وأنّ هناك مشكلة في الرمز البرمجي لإنشاء التقرير القابل للتجميع. - انتقِل إلى الخطوة التالية للاطّلاع على
shared_info.
- أنشئ ملف نطاق الإخراج واستخدِم الأداة
تأكيد صحة المعلومات التي تمت مشاركتها:
- تأكَّد من تفعيل تقارير تصحيح الأخطاء. ستتضمّن التقارير التي تم تفعيل تصحيح الأخطاء فيها الحقل
debug_cleartext_payload. - أنشئ تقرير تصحيح أخطاء لاستخدامه مع أداة الاختبار المحلية واستخدِم
debug_cleartext_payloadكحمولة. - شغِّل أداة الاختبار المحلية باستخدام ملف نطاقك. إذا كان هذا الرمز هو
SUCCESS، يعني ذلك أنّه تم التلاعب بملفshared_info.
- تأكَّد من تفعيل تقارير تصحيح الأخطاء. ستتضمّن التقارير التي تم تفعيل تصحيح الأخطاء فيها الحقل
إذا كنت تشك في حدوث أي أخطاء أو تلاعب إضافي، اجمع تقرير JSON المجمّع ومفتاح النطاق والتقرير المجمّع الذي تم إنشاؤه AVRO ونطاق الإخراج، ثم انتقِل إلى الخطوات التالية.
فحص إصدار عملية النشر الجديدة
تأكَّد من أنّ إصدار "خدمة التجميع" لا يزال متوافقًا. بعد تحديد الإصدار الذي تستخدمه، راجِع قائمة إصدارات "خدمة التجميع" وتأكَّد من أنّ إصدارك لا يتضمّن تحذيرًا بشأن انتهاء الدعم:
This release has reached its end of support on { date }. إنّ التعليمات التالية لتحديد الإصدار الذي تم نشره مخصّصة للسُحب العامة المتوافقة.
خطوات Google Cloud
- انتقِل إلى Compute Engine > مثيلات الأجهزة الافتراضية.
- انقر على مثيل الجهاز الافتراضي الذي يتضمّن
-worker-في اسمه. - ابحث عن القسم
Custom Metadataثمّ حدّد المفتاحtee-image-reference.- ملاحظة: يجب أن تتضمّن كل آلة افتراضية تم توفيرها في Google Cloud من خلال Terraform هذه البيانات الوصفية (
tee-image-referenceالبيانات الوصفية في وحدة العامل).
- ملاحظة: يجب أن تتضمّن كل آلة افتراضية تم توفيرها في Google Cloud من خلال Terraform هذه البيانات الوصفية (
- ستحتوي قيمة
tee-image-referenceعلى رقم الإصدار. على سبيل المثال، رقم إصدار المسار التالي هوv2.9.1. وهي عبارة عن صور معدّة مسبقًا ومخزّنة في Artifact Registry ضمن مشروع على Google Cloud.- ملاحظة: يكون هذا الإعداد مهمًا إذا كنت تستخدم مواد العرض الجاهزة، أما إذا لم تكن تستخدمها، فيجب أن يتطابق هذا الإعداد مع الاسم والعلامة اللذين أضفتهما شخصيًا إلى صورتك.
(مثال:
us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1)
- ملاحظة: يكون هذا الإعداد مهمًا إذا كنت تستخدم مواد العرض الجاهزة، أما إذا لم تكن تستخدمها، فيجب أن يتطابق هذا الإعداد مع الاسم والعلامة اللذين أضفتهما شخصيًا إلى صورتك.
(مثال:
خطوات Amazon Web Services
- انتقِل إلى مثيلات EC2 في وحدة تحكّم Amazon Web Services.
- انقر على المثيل الذي يحمل الاسم
aggregation-service-operator-dev-env. - في صفحة الجهاز الافتراضي، ابحث عن "التفاصيل" > AMI (صورة الجهاز الافتراضي من Amazon).
- يجب تضمين اسم الإصدار في مسار الصورة. على سبيل المثال، رقم إصدار المسار التالي هو
v2.9.1.- ملاحظة: يكون هذا الإعداد مهمًا إذا كنت تستخدم مواد العرض الجاهزة، أما إذا لم تكن تستخدمها، فيجب أن يتطابق هذا الإعداد مع الاسم والعلامة اللذين أضفتهما شخصيًا إلى صورتك.
(مثال:
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z)
- ملاحظة: يكون هذا الإعداد مهمًا إذا كنت تستخدم مواد العرض الجاهزة، أما إذا لم تكن تستخدمها، فيجب أن يتطابق هذا الإعداد مع الاسم والعلامة اللذين أضفتهما شخصيًا إلى صورتك.
(مثال:
الخطوات التالية
إذا لم تجد حلاً لمشكلة "خدمة التجميع"، يُرجى إعلامنا بذلك من خلال الإبلاغ عن مشكلة على GitHub أو إرسال نموذج الدعم الفني.