Zdiagnozuj środowisko (nowe lub zmodernizowane)

Podczas pracy z usługą agregacji może wystąpić wiele problemów, w tym związanych z formatowaniem raportów, problemami z domeną wyjściową i problemami z koordynatorem. Aby dokładnie zdiagnozować problem, musisz znać źródło błędu i zawierające się w nim metadane.

Tematy przewodnika:

Weryfikowanie konfiguracji interfejsu API pomiarów klienta

Po zweryfikowaniu, czy serwer źródłowy jest prawidłowo zarejestrowany, wykonaj te czynności:

  1. Sprawdź, jak uruchamiasz zgłoszenia. Sprawdź, czy otrzymujesz raport w odpowiednim formacie, w zależności od tego, którego interfejsu API używasz:

    • Attribution Reporting API
    • Interfejs Private Aggregation API
      • Raportowanie w interfejsie Private Aggregation API można przeprowadzać za pomocą funkcji contributeToHistogram. Sprawdź, czy przekazujesz klucz i wartość puli. Klucz zasobnika powinien mieć format BigInt. (więcej informacji znajdziesz w dokumentacji Private Aggregation API)
  2. Jeśli uruchamiasz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Chrome dla programistów na karcie „Konsola” i „Sieć” występują błędy.

Jeśli potrzebujesz dodatkowej pomocy w rozwiązywaniu problemów z tymi interfejsami API klienta, zapoznaj się z naszą przewodnikiem po debugowaniu interfejsu Attribution Reporting APIPrivate Aggregation API + Shared Storage API.

Rozwiązywanie problemów z konfiguracją źródła danych raportowania

Na serwerze źródłowym raportów musisz zadeklarować odpowiednie punkty końcowe .well-known, do których będą wysyłane raporty podlegające agregacji. Sprawdź, czy wdrożony serwer źródłowy raportów został prawidłowo zarejestrowany i zarejestrowany.

Czy źródło raportów otrzymuje zgłoszenia?

Sprawdź, czy wdrożony serwer źródłowy raportowania został prawidłowo zarejestrowany i zarejestrowany. Na tym serwerze masz zadeklarowane odpowiednie punkty końcowe .well-known, do których będą wysyłane raporty podlegające agregacji.

Pomiarowy interfejs API po stronie klienta Punkt końcowy z możliwością agregacji dopasowania
Raportowanie atrybucji 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

Po sprawdzeniu, czy serwer źródłowy jest prawidłowo zarejestrowany, wykonaj te czynności:

  1. Sprawdź, jak uruchamiasz zgłoszenia. Sprawdź, czy otrzymujesz raport w odpowiednim formacie, w zależności od tego, którego interfejsu API używasz:

  2. Jeśli uruchamiasz raporty zgodnie z zaleceniami, ale problem nadal występuje, sprawdź, czy w konsoli Chrome dla deweloperów na karcie „Konsola” i „Sieć” występują błędy.

Jeśli potrzebujesz dodatkowej pomocy w rozwiązywaniu problemów z tymi interfejsami API klienta , zapoznaj się z wskazówkami dotyczącymi debugowania interfejsu Attribution Reporting APIinterfejsu Private Aggregation API + Shared Storage API.

Rozwiązywanie problemów z raportami zbiorczymi

Raporty zbiorcze są generowane przez interfejsy API pomiaru po stronie klienta i wysyłane do źródła raportowania. Te raporty powinny być konwertowane na format AVRO przez punkt końcowy raportowania. Jeśli wystąpią problemy z tą konwersją lub jeśli same raporty są niekompletne, w usłudze agregacji mogą wystąpić błędy.

Czy raporty podlegające agregacji są prawidłowo konwertowane?

Sprawdź, czy punkt końcowy raportowania (.well-known/…) prawidłowo konwertuje dany agregowalny raport w formacie JSON na AVRO.

Błędy interfejsu API, które mogą wystąpić z powodu tego problemu:

Błąd DECRYPTION_ERROR
Przykład
                "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": []
                    }
                }
            
