יש כמה גורמים שיכולים ליצור בעיות בעבודה עם שירות הצבירה, כולל בעיות בפורמט הדוחות, בעיות בדומיין הפלט ובעיות בתיאום. חשוב להבין את מקור השגיאה ואת המטא-נתונים שהיא מכילה כדי לאבחן את הבעיה בצורה מדויקת.
נושאים במדריך:
- אימות ההגדרה של API למדידת לקוחות
- פתרון בעיות בהגדרת מקור הדיווח
- פתרון בעיות בדוחות המצטברים
- בדיקת גרסת הפריסה
בדיקת תקינות ההגדרה של API למדידת לקוחות
אחרי שמוודאים ששרת המקור נרשם בצורה תקינה, מבצעים את השלבים הבאים:
בודקים איך מפעילים את הדוחות. מוודאים שאתם מקבלים את פורמט הדוח הנכון בהתאם ל-API שבו אתם משתמשים:
- Attribution Reporting API
- ב-Attribution Reporting API, מוודאים שרשמתם בהצלחה את המקור (אירוע וסיכום). כדי לבצע רישום של טריגר (Event ו-Summary), צריך לוודא שקובץ ה-JSON שמועבר אל
Attribution-Reporting-Register-Triggerתקין באמצעות כלי לאימות כותרות. (מידע נוסף על דוחות סיכום של Attribution Reporting API)
- ב-Attribution Reporting API, מוודאים שרשמתם בהצלחה את המקור (אירוע וסיכום). כדי לבצע רישום של טריגר (Event ו-Summary), צריך לוודא שקובץ ה-JSON שמועבר אל
- Private Aggregation API
- אפשר להשלים את הדיווח ב-Private Aggregation API באמצעות הפונקציה
contributeToHistogram. מוודאים שמעבירים את מפתח הדלי ואת הערך שלו. מפתח הדלי צריך להיות בפורמטBigInt. (מידע נוסף על Private Aggregation API)
- אפשר להשלים את הדיווח ב-Private Aggregation API באמצעות הפונקציה
- Attribution Reporting API
אם אתם מפעילים דוחות כמומלץ, אבל הבעיה עדיין מתרחשת, בדקו אם יש שגיאות ב-Chrome Developer Console בכרטיסיות Console ו-Network.
אם אתם צריכים תמיכה נוספת לפתרון בעיות ב-API של הלקוח, תוכלו לעיין בהנחיות שלנו לניפוי באגים ב-Attribution Reporting API וב-Private Aggregation API + Shared Storage.
פתרון בעיות בהגדרת מקור הדיווח
שרת המקור של הדוחות הוא המקום שבו הצהרתם על נקודות הקצה (endpoints) התואמות הנכונות של .well-known שאליהן יישלחו הדוחות המצטברים. מוודאים ששרת המקור של הדוחות שנפרס נרשם והצטרף בצורה תקינה.
האם המקור של הדוחות מקבל דוחות?
מוודאים ששרת המקור של הדוחות שנפרס רשום ומוגדר בצורה תקינה. בשרת הזה הצהרתם על נקודות הקצה (endpoint) התואמות הנכונות של .well-known, שאליהן יישלחו הדוחות שניתן לצבור.
| Client-side measurement API | נקודת קצה (endpoint) שניתן לצבור בה נתונים |
|---|---|
| Attribution Reporting | POST /.well-known/attribution-reporting/report-aggregate-attribution |
| Private Aggregation + Shared Storage (Combo) | POST /.well-known/private-aggregation/report-shared-storage |
| Private Aggregation + Protected Audience (Combo) | POST /.well-known/private-aggregation/report-protected-audience |
אחרי שמוודאים ששרת המקור רשום בצורה תקינה, מבצעים את השלבים הבאים:
בודקים איך מפעילים את הדוחות. מוודאים שאתם מקבלים את פורמט הדוח הנכון בהתאם ל-API שבו אתם משתמשים:
אם אתם מפעילים דוחות לפי ההמלצות אבל הבעיה עדיין מתרחשת, כדאי לבדוק אם יש שגיאות ב-Chrome Developer Console בכרטיסיות Console ו-Network.
אם אתם צריכים תמיכה נוספת בפתרון בעיות שקשורות לממשקי הלקוח האלה , תוכלו להמשיך לקרוא את ההנחיות לניפוי באגים ב-Attribution Reporting API וב-Private Aggregation API + Shared Storage.
פתרון בעיות בדוחות הצבירה
דוחות מצטברים נוצרים על ידי ממשקי API למדידה בצד הלקוח ונשלחים למקור הדיווח שלכם. נקודת הקצה של הדיווח צריכה להמיר את הדוחות האלה לפורמט AVRO. אם יש בעיות בהמרה הזו, או אם הדוחות עצמם לא תקינים, יכול להיות שיופיעו שגיאות בשירות הצבירה.
האם הדוחות שניתן לצבור מהם נתונים מציגים נתוני המרות בצורה נכונה?
מוודאים שנקודת הקצה של הדיווח (.well-known/…) ממירה נכון את דוח ה-JSON המצטבר שצוין ל-AVRO.
אלה שגיאות ה-API שיופיעו בגלל הבעיה הזו:
| שגיאה | 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 עם תווי escape, ואז מומרות למערך בייטים.
אם מופיעים יותר מנתון אחד של מספר השגיאות, אפשר לקבל מידע נוסף על השגיאות בדף של שירות הצבירה ב-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כדי להמיר את הדוחות המצטברים שאספתם מנקודת הקצה .well-known ל-AVRO, וליצור את מפתחות הדומיין של הפלט. (הערה: קבצי פלט של דומיין צריכים להיות מחרוזת בייט של 16 בייט בפורמט big-endian).פועלים לפי השלבים במעבדת הקוד של ספק הענן הציבורי כדי לאסוף את דוחות הניפוי באגים ולהריץ עבודה של Aggregation Service באמצעות מפתחות הדומיין של הפלט: א. Google Cloud: פועלים לפי שלבים 3.1.2 עד 3.2.3 של ה-Codelab בנושא שירות הצבירה של Google Cloud. ב. Amazon Web Services: פועלים לפי שלבים 4.2 עד 5.3 ב-Codelab של שירות הצבירה של AWS.
אם מוחזרת תשובה SUCCESS, סימן שההמרה פועלת.
האם הדוחות המצטברים שלכם תקינים?
מוודאים שהדוח המצטבר, מפתחות הדומיין של הפלט והמידע המשותף תקינים. בדוגמאות הקוד מוסבר איך להמיר דוחות שאפשר לצבור וליצור קבצי דומיין, אם אתם רוצים לקבל מידע נוסף.
אלה שגיאות ה-API שיוצגו לכם אם הבעיה הזו מתרחשת:
| שגיאה | 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בתור מטען הייעודי (payload). - מריצים את כלי הבדיקה המקומי עם קובץ הדומיין. אם מופיעה הודעת השגיאה
SUCCESS, המשמעות היא שהקובץshared_infoעבר שינוי לא מורשה.
- מוודאים שהפעלתם דוחות ניפוי באגים. בדוחות שבהם מופעל ניפוי באגים יהיה שדה
אם אתם חושדים בשגיאות נוספות או בזיוף, כדאי לאסוף את דוח הצבירה בפורמט JSON, את מפתח הדומיין, את דוח הצבירה שנוצר ואת דומיין הפלט, ולהמשיך אל השלבים הבאים.AVRO
בדיקה של גרסת הפריסה החדשה
מוודאים שעדיין יש תמיכה בגרסה של שירות הצבירה. אחרי שתקבעו באיזו גרסה אתם משתמשים, תוכלו לעיין ברשימת הגרסאות של Aggregation Service ולוודא שהגרסה שלכם לא כוללת את האזהרה על סיום התמיכה:This release has reached its end of support on { date }. ההוראות הבאות לקביעת הגרסה שפרסתם מיועדות לעננים ציבוריים נתמכים.
שלבים ל-Google Cloud
- מנווטים אל Compute Engine > VM instances.
- לוחצים על המכונה הווירטואלית עם
-worker-בשם. - מוצאים את הקטע
Custom Metadataואז מאתרים את המפתחtee-image-reference.- הערה: לכל מכונה וירטואלית שמוקצתת ב-Google Cloud על ידי Terraform צריכים להיות המטא-נתונים האלה (מטא-נתונים של
tee-image-referenceבמודול worker).
- הערה: לכל מכונה וירטואלית שמוקצתת ב-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 Instances במסוף Amazon Web Services.
- לוחצים על המופע עם השם
aggregation-service-operator-dev-env. - בדף של המופע, מחפשים את הקטע Details (פרטים) > AMI (Amazon Machine Image).
- נתיב התמונה צריך לכלול את שם הגרסה. לדוגמה, מספר הגרסה של הנתיב הבא הוא
v2.9.1.- הערה: המידע הזה רלוונטי אם אתם משתמשים בנכסים דיגיטליים מוכנים מראש. אם לא, הערך צריך להיות זהה למה שנתתם לתמונה כשם ותייגתם אותה.
(לדוגמה:
aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z)
- הערה: המידע הזה רלוונטי אם אתם משתמשים בנכסים דיגיטליים מוכנים מראש. אם לא, הערך צריך להיות זהה למה שנתתם לתמונה כשם ותייגתם אותה.
(לדוגמה:
השלבים הבאים
אם לא מצאתם פתרון לבעיה בשירות הצבירה, אתם יכולים להודיע לנו על כך על ידי שליחת פנייה ב-GitHub או מילוי טופס התמיכה הטכנית.