अपने एग्रीगेशन जॉब की गड़बड़ी का पता लगाना

यहां दी गई टेबल में, कई समस्याओं और गड़बड़ी की स्थिति के कोड के बारे में बताया गया है. साथ ही, गड़बड़ी की संभावित वजहों और डिप्लॉयमेंट को कम करने के लिए की जा सकने वाली कार्रवाइयों के बारे में भी बताया गया है. अगर आपको Aggregation Service के लिए, गड़बड़ी की पूरी जानकारी और उसे कम करने के तरीके देखने हैं, तो सार्वजनिक तौर पर उपलब्ध हमारी मौजूदा गाइड देखें.

गाइड के विषय:

अनुमतियां और पुष्टि से जुड़ी गड़बड़ियां

समस्या सार्वजनिक क्लाउड प्रोजेक्ट में terraform plan या terraform apply को लागू करते समय अनुमतियों से जुड़ी समस्याएं.
गड़बड़ी का उदाहरण Error: UnauthorizedOperation: You are not authorized to perform this operation.
रिज़ॉल्यूशन

पक्का करें कि आपने उस पब्लिक क्लाउड के सीएलआई (कमांड-लाइन इंटरफ़ेस) में सही तरीके से पुष्टि की हो जिसका इस्तेमाल किया जा रहा है.

Amazon Web Services

AWS को इंस्टेंस और एग्रीगेशन सेवा के लिए ज़रूरी अन्य सेवाएं बनाने के लिए, उपयोगकर्ता की अनुमतियों की ज़रूरत होती है. इसे लागू करने के बाद, आपको बिना किसी समस्या के टेराफ़ॉर्म प्लान और लागू करने की सुविधा मिलनी चाहिए.

Google Cloud Platform

Google Cloud में, ध्यान दें कि Terraform के दूसरे हिस्से को डिप्लॉय करने के लिए, आपको सेवा खाते के तौर पर काम करना होगा. अगर आपने यह चरण छोड़ दिया है, तो हो सकता है कि terraform apply कमांड काम न करे. ऐसा इसलिए, क्योंकि डिप्लॉयमेंट सेवा खाते के पास संसाधन बनाने की सभी ज़रूरी अनुमतियां होती हैं. GitHub पर मौजूद दस्तावेज़ में, "डिप्लॉयमेंट एनवायरमेंट सेट अप करना" में चौथा चरण देखें.

प्राइवसी बजट से जुड़ी गड़बड़ियां

गड़बड़ी PRIVACY_BUDGET_ERROR
वजह इससे पता चलता है कि निजता बजट सेवा में गड़बड़ी की वजह से, सेवा रिपोर्ट को प्रोसेस नहीं कर सकी.
चेक जॉब को फिर से शुरू करके देखें कि गड़बड़ी कुछ समय के लिए थी या नहीं. इसके बाद, तकनीकी सहायता फ़ॉर्म के ज़रिए हमसे संपर्क करें.
गड़बड़ी PRIVACY_BUDGET_AUTHORIZATION_ERROR
वजह ऐसा हो सकता है कि आपने रिपोर्टिंग के लिए, उस ओरिजिन का इस्तेमाल किया हो जो उन्होंने ऑनबोर्डिंग के दौरान दिया था.
चेक

पुष्टि करें कि createJob अनुरोध के attribution_report_to फ़ील्ड में सबमिट की गई साइट वही है जिसे शामिल होने के दौरान सबमिट किया गया था.

साइट, ऑनबोर्ड की गई साइट से मिलती-जुलती होनी चाहिए या उसका सबडोमेन होना चाहिए. ध्यान दें कि एग्रीगेशन सेवा में शामिल होने की प्रोसेस, टॉप लेवल डोमेन पर मैनेज की जाती है. टॉप लेवल डोमेन के शामिल होने के बाद, सभी सबडोमेन एग्रीगेशन सेवा का इस्तेमाल कर सकते हैं.

गड़बड़ी PRIVACY_BUDGET_AUTHENTICATION_ERROR
वजह ऐसा हो सकता है कि आपने पुराना या गलत एआरएन इस्तेमाल किया हो.
चेक Google Cloud Platform

देखें कि Aggregation Service को डिप्लॉय करने के लिए इस्तेमाल किया जा रहा सेवा खाता, उस सेवा खाते से मेल खाता हो जो ऑनबोर्डिंग के दौरान दिया गया था. यह बिलकुल मेल खाना चाहिए. सिर्फ़ एक ही प्रोजेक्ट से जुड़ा होना ज़रूरी नहीं है.

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
वजह इससे पता चलता है कि आपने डीबग मोड में जॉब चालू किया है. createJob अनुरोध में मौजूद job_parameters में debug_run: true शामिल है. debug_run फ़्लैग चालू होने पर, डीबग करने के लिए रिपोर्ट को कई बार चलाया जा सकता है. इस गड़बड़ी के मैसेज से आपको पता चलता है कि अगर इस जॉब को डीबग मोड में नहीं चलाया जाता, तो रिपोर्ट के निजता बजट के खत्म हो जाने की वजह से यह काम नहीं करता. यह गड़बड़ी, v2.10.0 या इससे पहले के वर्शन में ही मान्य होगी.
चेक createJob अनुरोध के मुख्य हिस्से में, job_parameters में debug_run शामिल होगा.
            {
              "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 गड़बड़ियां आ रही हैं. साथ ही, जॉब का स्टेटस हमेशा "RECEIVED" दिख रहा है.
गड़बड़ी
            {
                "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. 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

ऐसा हो सकता है कि मैनेज किया गया इंस्टेंस ग्रुप (एमआईजी) ठीक से काम न कर रहा हो. अगर पहली बार सेटअप किया जा रहा है या आपने 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 पर समस्या की शिकायत करें या तकनीकी सहायता फ़ॉर्म सबमिट करें.