Pulpit nawigacyjny .NET.NET Aspire można skonfigurować do odbierania danych telemetrycznych wysyłanych z aplikacji przeglądarki. Ta funkcja jest przydatna do monitorowania wydajności po stronie klienta i interakcji użytkownika. Dane telemetryczne przeglądarki wymagają dodatkowej konfiguracji panelu kontrolnego oraz dodania SDK OTEL JavaScript do aplikacji przeglądarki.
W tym artykule omówiono sposób włączania telemetrii przeglądarki na pulpicie nawigacyjnym .NET.NET Aspire.
Konfiguracja pulpitu nawigacyjnego
Telemetria przeglądarki wymaga, aby pulpit nawigacyjny włączył następujące funkcje:
Punkt końcowy OTLP HTTP. Ten punkt końcowy jest używany przez pulpit nawigacyjny do odbierania danych telemetrycznych z aplikacji przeglądarki.
Współużytkowanie zasobów między źródłami (CORS). Mechanizm CORS umożliwia aplikacjom przeglądarki wykonywanie żądań do pulpitu nawigacyjnego.
Konfiguracja OTLP
Pulpit nawigacyjny .NET.NET Aspire odbiera dane telemetryczne za pośrednictwem punktów końcowych OTLP.
punkty końcowe HTTP OTLP i punkty końcowe OTLP gRPC są obsługiwane przez pulpit nawigacyjny. Aplikacje przeglądarki muszą używać protokołu HTTP OLTP do wysyłania danych telemetrycznych do pulpitu nawigacyjnego, ponieważ aplikacje przeglądarki nie obsługują funkcji gRPC.
Aby skonfigurować punkty końcowe gPRC lub HTTP, określ następujące zmienne środowiskowe:
DOTNET_DASHBOARD_OTLP_ENDPOINT_URL: Punkt końcowy gRPC, do którego pulpit nawigacyjny łączy się swoimi danymi.
DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL: punkt końcowy HTTP, z którym pulpit nawigacyjny łączy się ze swoimi danymi.
Konfiguracja punktu końcowego HTTP OTLP zależy od tego, czy pulpit nawigacyjny jest uruchamiany przez hosta aplikacji, czy jest uruchamiany autonomicznie.
Konfigurowanie protokołu HTTP OTLP przy użyciu hosta aplikacji
Jeśli pulpit nawigacyjny i aplikacja są uruchamiane przez hosta aplikacji, punkty końcowe OTLP pulpitu nawigacyjnego są konfigurowane w pliku launchSettings.json hosta aplikacji.
Plik z poprzednimi ustawieniami uruchamiania JSON konfiguruje wszystkie profile do uwzględnienia zmiennej środowiskowej DOTNET_DASHBOARD_OTLP_HTTP_ENDPOINT_URL.
Konfigurowanie protokołu HTTP OTLP z samodzielnym pulpitem nawigacyjnym
Jeśli pulpit nawigacyjny jest używany autonomicznie, bez pozostałej części .NET.NET Aspire, punkt końcowy HTTP OTLP jest włączony domyślnie na porcie 18890. Jednak port musi zostać zamapowany po uruchomieniu kontenera pulpitu nawigacyjnego:
Poprzednie polecenie uruchamia kontener dashboardu i przypisuje gRPC OTLP do portu 4317 oraz HTTP OTLP do portu 4318.
Konfiguracja mechanizmu CORS
Domyślnie aplikacje przeglądarki są ograniczone do wykonywania wywołań interfejsu API między domenami. Ma to wpływ na wysyłanie danych telemetrycznych do pulpitu nawigacyjnego, ponieważ pulpit nawigacyjny i aplikacja przeglądarki są zawsze w różnych domenach. Skonfigurowanie mechanizmu CORS na pulpicie nawigacyjnym .NET.NET Aspire spowoduje usunięcie ograniczenia.
Jeśli pulpit nawigacyjny i aplikacja są uruchamiane przez hosta aplikacji, nie jest wymagana żadna konfiguracja mechanizmu CORS.
.NET
.NET Aspire automatycznie konfiguruje pulpit nawigacyjny tak, aby zezwalał na wszystkie źródła zasobów.
Jeśli pulpit nawigacyjny jest używany autonomicznie, mechanizm CORS należy skonfigurować ręcznie. Domena używana do wyświetlania aplikacji przeglądarki musi być skonfigurowana jako dozwolone źródło, określając zmienną środowiskową DASHBOARD__OTLP__CORS__ALLOWEDORIGINS po uruchomieniu kontenera pulpitu nawigacyjnego:
Poprzednie polecenie uruchamia kontener pulpitu nawigacyjnego i konfiguruje https://localhost:8080 jako dozwolone źródło. Oznacza to, że aplikacja przeglądarki, która jest uzyskiwana przy użyciu https://localhost:8080 ma uprawnienia do wysyłania danych telemetrycznych pulpitu nawigacyjnego.
Wiele źródeł może być dozwolonych z wartością rozdzielaną przecinkami. Można również zezwolić na wszystkie źródła za pomocą symbolu wieloznacznego *. Na przykład DASHBOARD__OTLP__CORS__ALLOWEDORIGINS=*.
Punkty końcowe OTLP pulpitu nawigacyjnego można zabezpieczyć za pomocą uwierzytelniania klucza API. Gdy jest włączone, żądania HTTP OTLP do pulpitu nawigacyjnego muszą zawierać klucz interfejsu API jako nagłówek x-otlp-api-key. Domyślnie nowy klucz interfejsu API jest generowany przy każdym uruchomieniu pulpitu nawigacyjnego.
Uwierzytelnianie klucza interfejsu API jest automatycznie włączane po uruchomieniu pulpitu nawigacyjnego z hosta aplikacji. Uwierzytelnianie pulpitu nawigacyjnego można wyłączyć, ustawiając DOTNET_DASHBOARD_UNSECURED_ALLOW_ANONYMOUS na true w pliku launchSettings.json hosta aplikacji.
Punkty końcowe OTLP są domyślnie niezabezpieczone na autonomicznym pulpicie nawigacyjnym.
Konfiguracja aplikacji przeglądarki
Aplikacja przeglądarki używa zestawu SDK JavaScript OTEL do wysyłania danych telemetrycznych do pulpitu nawigacyjnego. Pomyślne wysłanie danych telemetrycznych do pulpitu nawigacyjnego wymaga poprawnego skonfigurowania zestawu SDK.
Eksporter OTLP
Eksporterzy OTLP muszą być dołączani do aplikacji przeglądarkowej i konfigurowani przy użyciu zestawu SDK. Na przykład eksportowanie śledzenia rozproszonego za pomocą OTLP używa pakietu @opentelemetry/exporter-trace-otlp-proto.
Po dodaniu funkcji OTLP do zestawu SDK należy określić opcje OTLP. Opcje OTLP obejmują:
url: adres, do którego są wysyłane żądania HTTP OTLP. Adres powinien być punktem końcowym konsoli HTTP OTLP oraz zawierać ścieżkę do interfejsu API HTTP OTLP. Na przykład https://localhost:4318/v1/traces dla eksportera trasowania OTLP. Jeśli aplikacja przeglądarki jest uruchamiana przez hosta aplikacji, punkt końcowy HTTP OTLP jest dostępny ze zmiennej środowiskowej OTEL_EXPORTER_OTLP_ENDPOINT.
headers: Nagłówki wysyłane wraz z żądaniami. Jeśli uwierzytelnianie za pomocą klucza API dla punktu końcowego OTLP jest włączone, nagłówek x-otlp-api-key musi być wysyłany z żądaniami OTLP. Jeśli aplikacja przeglądarki jest uruchamiana przez hosta aplikacji, klucz interfejsu API jest dostępny ze zmiennej środowiskowej OTEL_EXPORTER_OTLP_HEADERS.
Metadane przeglądarki
Gdy aplikacja przeglądarki jest skonfigurowana do zbierania rozproszonych śladów, może ustawić nadrzędny ślad dla zakresów przeglądarki przy użyciu elementu meta w kodzie HTML. Wartość elementu meta name="traceparent" powinna odpowiadać bieżącemu prześledzeniu.
Na przykład, w aplikacji .NET wartość nadrzędna śledzenia prawdopodobnie zostanie przypisana z Activity.Current, a jej wartość Activity.Id zostanie przekazana jako content. Rozważmy na przykład następujący kod Razor:
razor
<head>@if (Activity.Current is{} currentActivity)
{
<metaname="traceparent"content="@currentActivity.Id" />
}
<!-- Other elements omitted for brevity... -->
</head>
Powyższy kod ustawia element meta traceparent na bieżący identyfikator działania.
Przykładowy kod telemetrii przeglądarki
Poniższy kod JavaScript demonstruje inicjowanie zestawu SDK języka JavaScript OpenTelemetry i wysyłanie danych telemetrycznych do pulpitu nawigacyjnego:
Powyższy kod JavaScript definiuje funkcję initializeTelemetry, która oczekuje adresu URL punktu końcowego OTLP, nagłówków i atrybutów zasobu. Te parametry są dostarczane przez zużywającą aplikację przeglądarki, która pobiera je ze zmiennych środowiskowych ustawionych przez hosta aplikacji. Rozważmy następujący kod Razor:
Tworzenie pakietów i minimalizowanie kodu JavaScript wykracza poza zakres tego artykułu.
Aby zapoznać się z kompletnym działającym przykładem konfigurowania JavaScript OTEL SDK w celu wysyłania danych telemetrycznych do pulpitu nawigacyjnego, zobacz przykład telemetrii przeglądarki .
Źródło tej zawartości można znaleźć w witrynie GitHub, gdzie można również tworzyć i przeglądać problemy i żądania ściągnięcia. Więcej informacji znajdziesz w naszym przewodniku dla współtwórców.
Opinia o produkcie .NET Aspire
.NET Aspire to projekt typu open source. Wybierz link, aby przekazać opinię:
W tym module dowiesz się, jak używać telemetrii do rejestrowania zachowania aplikacji chmurowej oraz jak stos .NET Aspire ułatwia przechowywanie i późniejsze przeglądanie danych.