Czek Może to być spowodowane błędami odszyfrowywania, które mogą być spowodowane nieprawidłowym generowaniem raportów AVRO, niezależnie od tego, czy są to agregowane raporty AVRO, czy raporty AVRO domeny wyjściowej. Czy generowane są prawidłowo agregowane raporty AVRO? Dane będą musiały zostać zdekodowane z formatu Base64 i przekształcone w tablicę bajtów. Upewnij się, że raport jest w formacie avro. Sprawdź też, czy domena wyjściowa AVRO jest prawidłowa. Zbiory są konwertowane na format ucieczki w formacie szesnastkowym Unicode, a potem na tablicę bajtów. Jeśli widzisz więcej niż 1 liczbę błędów, więcej informacji o błędach znajdziesz na stronie usługi agregacji w GitHubu.
Błąd DECRYPTION_KEY_NOT_FOUND
Przykład
                "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": []
                    }
                }
            
Czek Attribution Reporting API.

W przypadku interfejsu Attribution Reporting API błąd ten może być spowodowany problemem z rejestracją reguły. Sprawdź, czy zarejestrowały one swój element wyzwalający w prawidłowej chmurze za pomocą pola aggregation_coordinator_origin (instrukcje tutaj). Możesz też dostarczać zaszyfrowane przez AWS raporty do wdrożenia usługi agregacji w Google Cloud lub zaszyfrowane przez Google Cloud raporty do wdrożenia AWS. Poproś ich o sprawdzenie, który punkt końcowy klucza publicznego został użyty do zaszyfrowania raportów podlegających agregacji. W przypadku Google Cloud pole „aggregation_coordinator_origin” w raporcie możliwym do zsumowania powinno mieć wartość https://publickeyservice.msmt.gcp.privacysandboxservices.com. W przypadku AWS będzie to https://publickeyservice.msmt.aws.privacysandboxservices.com.

Private Aggregation API

W przypadku interfejsu Private Aggregation API musisz zdefiniować parametr `aggregationCoordinatorOrigin`, korzystając z przykładu w sekcji Wybór koordynatora agregacji w opisie interfejsu Private Aggregation API. Jako aggregationCoordinatorOrigin wpisz https://publickeyservice.msmt.gcp.privacysandboxservices.com.

Na przykład:

                sharedStorage.run('someOperation', {'privateAggregationConfig':
                {'aggregationCoordinatorOrigin': ' https://publickeyservice.msmt.gcp.privacysandboxservices.com'}});

            
Błąd DECRYPTION_KEY_FETCH_ERROR
Przykład
                "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."
                                }
                            ]
                        }
                }
            
Czek W przypadku problemów z niezatwierdzonym binarnym lub trybem debugowania rozwiązaniem jest użycie odpowiedniego binarnego. Aby użyć gotowego AMI lub samodzielnie skompilować AMI, wykonaj podane tutaj instrukcje.

Aby przejść weryfikację:

  1. Za pomocą narzędzia aggregatable_report_converter możesz przekształcić zebrane z punktu końcowego .well-known raporty, które można agregować, w format AVRO, i utworzyć klucze domeny wyjściowej. (Uwaga: pliki wyjściowe domeny powinny być 16-bajtowym ciągiem bajtów w systemie big-endian).

  2. Wykonaj czynności w laboratorium kodu dla swojego dostawcy chmury publicznej, aby zebrać raporty debugowania i uruchomić zadanie usługi do agregacji za pomocą kluczy domeny wyjściowej: a. Google Cloud: wykonaj czynności opisane w krokach 3.1.2–3.2.3 Codelab Google Cloud dotyczącego usługi agregacji. Amazon Web Services: wykonaj czynności opisane w krokach 4.2–5.3 Codelab usługi agregacji AWS.

Jeśli zwróci odpowiedź SUCCESS, oznacza to, że konwersja działa prawidłowo.

Czy raporty podlegające agregacji są nienaruszone?

Sprawdź, czy raport zbiorczy, klucze domen wyjściowych i informacje udostępnione są nienaruszone. Aby uzyskać więcej informacji, zapoznaj się z przykładowymi kodami, które umożliwiają konwertowanie raportów podlegających agregacji i tworzenie plików domen.

Błędy interfejsu API, które mogą odpowiadać temu problemowi:

Błąd INPUT_DATA_READ_FAILED
Punkt końcowy createJob
Czek Czy pola input_data_bucket_name, input_data_blob_prefix, output_data_bucket_nameoutput_data_blob_prefix w prośbie createJob są prawidłowe? Czy w danej lokalizacji danych raportów wejściowych znajdują się raporty, które mają zostać przetworzone? Czy masz uprawnienia do odczytu z lokalizacji magazynu dla raportów i domeny wyjściowej?

