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

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

गाइड के विषय:

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

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

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

Amazon Web Services

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

Google Cloud Platform

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

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

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

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

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

गड़बड़ी 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
वजह इससे पता चलता है कि जॉब को डीबग मोड में चलाया जा रहा है. 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] के अंदर न हो या जब जॉब पैरामीटर की पुष्टि न हो पाए.
चेक किस epsilon वैल्यू का इस्तेमाल किया गया था? 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": 
                }
            }
          
रिज़ॉल्यूशन

RECEIVED स्टेटस में फ़ंसे हुए नौकरियां और 403 गड़बड़ी आम तौर पर तब होती है, जब सेवा खाते को अब तक शामिल नहीं किया गया है. पुष्टि करें कि आपने जिस सेवा खाते का इस्तेमाल किया है वह उसी खाते से मेल खाता है जिसका इस्तेमाल आपने शामिल होने के अनुरोध में किया था. अगर आपने शामिल होने का अनुरोध पूरा नहीं किया है, तो कृपया शामिल होने का फ़ॉर्म और रजिस्टर करने के लिए फ़ॉर्म भरें.

रजिस्टर करने और शामिल होने की स्थिति की पुष्टि करने के बाद, देखें कि आपकी चल रही जॉब का क्या हुआ.

Amazon Web Services

ऐसा होने पर, हो सकता है कि AWS एन्क्लेव न चल रहा हो या क्रैश हो गया हो. इस वजह से, जॉब नहीं चुने जा रहे हैं.

  1. EC2 इंस्टेंस के सेशन मैनेजर से कनेक्ट करें.
  2. AWS दस्तावेज़ में दिया गया तरीका अपनाएं. इसमें, सेशन मैनेजर से कनेक्ट करने के लिए यह तरीका बताया गया है.
  3. AWS Console Manager > 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

ऐसा हो सकता है कि मैनेज किया जा रहा इंस्टेंस ग्रुप (एमआईजी) सही से काम न कर रहा हो. अगर पहली बार सेटअप किया जा रहा है या आपने adtech_setup Terraform को मिटाकर फिर से बनाया है, तो पक्का करें कि आपका सेवा खाता शामिल हो गया है. अगर सेवा खाता शामिल नहीं किया गया है, तो एमआईजी सही तरीके से काम नहीं करेंगे.

  1. Cloud Console में, Compute Engine > इंस्टेंस ग्रुप पर जाएं
  2. अपने स्टेटस कॉलम देखें (हरी चेक मार्क का मतलब है कि सब कुछ ठीक है)
  3. किसी इंस्टेंस ग्रुप पर क्लिक करें और समस्या के बारे में ज़्यादा जानने के लिए, गड़बड़ियां टैब देखें. VM-लेवल की जानकारी ऐक्सेस करने के लिए, इंस्टेंस के नाम पर क्लिक करें.
  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 पर समस्या की शिकायत दर्ज करके या तकनीकी सहायता फ़ॉर्म सबमिट करके हमें इसकी सूचना दें.