אבחון משימות הצבירה

בטבלאות הבאות מפורטות מגוון בעיות וקודי סטטוס שגיאה, עם סיבות אפשריות לבעיה ופעולות שאפשר לבצע כדי לצמצם את ההשפעה על הפריסה. כדי לקרוא את מפרט השגיאות וההקלות המלא של שירות האגרגציה, אפשר לעיין בהנחיות הציבוריות העדכניות שלנו.

נושאי המדריך:

הרשאות ושגיאות הרשאה

בעיה בעיות בהרשאות כשמריצים את הפקודה terraform plan או terraform apply בפרויקט בענן הציבורי.
שגיאה לדוגמה Error: UnauthorizedOperation: You are not authorized to perform this operation.
רזולוציה

בודקים שהאימות ב-CLI (ממשק שורת הפקודה) של הענן הציבורי שבו אתם משתמשים תקין.

Amazon Web Services

AWS דורשת הרשאות משתמש כדי ליצור מכונות ושירותים אחרים שנדרשים לשירות האגרגציה. אחרי שתבצעו את הפעולה הזו, תוכלו לבצע את הפקודות terraform plan ו-apply ללא בעיות.

Google Cloud Platform

ב-Google Cloud, חשוב לזכור שתצטרכו להתחזות לחשבון שירות כדי לפרוס את המחצית השנייה של Terraform. אם דילוגתם על השלב הזה, יכול להיות שפקודת terraform apply תיכשל כי לחשבון השירות לפריסה יש את כל ההרשאות הנדרשות ליצירת משאבים. שלב 4 בקטע 'הגדרת סביבת הפריסה' במסמכי העזרה של GitHub.

שגיאות במכסת הפרטיות

שגיאה PRIVACY_BUDGET_ERROR
סיבה המשמעות היא שהשירות לא הצליח לעבד את הדוחות בגלל שגיאה בשירות תקציב הפרטיות.
המחאה אחרי שתנסו שוב את המשימה כדי לראות אם השגיאה הייתה זמנית, תוכלו לפנות אלינו באמצעות טופס התמיכה הטכנית.
שגיאה PRIVACY_BUDGET_AUTHORIZATION_ERROR
סיבה יכול להיות שאתם משתמשים במקור דיווח שונה מהמקור שסיפקתם במהלך תהליך ההצטרפות.
המחאה

חשוב לוודא שהאתר ששולחים בשדה attribution_report_to בבקשה createJob הוא אותו אתר שנשלח במהלך תהליך ההצטרפות.

האתר צריך להיות זהה לאתר שצורף או להיות תת-דומיין שלו. חשוב לזכור שההצטרפות ל-Aggregation Service מתבצעת בדומיין ברמה העליונה, וכל תת-הדומיינים יכולים להשתמש ב-Aggregation Service אחרי שהדומיין ברמה העליונה צורף.

שגיאה 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 API, ‏ 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], או אם פרמטרי המשימה נכשלו באימות.
המחאה באיזה ערך epsilon נעשה שימוש? אילו פרמטרים של משימה שימשו בבקשה createJob, והאם הם תואמים לסביבה שלכם? האם הפורמט שלהם תקין? מבצעים את התיקונים הנדרשים ומנסים שוב את המשימה.
שגיאה INTERNAL_ERROR
נקודת קצה getJob
סיבה יכול להיות שמדובר בבעיית פורמט שגורמת לעיבוד כושל של הדומיין או הדוחות של הפלט. יכול להיות גם שמדובר בבעיה בפריסה של Aggregation Service.
המחאה מוודאים שהמיקום של דומיין הפלט הוא נתיב חוקי. מנסים שוב להריץ את המשימה. אם השגיאה נמשכת, צריך לבקש את הקובץ 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 Web Services

במקרה כזה, יכול להיות שהאנקלאב של AWS לא פועל או קרס, ולכן העבודות לא נאספות.

  1. מתחברים ל-Session Manager של מכונה של EC2.
  2. פועלים לפי מסמכי התיעוד של AWS, שכוללים את השלבים הבאים להתחברות ל-Session Manager.
  3. עוברים אל AWS Console Manager‏ > EC2‏ > Instances.
  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 ויצרתם אותו מחדש, עליכם לוודא שחשבון השירות שלכם צורף. אם חשבון השירות לא צורף, ה-MIGs לא יהיו תקינים.

  1. במסוף Cloud, עוברים אל Compute Engine‏ > Instance groups
  2. בודקים את עמודות הסטטוס (סימני אישור ירוקים הם תקינים)
  3. לוחצים על אחת מקבוצות המכונות ומעיינים בכרטיסייה 'שגיאות' כדי לקבל מידע נוסף על הבעיה. לוחצים על שם המכונה כדי לגשת למידע ברמת המכונה הווירטואלית.
  4. אפשר גם להשתמש ב-Terminal כדי לקיים אינטראקציה עם קבוצת המכונות ולקבל את אותו מידע. נסו את הפקודה 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 או שליחת טופס התמיכה הטכנית.