Aby przejść weryfikację:

  1. Weryfikacja raportu zbiorczego:

    • Wygeneruj raporty zbiorcze i użyj narzędzia aggregatable_report_converter, aby przekonwertować domenę wyjściową na format AVRO.
    • Wykonaj żądanie createJob z tym raportem umożliwiającym agregację i z wynikiem w pliku domeny.
    • Jeśli zwróci wartość SUCCESS, oznacza to, że raport z możliwością agregacji jest nienaruszony. Jeśli zwróci on błąd, oznacza to, że wystąpił problem z raportami możliwymi do zsumowania lub z raportami i domenami.
    • W następnym kroku sprawdź plik domeny.
  2. Sprawdź plik domeny wyjściowej:

    • Wygeneruj plik domeny wyjściowej i użyj narzędzia aggregatable_report_converter do utworzenia raportu z możliwością agregacji.
    • Wykonaj żądanie createJob z tym raportem umożliwiającym agregację i z wynikiem w pliku domeny.
    • Jeśli zwraca wartość SUCCESS, oznacza to, że domena wyjściowa jest nienaruszona, a problem występuje w kodzie, który tworzy raport do zagregowania.
    • Aby sprawdzić shared_info, przejdź do następnego kroku.
  3. Sprawdź udostępnione informacje:

    • Upewnij się, że masz włączone raporty debugowania. W raportach z włączonym debugowaniem będzie dostępne pole debug_cleartext_payload.
    • Utwórz raport debugowania na potrzeby lokalnego narzędzia do testowania i użyj jako ładunku danych debug_cleartext_payload.
    • Uruchom narzędzie do testowania lokalnego z plikiem domeny. Jeśli jest to plik SUCCESS, oznacza to, że plik shared_info został zmodyfikowany.

Jeśli podejrzewasz, że wystąpiły dalsze błędy lub próba manipulacji, pobierz raport zbiorczy w formacie JSON, klucz domeny, wygenerowany zagregowany raport AVRO oraz domenę wyjściową, a potem wykonaj kolejne czynności.

Sprawdzanie nowej wersji wdrożenia

Sprawdź, czy Twoja wersja usługi agregacji jest nadal obsługiwana. Po ustaleniu wersji, której używasz, sprawdź listę wersji usługi Aggregation i upewnij się, że w Twojej wersji nie ma ostrzeżenia o zakończeniu obsługi:This release has reached its end of support on { date }. Poniższe instrukcje dotyczące określania wersji, która została wdrożona, dotyczą obsługiwanych publicznych chmur.

czynności w Google Cloud,

  1. Otwórz Compute Engine > Instancje maszyn wirtualnych.
  2. Kliknij instancję maszyny wirtualnej o nazwie zawierającej -worker-.
  3. Znajdź sekcję Custom Metadata, a potem klucz tee-image-reference.
  4. Wartość parametru tee-image-reference będzie zawierać numer wersji. Na przykład numer wersji tej ścieżki to v2.9.1. Są to wstępnie utworzone obrazy, które znajdują się w Artifact Registry w projekcie Google Cloud.
    • Uwaga: ta opcja jest istotna, jeśli używasz gotowych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu. (na przykład us.docker.pkg.dev/<gcp_project_name>/artifacts:aggregation-service- container-artifacts-worker_mp_go_prod:2.9.1)

czynności dotyczące Amazon Web Services,

  1. W konsoli Amazon Web Services otwórz Instancje EC2.
  2. Kliknij instancję o nazwie aggregation-service-operator-dev-env.
  3. Na stronie instancji znajdź Szczegóły > AMI (obraz Amazon Machine Image).
  4. W ścieżce obrazu powinna być uwzględniona nazwa wersji. Na przykład numer wersji tej ścieżki to v2.9.1.
    • Uwaga: ta opcja jest istotna, jeśli używasz wstępnie utworzonych komponentów. Jeśli nie, nazwa powinna być zgodna z nazwą i tagami, które zostały dodane przez Ciebie do obrazu. (na przykład aggregation-service-enclave_2.9.1--2024-10-03T01-24-25Z)

Następne kroki

Jeśli nie widzisz rozwiązania problemu z usługą agregacji, poinformuj nas o tym, przesyłając problem do GitHuba lub wypełniając formularz pomocy technicznej.