Udostępnij za pośrednictwem


Konfiguracja zestawu SDK javaScript usługi Microsoft Azure Monitor Application Insights

Zestaw SDK JavaScript usługi Azure Application Insights udostępnia konfigurację do śledzenia, monitorowania i debugowania aplikacji internetowych.

Konfiguracja zestawu SDK

Te pola konfiguracji są opcjonalne i domyślnie ustawione na wartość false, chyba że określono inaczej.

Aby uzyskać instrukcje dotyczące dodawania konfiguracji zestawu SDK, zobacz Dodawanie konfiguracji zestawu SDK.

Nazwisko Typ Wartość domyślna
identyfikator konta

Opcjonalny identyfikator konta, jeśli aplikacja grupuje użytkowników na konta. Brak spacji, przecinków, średników, znaku równości lub kresek pionowych
ciąg null
dodajKontekstZadania

Zapewnij sposób wzbogacania dzienników zależności z kontekstem na początku wywołania interfejsu API. Wartość domyślna jest niezdefiniowana. Należy sprawdzić, czy xhr istnieje przy konfiguracji kontekstu związanego z xhr. Należy sprawdzić, czy fetch request i fetch response istnieją, jeśli konfigurujesz kontekst powiązany z fetch. W przeciwnym razie możesz nie pobrać potrzebnych danych.
(requestContext: IRequestionContext) => {[key: string]: any} niezdefiniowany
ajaxPerfLookupDelay

Wartość domyślna to 25 ms. Czas oczekiwania przed ponownym próbą sprawdzenia czasów windows.performance dla żądania Ajax; jest on podawany w milisekundach i przekazywany bezpośrednio do funkcji setTimeout().
numeryczne 25
Identyfikator aplikacji

Identyfikator AppId służy do korelacji między zależnościami AJAX wykonywanymi po stronie klienta z żądaniami po stronie serwera. Po włączeniu interfejsu API beacon nie można go używać automatycznie, ale można go ustawić ręcznie w konfiguracji. Wartość domyślna to null
ciąg null
AutomatyczneŚledzenieCzasuOdwiedzinStrony

Jeśli wartość true, w widoku strony czas wyświetlania poprzedniej instrumentowanej strony jest śledzony i wysyłany jako dane telemetryczne, a nowy czasomierz jest uruchamiany dla bieżącego widoku strony. pl-PL: Jest wysyłana jako metryka niestandardowa o nazwie PageVisitTime w milliseconds i jest obliczana za pomocą funkcji Date now() (jeśli jest dostępna). Jeśli now() jest niedostępna (IE8 lub mniej), używana jest metoda (new Date()).getTime(). Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
konwertuj niezdefiniowane

Podaj użytkownikowi opcję konwertowania niezdefiniowanego pola na wartość zdefiniowaną przez użytkownika.
any niezdefiniowany
cookieCfg

Ustawienia domyślne dotyczące użycia plików cookie są włączone, zobacz Ustawienia ICookieCfgConfig dla pełnych ustawień domyślnych.
ICookieCfgConfig
[Opcjonalnie]
(Od wersji 2.6.0)
niezdefiniowany
domena plików cookie

Niestandardowa domena plików cookie. Warto udostępnić pliki cookie usługi Application Insights w poddomenach.
(Od wersji 2.6.0) Jeśli cookieCfg.domain została zdefiniowana, ma pierwszeństwo nad nią.
alias dla cookieCfg.domain
[Opcjonalnie]
null
cookiePath

Niestandardowa ścieżka pliku cookie. Jest to przydatne, jeśli chcesz udostępnić pliki cookie usługi Application Insights za bramą aplikacji.
Jeśli cookieCfg.path parametr jest zdefiniowany, ma pierwszeństwo.
alias dla cookieCfg.path
[Opcjonalnie]
(Od wersji 2.6.0)
null
domenyNagłówkaKorelacji

Włączanie nagłówków korelacji dla określonych domen
ciąg znakowy[] niezdefiniowany
nagłówkiKorelacyjneWykluczoneDomeny

Wyłączanie nagłówków korelacji dla określonych domen
ciąg znakowy[] niezdefiniowany
korelacjaNagłówekWykluczWzorce

Wyłączanie nagłówków korelacji przy użyciu wyrażeń regularnych
wyrażenie regularne[] niezdefiniowany
UtwórzPerfMgr

Funkcja zwrotna wywoływana do utworzenia instancji IPerfManager, gdy jest to konieczne i gdy enablePerfMgr jest włączone. Umożliwia ona zastąpienie domyślnego tworzenia PerfManager() bez konieczności setPerfMgr() po zainicjowaniu.
(core: IAppInsightsCore, notificationManager: INotificationManager) => IPerfManager niezdefiniowany
customHeaders

Możliwość udostępniania dodatkowych nagłówków w przypadku korzystania z niestandardowego punktu końcowego. customHeaders nie są dodawane przy zamykaniu przeglądarki, gdy mechanizm wysyłania sygnału jest używany. Dodawanie nagłówków niestandardowych nie jest obsługiwane w programie IE9 lub starszym.
[{header: string, value: string}] niezdefiniowany
diagnosticLogInterval

(wewnętrzne) Czas sondowania (w ms) dla wewnętrznej kolejki rejestrowania
numeryczne 10 000
wyłączAjaxTracking

Jeśli to prawda, wywołania Ajax nie są automatycznie zbierane. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
wyłączUżycieCiasteczek

Wartość domyślna false. Wartość logiczna wskazująca, czy wyłączyć używanie plików cookie przez zestaw SDK. Jeśli to prawda, zestaw SDK nie przechowuje ani nie odczytuje żadnych danych z plików cookie.
(Od wersji 2.6.0) Jeśli cookieCfg.enabled zdefiniowano, ma pierwszeństwo. Użycie plików cookie można ponownie włączyć po zainicjowaniu za pośrednictwem core.getCookieMgr().setEnabled(true).
alias dla cookieCfg.enabled
[Opcjonalnie]
fałsz
wyłącz nagłówki korelacji

Jeśli wartość jest 'false', zestaw SDK dodaje dwa nagłówki ('Request-Id' i 'Request-Context') do wszystkich żądań zależności, aby skorelować je z odpowiednimi żądaniami po stronie serwera. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
wyłączAnalizęUtratyDanych

Jeśli ustawione na false, to podczas uruchamiania są sprawdzane bufory nadawcy telemetrii pod kątem elementów, które nie zostały jeszcze wysłane.
typ logiczny (boolowski) prawda
wyłączŚledzenieWyjątków

Jeśli to prawda, wyjątki nie są zbierane automatycznie. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
wyłączFetchTracking

Ustawieniem domyślnym dla disableFetchTracking parametru jest false, co oznacza, że jest włączone. Jednak w wersjach wcześniejszych niż 2.8.10 była domyślnie wyłączona. Gdy jest ustawiona wartość true, żądania pobierania nie są zbierane automatycznie. Ustawienie domyślne zmieniło się z true na false w wersji 2.8.0.
typ logiczny (boolowski) fałsz
(No changes; it remains "disableFlushOnBeforeUnload" as it is likely best kept in its original form.)

Wartość domyślna false. Jeśli wartość jest prawdziwa, metoda flush nie jest wywoływana, gdy wyzwoli się zdarzenie onBeforeUnload
typ logiczny (boolowski) fałsz
disableIkeyDeprecationMessage

Wyłącz komunikat o błędzie dotyczący wycofania klucza instrumentacji. Jeśli wartość true, komunikaty o błędach NIE są wysyłane.
typ logiczny (boolowski) prawda
disableInstrumentationKeyValidation (wyłącz sprawdzanie klucza instrumentacji)

Jeśli jest true, sprawdzanie poprawności klucza instrumentacji zostanie pominięte. Wartość domyślna to false.
typ logiczny (boolowski) fałsz
wyłączTelemetrię

Jeśli to jest prawda, dane telemetryczne nie są zbierane ani wysyłane. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
disableXhr (wyłącz XHR)

Domyślnie nie używaj elementu XMLHttpRequest ani XDomainRequest (dla programu Internet Explorer < w wersji 9) zamiast tego spróbuj użyć funkcji fetch() lub sendBeacon. Jeśli żaden inny transport nie jest dostępny, używa elementu XMLHttpRequest
typ logiczny (boolowski) fałsz
tryb śledzenia dystrybucyjnego

Ustawia tryb śledzenia rozproszonego. Jeśli ustawiono tryb AI_AND_W3C lub tryb W3C, nagłówki kontekstu śledzenia W3C (traceparent/tracestate) są generowane i uwzględniane we wszystkich żądaniach wychodzących. AI_AND_W3C jest zapewniany dla wstecznej kompatybilności z każdą starszą usługą zainstrumentowaną za pomocą Application Insights.
numeryczne lub DistributedTracingModes DistributedTracing Modes.AI_AND_W3C
enableAjaxErrorStatusText

Wartość domyślna false. Jeśli wartość true, uwzględnij wartość logiczną tekst danych błędu odpowiedzi w zdarzeniu zależności dla nieudanych żądań AJAX.
typ logiczny (boolowski) fałsz
enableAjaxPerfTracking

Wartość domyślna false. Flaga umożliwiająca znajdowanie i uwzględnianie dodatkowych okien przeglądarki w chronometrażu wydajności w zgłoszonych metrykach Ajax (XHR i fetch).
typ logiczny (boolowski) fałsz
włączAutomatyczneŚledzenieTrasy

Automatycznie śledź zmiany tras w aplikacjach jednostronicowych (SPA). W przypadku wartości true każda zmiana trasy wysyła nowy widok strony do usługi Application Insights. Zmiany trasy skrótu (example.com/foo#bar) są również rejestrowane jako nowe odsłony stron.
Uwaga: jeśli to pole jest włączone, nie włączaj history obiektu konfiguracji routera React, ponieważ otrzymujesz wiele zdarzeń widoku strony.
typ logiczny (boolowski) fałsz
włączKorelacjęCors

Jeśli to prawda, zestaw SDK dodaje dwa nagłówki („Request-Id” i „Request-Context”) do wszystkich żądań CORS, aby skorelować wychodzące zależności AJAX z odpowiednimi żądaniami po stronie serwera. Wartość domyślna to false
typ logiczny (boolowski) fałsz
włączDebugowanie

Jeśli to prawda, wewnętrzne dane debugowania są rzucane jako wyjątek zamiast być rejestrowane, niezależnie od ustawień logowania SDK. Wartość domyślna to „false”.
Uwaga: włączenie tego ustawienia powoduje usunięcie telemetrii za każdym razem, gdy wystąpi błąd wewnętrzny. Może to być przydatne do szybkiego identyfikowania problemów z konfiguracją lub użyciem zestawu SDK. Jeśli nie chcesz utracić telemetrii podczas debugowania, rozważ użycie funkcji loggingLevelConsole lub loggingLevelTelemetry zamiast enableDebug.
typ logiczny (boolowski) fałsz
włączPerfMgr

Po włączeniu (true) tworzy lokalne perfEvents dla kodu, który został zainstrumentowany w celu emitowania perfEvents za pośrednictwem funkcji pomocniczej doPerf(). Może służyć do identyfikowania potencjalnych problemów z wydajnością w zestawie SDK na podstawie twojego użycia lub opcjonalnie w twoim własnym instrumentowanym kodzie.
typ logiczny (boolowski) fałsz
włączŚledzenieNagłówkówŻądań

Jeśli wartość true, nagłówki żądań AJAX i Fetch są śledzone, wartość domyślna to false. Jeśli ignoreHeaders nie jest skonfigurowane, nagłówki Authorization i X-API-Key nie są rejestrowane.
typ logiczny (boolowski) fałsz
włączŚledzenieNagłówkaOdpowiedzi

Jeśli wartość zostanie ustawiona na true, nagłówki odpowiedzi żądań AJAX i Fetch są śledzone. Wartość domyślna to false. Jeśli element ignoreHeaders nie jest skonfigurowany, nagłówek WWW-Authenticate nie jest rejestrowany.
typ logiczny (boolowski) fałsz
włączBuforPrzechowalniSesji

Wartość domyślna true. Jeśli ma wartość true, bufor ze wszystkimi nie wysłanymi danymi telemetrycznymi jest przechowywany w pamięci sesji. Bufor jest przywracany podczas ładowania strony
typ logiczny (boolowski) prawda
śledzenie nieobsłużonych błędów związanych z obietnicami

Jeśli to prawda, nieobsługiwane odrzucone obietnice są automatycznie zbierane jako błąd języka JavaScript. Gdy wartość disableExceptionTracking ma wartość true (nie śledź wyjątków), wartość konfiguracji jest ignorowana i nieobsługiwane odrzucenia obietnicy nie są zgłaszane.
typ logiczny (boolowski) fałsz
eventsLimitInMem

Liczba zdarzeń, które mogą być przechowywane w pamięci, zanim zestaw SDK zacznie usuwać zdarzenia, gdy nie jest używany magazyn sesji (ustawienie domyślne).
Liczba 10 000
wyklucz Żądanie z Automatycznych Wzorców Śledzenia

Podaj sposób wykluczania określonej trasy z automatycznego śledzenia dla żądania XMLHttpRequest lub Fetch. Jeśli jest to określone, to dla żądania Ajax/fetch, gdzie adres URL żądania pasuje do wzorców wyrażeń regularnych, automatyczne śledzenie zostaje wyłączone. Wartość domyślna jest niezdefiniowana.
string[] | RegExp[] niezdefiniowany
funkcja wyboru opcji

Ustaw pozycję Funkcja , aby wyrazić zgodę na szczegółowe informacje.

To pole konfiguracji jest dostępne tylko w wersji 3.0.3 lub nowszej.
IFeatureOptIn niezdefiniowany
idLength

Określa domyślną długość używaną do generowania nowych losowych sesji i identyfikatorów użytkowników. Wartość domyślna to 22, poprzednia wartość domyślna to 5 (wersja 2.5.8 lub mniejsza), jeśli musisz zachować poprzednią maksymalną długość, należy ustawić wartość 5.
numeryczne 22
ignorujNagłówki

Nagłówki żądań i odpowiedzi dla AJAX i Fetch powinny być ignorowane w danych logów. Aby zastąpić lub odrzucić wartość domyślną, dodaj tablicę zawierającą wszystkie nagłówki, które mają być wykluczone, lub pustą tablicę do konfiguracji.
ciąg znakowy[] ["Autoryzacja", "X-API-Key", "WWW-Authenticate"]
czyInterfejsApiLatarniaJestWyłączony

Jeśli wartość false, zestaw SDK wysyła wszystkie dane telemetryczne przy użyciu interfejsu API beacon
typ logiczny (boolowski) prawda
Czy śledzenie linków w przeglądarce jest włączone

Wartość domyślna to „false”. Jeśli to prawda, zestaw SDK śledzi wszystkie żądania Browser Link.
typ logiczny (boolowski) fałsz
czyRetryWyłączone

Wartość domyślna false. Jeśli wartość false, powtórz próbę w przypadku 206 (częściowy sukces), 408 (przekroczenie limitu czasu), 429 (zbyt wiele żądań), 500 (błąd wewnętrzny serwera), 503 (usługa niedostępna) i 0 (offline, tylko jeśli wykryto)
typ logiczny (boolowski) fałsz
czyUżycieMagazynuJestWyłączone

Jeśli to prawda, zestaw SDK nie przechowuje ani nie odczytuje żadnych danych z magazynu lokalnego i sesji. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
poziomLogowaniaKonsola

Rejestruje wewnętrzne błędy usługi Application Insights w konsoli.
0: wyłączone,
1: Tylko błędy krytyczne,
2: Wszystko (błędy i ostrzeżenia)
numeryczne 0
poziomRejestrowaniaDanychTelemetrycznych

Wysyła wewnętrzne błędy usługi Application Insights jako dane telemetryczne.
0: wyłączone,
1: Tylko błędy krytyczne,
2: Wszystko (błędy i ostrzeżenia)
numeryczne 1
maxAjaxCallsPerView (maksymalna liczba wywołań Ajax na widok)

Wartość domyślna 500 — określa liczbę wywołań Ajax monitorowanych w widoku strony. Ustaw wartość -1, aby monitorować wszystkie (nieograniczone) wywołania Ajax na stronie.
numeryczne 500
maxAjaxPerfLookupAttempts

Wartość domyślna to 3. Maksymalna liczba prób sprawdzenia wartości window.performance (jeśli są dostępne) jest wymagana. Nie wszystkie przeglądarki wypełniają plik window.performance przed zgłoszeniem końca żądania XHR. W przypadku żądań pobierania jest on dodawany po zakończeniu.
numeryczne 3
maxBatchInterval

Jak długo należy przechowywać dane telemetryczne w partii przed wysłaniem (milisekundy)
numeryczne 15000
maksymalnyRozmiarPartiiWBajtach

Maksymalny rozmiar partii telemetrii. Jeśli partia przekroczy ten limit, zostanie natychmiast wysłana i zostanie uruchomiona nowa partia
numeryczne 10 000
przedrostek imienia

Opcjonalna wartość używana jako postfiks nazwy dla nazwy localStorage i nazwy pliku cookie sesji.
ciąg niezdefiniowany
onunloadDisableBeacon

Wartość domyślna false. po zamknięciu karty zestaw SDK wysyła wszystkie pozostałe dane telemetryczne przy użyciu interfejsu API beacon
typ logiczny (boolowski) fałsz
onunloadDisableFetch

Jeśli keepalive w metodzie fetch() jest obsługiwane, nie używaj tego do wysyłania zdarzeń podczas wyładowywania, ponieważ może nadal używać fetch() bez keepalive.
typ logiczny (boolowski) fałsz
nadpiszCzasWyświetleniaStrony

Jeśli to prawda, domyślne zachowanie funkcji trackPageView zostanie zmienione na rejestrowanie końca czasu trwania widoku strony, gdy wywoływany jest trackPageView. Jeśli wartość jest false i nie podano niestandardowego czasu trwania dla trackPageView, wydajność widoku strony jest obliczana przy użyciu API do mierzenia czasu nawigacji. Wartość domyślna to „false”.
typ logiczny (boolowski) fałsz
perfEvtsSendAll

Gdy właściwość enablePerfMgr jest włączona, a menedżer IPerfManager uruchamia zdarzenie INotificationManager.perfEvent(), ta flaga określa, czy zdarzenie jest wyzwalane (i wysyłane do wszystkich odbiorników) dla wszystkich zdarzeń (true) lub tylko dla zdarzeń nadrzędnych (false, domyślnie<>).
Nadrzędny element IPerfEvent to zdarzenie, w którym żaden inny element IPerfEvent nie jest nadal uruchomiony w momencie utworzenia zdarzenia, a jego właściwość nadrzędna nie ma wartości null ani nie jest niezdefiniowana. Od wersji 2.5.7
typ logiczny (boolowski) fałsz
procent próbkowania

Procent zdarzeń, które zostały wysłane. Wartość domyślna to 100, co oznacza, że wszystkie zdarzenia są wysyłane. Ustaw go, jeśli chcesz zachować limit danych dla aplikacji na dużą skalę.
numeryczne 100
sdkExtension

Ustawia nazwę rozszerzenia zestawu SDK. Dozwolone są tylko znaki alfabetyczne. Nazwa rozszerzenia jest dodawana jako prefiks do tagu "ai.internal.sdkVersion" (na przykład "ext_javascript:2.0.0"). Wartość domyślna to null.
ciąg null
sessionCookiePostfix

Opcjonalna wartość używana jako postfiks nazwy dla nazwy pliku cookie sesji. Jeśli niezdefiniowany, parametr namePrefix jest używany jako postfiks nazwy pliku cookie sesji.
ciąg niezdefiniowany
wygaśnięcieSesjiMs

Sesja jest rejestrowana, jeśli trwała przez ten czas w milisekundach. Wartość domyślna to 24 godziny
numeryczne 86400000
odnowienieSesjiMs

Sesja jest rejestrowana, jeśli użytkownik jest nieaktywny przez ten czas w milisekundach. Wartość domyślna to 30 minut
numeryczne 1800000
throttleMgrCfg

Ustaw konfigurację sterownika przepustnicy za pomocą klucza.

To pole konfiguracji jest dostępne tylko w wersji 3.0.3 lub nowszej.
{[key: number]: IThrottleMgrConfig} niezdefiniowany
userCookiePostfix

Opcjonalna wartość używana jako postfiks nazwy dla nazwy pliku cookie użytkownika. Jeśli nie jest zdefiniowane, żaden przyrostek nie jest dodawany do nazwy pliku cookie użytkownika.
ciąg niezdefiniowany

Śledzenie rozproszone

Nowoczesne architektury chmury i mikrousług umożliwiają proste, niezależne wdrażanie usług, które zmniejszają koszty przy jednoczesnym zwiększeniu dostępności i przepływności. Jednak sprawiło to, że ogólne systemy stały się trudniejsze do rozumienia i debugowania. Śledzenie rozproszone rozwiązuje ten problem, udostępniając profiler wydajności, który działa jak stosy wywołań dla architektur chmury i mikrousług.

Usługa Azure Monitor udostępnia dwa środowiska korzystania z rozproszonych danych śledzenia: widok diagnostyki transakcji dla pojedynczej transakcji/żądania i widok mapy aplikacji , aby pokazać, jak systemy współdziałają.

Usługa Application Insights może monitorować poszczególne składniki oddzielnie i wykrywać, który składnik jest odpowiedzialny za awarie lub obniżenie wydajności przy użyciu korelacji rozproszonej telemetrii. W tym artykule wyjaśniono model danych, techniki propagacji kontekstu, protokoły i implementację taktyki korelacji na różnych językach i platformach używanych przez usługę Application Insights.

Włącz śledzenie rozproszone za pośrednictwem usługi Application Insights z wykorzystaniem autoinstrumentacji lub SDK.

Agenty i zestawy SDK usługi Application Insights dla platform .NET, .NET Core, Java, Node.js i JavaScript obsługują naturalną obsługę śledzenia rozproszonego.

Po zainstalowaniu i skonfigurowaniu odpowiedniego SDK usługi Application Insights, autokollektory zależności automatycznie zbierają informacje śledzenia dla popularnych frameworków, bibliotek i technologii. Pełna lista obsługiwanych technologii jest dostępna w dokumentacji autocollection zależności.

Każda technologia może być również śledzona ręcznie za pomocą wywołania funkcji TrackDependency w obiekcie TelemetryClient.

Model danych dla korelacji telemetrii

Usługa Application Insights definiuje model danych dla korelacji rozproszonej telemetrii. Aby skojarzyć dane telemetryczne z operacją logiczną, każdy element telemetrii ma pole kontekstu o nazwie operation_Id. Każdy element telemetrii w rozproszonej trasie posiada ten identyfikator. Nawet jeśli utracisz dane telemetryczne z jednej warstwy, nadal można skojarzyć dane telemetryczne zgłaszane przez inne składniki.

Rozproszona operacja logiczna zwykle składa się z zestawu mniejszych operacji, które są żądaniami przetwarzanymi przez jeden ze składników. Telemetria żądania definiuje te operacje. Każdy element telemetrii żądania ma swój własny id, który identyfikuje go unikatowo i globalnie. Wszystkie elementy telemetrii (takie jak ślady i wyjątki) związane z żądaniem powinny ustawiać operation_parentId na wartość odpowiadającą żądaniu id.

Telemetria zależności reprezentuje każdą operację wychodzącą, taką jak wywołanie HTTP do innego składnika. Definiuje również własną id, która jest globalnie unikalna. Telemetria żądania, zainicjowana przez wywołanie tej zależności, używa tego id jako operation_parentId.

Widok rozproszonej operacji logicznej można utworzyć przy użyciu elementów operation_Id, operation_parentIdi request.id .dependency.id Te pola definiują również kolejność przyczynowości wywołań telemetrycznych.

W środowisku mikrousług ślady ze składników mogą przechodzić do różnych elementów magazynu. Każdy składnik może mieć własne parametry połączenia w usłudze Application Insights. Aby uzyskać dane telemetryczne dla operacji logicznej, usługa Application Insights wysyła zapytania o dane z każdego elementu magazynu.

Gdy liczba elementów magazynu jest duża, potrzebujesz wskazówki dotyczącej tego, gdzie szukać dalej. Model danych usługi Application Insights definiuje dwa pola, aby rozwiązać ten problem: request.source i dependency.target. Pierwsze pole identyfikuje składnik, który zainicjował żądanie zależności. Drugie pole identyfikuje, który składnik zwrócił odpowiedź wywołania zależności.

Aby uzyskać informacje na temat wykonywania zapytań z wielu niezależnych instancji, zobacz Wykonywanie zapytań dotyczących danych w obszarach roboczych, aplikacjach i zasobach usługi Log Analytics w usłudze Azure Monitor.

Example

Przyjrzyjmy się przykładowi. Aplikacja o nazwie Ceny akcji pokazuje bieżącą cenę rynkową akcji przy użyciu zewnętrznego interfejsu API o nazwie Stock. Aplikacja Stock Prices ma stronę o nazwie Stock page (Strona giełdowa), która zostanie otwarta w przeglądarce internetowej klienta przy użyciu polecenia GET /Home/Stock. Aplikacja wysyła zapytanie do interfejsu API stock przy użyciu wywołania GET /api/stock/valueHTTP .

Możesz przeanalizować wynikową telemetrię, uruchamiając zapytanie:

(requests | union dependencies | union pageViews)
| where operation_Id == "STYz"
| project timestamp, itemType, name, id, operation_ParentId, operation_Id

W wynikach wszystkie elementy telemetrii dzielą wspólny korzeń operation_Id. Gdy ze strony wykonano wywołanie Ajax, do telemetrii zależności zostanie przypisany nowy unikatowy identyfikator (qJSXU), a identyfikator widoku strony jest używany jako operation_ParentId. Następnie żądanie serwera używa identyfikatora Ajax jako operation_ParentId.

typPrzedmiotu nazwa identyfikator operation_ParentId operation_Id
pageView Strona zapasów STYz STYz
zależność GET /Home/Stock qJSXU STYz STYz
żądanie GET Strona główna/Akcje KqKwlrSt9PA= qJSXU STYz
zależność GET /api/stock/value bBrf2L7mm2g= KqKwlrSt9PA= STYz

Po wywołaniu GET /api/stock/value usługi zewnętrznej należy znać tożsamość tego serwera, aby można było odpowiednio ustawić dependency.target pole. Jeśli usługa zewnętrzna nie obsługuje monitorowania, target jest ustawiona na nazwę hosta usługi. Przykładem jest stock-prices-api.com. Jeśli jednak usługa identyfikuje się, zwracając wstępnie zdefiniowany nagłówek HTTP, target zawiera tożsamość usługi, co umożliwia Application Insights tworzenie rozproszonego śledzenia przez wykonywanie zapytań dotyczących danych telemetrycznych z tej usługi.

Nagłówki korelacji z użyciem W3C TraceContext.

Usługa Application Insights przechodzi na kontekst śledzenia W3C, który definiuje:

  • traceparent: Zawiera globalnie unikalny identyfikator operacji i unikalny identyfikator wywołania.
  • tracestate: niesie kontekst śledzenia specyficzny dla systemu.

Najnowsza wersja zestawu SDK usługi Application Insights obsługuje protokół Trace-Context, ale może być konieczne jego wybranie. (Zachowana jest zgodność z poprzednim protokołem korelacji obsługiwanym przez zestaw SDK usługi Application Insights.)

Protokół HTTP korelacji, nazywany również identyfikatorem żądania, jest przestarzały. Ten protokół definiuje dwa nagłówki:

  • Request-Id: Przechowuje globalnie unikalny identyfikator połączenia.
  • Correlation-Context: zawiera kolekcję par klucz-wartość dla właściwości śledzenia rozproszonego.

Usługa Application Insights definiuje również rozszerzenie dla korelacyjnego protokołu HTTP. Używa par Request-Context nazwa-wartość do propagowania kolekcji właściwości używanych przez bezpośredniego wywołującego lub wywoływanego. Zestaw SDK usługi Application Insights używa tego nagłówka do ustawiania pól dependency.target i request.source.

Modele danych W3C Trace-Context i Application Insights są odwzorowywane w następujący sposób:

Application Insights W3C TraceContext
Idi RequestDependency parent-id
Operation_Id trace-id
Operation_ParentId parent-id tego zakresu nadrzędnego. To pole musi być puste, jeśli jest to zakres korzeniowy.

Aby uzyskać więcej informacji, zobacz Model danych telemetrycznych usługi Application Insights.

Włącz obsługę śledzenia rozproszonego W3C

Ta funkcja jest domyślnie włączona dla języka JavaScript, a nagłówki są automatycznie dołączane, gdy domena strony hostingu jest taka sama jak domena, do której są wysyłane żądania (na przykład strona hostingu, example.com a żądania Ajax są wysyłane do example.comusługi ). Aby zmienić tryb śledzenia rozproszonego, użyj distributedTracingMode pola konfiguracji. AI_AND_W3C jest domyślnie zapewniana dla zapewnienia zgodności wstecznej z wszelkimi starszymi usługami monitorowanymi przez Application Insights.

Jeśli żądania XMLHttpRequest lub żądania Fetch Ajax są wysyłane do innego hosta domeny, w tym do poddomen, nagłówki korelacyjne nie są domyślnie uwzględniane. Aby włączyć tę funkcję, ustaw enableCorsCorrelation pole konfiguracji na wartość true. Jeśli ustawisz enableCorsCorrelation na true, wszystkie żądania XMLHttpRequest i Fetch Ajax będą zawierały nagłówki korelacji. W związku z tym, jeśli aplikacja na serwerze, który jest wywoływany, nie obsługuje traceparent nagłówka, żądanie może zakończyć się niepowodzeniem, w zależności od tego, czy przeglądarka / wersja może zweryfikować żądanie na podstawie nagłówków, które akceptuje serwer. Za pomocą correlationHeaderExcludedDomains pola konfiguracji można wykluczyć domenę serwera z iniekcji nagłówka korelacji między składnikami. Na przykład można użyć correlationHeaderExcludedDomains: ['*.auth0.com'], aby wykluczyć nagłówki korelacji z żądań wysyłanych do dostawcy tożsamości Auth0.

Ważne

Aby wyświetlić wszystkie konfiguracje wymagane do włączenia korelacji, zobacz dokumentację korelacji języka JavaScript.

Filtrowanie i wstępne przetwarzanie danych telemetrycznych

Możesz napisać kod, aby filtrować, modyfikować lub wzbogacać dane telemetryczne przed wysłaniem ich z zestawu SDK. Przetwarzanie obejmuje dane wysyłane ze standardowych modułów telemetrycznych, takich jak zbieranie żądań HTTP i zbieranie zależności.

  • Filtrowanie może modyfikować lub odrzucać dane telemetryczne przed ich wysłaniem z zestawu SDK przez zaimplementowanie elementu ITelemetryProcessor. Na przykład można zmniejszyć wolumen telemetrii, wykluczając żądania od botów. W przeciwieństwie do próbkowania masz pełną kontrolę nad tym, co jest wysyłane lub odrzucane, ale ma wpływ na wszystkie metryki oparte na zagregowanych dziennikach. W zależności od sposobu odrzucania elementów możesz również utracić możliwość nawigowania między powiązanymi elementami.

  • Dodaj lub zmodyfikuj właściwości do dowolnej telemetrii wysłanej z aplikacji, implementując element ITelemetryInitializer. Można na przykład dodać wartości obliczeniowe lub numery wersji, za pomocą których można filtrować dane w portalu.

  • Próbkowanie zmniejsza ilość danych telemetrycznych bez wpływu na statystyki. Przechowuje on powiązane punkty danych, dzięki czemu można nawigować między nimi podczas diagnozowania problemu. Całkowite liczby są mnożone w portalu, aby zrekompensować próbkowanie.

Uwaga / Notatka

Interfejs API zestawu SDK służy do wysyłania niestandardowych zdarzeń i metryk.

Filtering

Ta technika zapewnia bezpośrednią kontrolę nad elementami dołączonymi lub wykluczonymi ze strumienia telemetrii. Filtrowanie może służyć do odrzucania elementów telemetrii przed wysłaniem ich do usługi Application Insights. Filtrowanie można używać z próbkowaniem lub oddzielnie.

Aby filtrować dane telemetryczne, należy napisać procesor telemetrii i zarejestrować go w pliku TelemetryConfiguration. Wszystkie dane telemetryczne przechodzą przez procesor. Możesz usunąć go ze strumienia lub przekazać go do następnego procesora w łańcuchu. Dane telemetryczne ze standardowych modułów, takich jak moduł zbierający żądania HTTP i moduł zbierający zależności, oraz dane telemetryczne, które śledziłeś samodzielnie, są uwzględniane. Można na przykład odfiltrować dane telemetryczne dotyczące żądań z robotów lub pomyślnych wywołań zależności.

Ostrzeżenie

Filtrowanie danych telemetrycznych wysyłanych z zestawu SDK przy użyciu procesorów może wypaczyć statystyki widoczne w portalu i utrudniać obserwowanie powiązanych elementów.

Zamiast tego rozważ użycie próbkowania.

Aplikacje internetowe JavaScript

Dane telemetryczne można filtrować w aplikacjach internetowych JavaScript przy użyciu interfejsu ITelemetryInitializer.

  1. Utwórz funkcję wywołania zwrotnego inicjatora telemetrii. Funkcja wywołania zwrotnego przyjmuje ITelemetryItem jako parametr, czyli zdarzenie, które jest przetwarzane. Zwracanie false z tego wywołania zwrotnego powoduje odfiltrowanie elementu telemetrii.

    var filteringFunction = (envelope) => {
      if (envelope.data.someField === 'tobefilteredout') {
        return false;
      }
      return true;
    };
    
  2. Dodaj wywołanie zwrotne inicjatora telemetrii:

    appInsights.addTelemetryInitializer(filteringFunction);
    

ITelemetryProcessor i ITelemetryInitializer

Jaka jest różnica między procesorami telemetrii a inicjatorami telemetrii?

  • Niektóre czynności się pokrywają, które można zrobić z ich pomocą. Oba te elementy mogą służyć do dodawania lub modyfikowania właściwości telemetrii, chociaż zalecamy używanie inicjatorów do tego celu.
  • Inicjatory telemetrii są zawsze uruchamiane przed procesorami telemetrii.
  • Inicjatory telemetrii mogą być wywoływane więcej niż raz. Zgodnie z konwencją nie ustawiają żadnej właściwości, która została już ustawiona.
  • Procesory telemetryczne umożliwiają całkowite zastąpienie lub odrzucenie elementu telemetrii.
  • Wszystkie zarejestrowane inicjatory telemetrii są wywoływane dla każdego elementu telemetrii. W przypadku procesorów telemetrycznych zestaw SDK gwarantuje wywołanie pierwszego procesora telemetrii. Niezależnie od tego, czy pozostałe procesory są wywoływane, czy nie, zależy od powyższych procesorów telemetrycznych.
  • Użyj inicjatorów telemetrii, aby wzbogacić dane telemetryczne dodatkowymi właściwościami lub nadpisać istniejące. Użyj procesora telemetrii, aby odfiltrować dane telemetryczne.

Dodawanie/modyfikowanie właściwości

Inicjatory telemetrii umożliwiają wzbogacanie telemetrii dodatkowymi informacjami lub zastępowanie właściwości telemetrii ustawionych przez standardowe moduły telemetryczne.

Na przykład usługa Application Insights dla pakietu internetowego zbiera dane telemetryczne dotyczące żądań HTTP. Domyślnie flaguje każde żądanie z kodem >odpowiedzi ≥400 jako nieudane. Jeśli zamiast tego chcesz traktować 400 jako sukces, możesz podać inicjator telemetrii, który ustawia właściwość "sukces".

Jeśli podasz inicjator telemetrii, będzie on wywoływany za każdym razem, gdy zostanie wywołana dowolna z metod Track*(). Ten inicjalizator zawiera metody Track(), które są wywoływane przez standardowe moduły telemetrii. Zgodnie z konwencją te moduły nie ustawiają żadnej właściwości, która została już ustawiona przez inicjator. Inicjatory telemetrii są wywoływane przed wywołaniem procesorów telemetrii, więc wszelkie wzbogacania wykonywane przez inicjatory są widoczne dla procesorów.

Inicjatory telemetrii języka JavaScript

W razie potrzeby wstaw inicjator telemetrii języka JavaScript. Aby uzyskać więcej informacji na temat inicjatorów telemetrii dla zestawu SDK języka JavaScript usługi Application Insights, zobacz Inicjatory telemetrii.

Wstaw inicjator telemetrii przez dodanie funkcji wywołania zwrotnego onInit w konfiguracji skryptu modułu ładującego zestawu SDK języka JavaScript (Web):

<script type="text/javascript">
!(function (cfg){function e(){cfg.onInit&&cfg.onInit(n)}var x,w,D,t,E,n,C=window,O=document,b=C.location,q="script",I="ingestionendpoint",L="disableExceptionTracking",j="ai.device.";"instrumentationKey"[x="toLowerCase"](),w="crossOrigin",D="POST",t="appInsightsSDK",E=cfg.name||"appInsights",(cfg.name||C[t])&&(C[t]=E),n=C[E]||function(g){var f=!1,m=!1,h={initialize:!0,queue:[],sv:"8",version:2,config:g};function v(e,t){var n={},i="Browser";function a(e){e=""+e;return 1===e.length?"0"+e:e}return n[j+"id"]=i[x](),n[j+"type"]=i,n["ai.operation.name"]=b&&b.pathname||"_unknown_",n["ai.internal.sdkVersion"]="javascript:snippet_"+(h.sv||h.version),{time:(i=new Date).getUTCFullYear()+"-"+a(1+i.getUTCMonth())+"-"+a(i.getUTCDate())+"T"+a(i.getUTCHours())+":"+a(i.getUTCMinutes())+":"+a(i.getUTCSeconds())+"."+(i.getUTCMilliseconds()/1e3).toFixed(3).slice(2,5)+"Z",iKey:e,name:"Microsoft.ApplicationInsights."+e.replace(/-/g,"")+"."+t,sampleRate:100,tags:n,data:{baseData:{ver:2}},ver:undefined,seq:"1",aiDataContract:undefined}}var n,i,t,a,y=-1,T=0,S=["js.monitor.azure.com","js.cdn.applicationinsights.io","js.cdn.monitor.azure.com","js0.cdn.applicationinsights.io","js0.cdn.monitor.azure.com","js2.cdn.applicationinsights.io","js2.cdn.monitor.azure.com","az416426.vo.msecnd.net"],o=g.url||cfg.src,r=function(){return s(o,null)};function s(d,t){if((n=navigator)&&(~(n=(n.userAgent||"").toLowerCase()).indexOf("msie")||~n.indexOf("trident/"))&&~d.indexOf("ai.3")&&(d=d.replace(/(\/)(ai\.3\.)([^\d]*)$/,function(e,t,n){return t+"ai.2"+n})),!1!==cfg.cr)for(var e=0;e<S.length;e++)if(0<d.indexOf(S[e])){y=e;break}var n,i=function(e){var a,t,n,i,o,r,s,c,u,l;h.queue=[],m||(0<=y&&T+1<S.length?(a=(y+T+1)%S.length,p(d.replace(/^(.*\/\/)([\w\.]*)(\/.*)$/,function(e,t,n,i){return t+S[a]+i})),T+=1):(f=m=!0,s=d,!0!==cfg.dle&&(c=(t=function(){var e,t={},n=g.connectionString;if(n)for(var i=n.split(";"),a=0;a<i.length;a++){var o=i[a].split("=");2===o.length&&(t[o[0][x]()]=o[1])}return t[I]||(e=(n=t.endpointsuffix)?t.location:null,t[I]="https://"+(e?e+".":"")+"dc."+(n||"services.visualstudio.com")),t}()).instrumentationkey||g.instrumentationKey||"",t=(t=(t=t[I])&&"/"===t.slice(-1)?t.slice(0,-1):t)?t+"/v2/track":g.endpointUrl,t=g.userOverrideEndpointUrl||t,(n=[]).push((i="SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details)",o=s,u=t,(l=(r=v(c,"Exception")).data).baseType="ExceptionData",l.baseData.exceptions=[{typeName:"SDKLoadFailed",message:i.replace(/\./g,"-"),hasFullStack:!1,stack:i+"\nSnippet failed to load ["+o+"] -- Telemetry is disabled\nHelp Link: https://go.microsoft.com/fwlink/?linkid=2128109\nHost: "+(b&&b.pathname||"_unknown_")+"\nEndpoint: "+u,parsedStack:[]}],r)),n.push((l=s,i=t,(u=(o=v(c,"Message")).data).baseType="MessageData",(r=u.baseData).message='AI (Internal): 99 message:"'+("SDK LOAD Failure: Failed to load Application Insights SDK script (See stack for details) ("+l+")").replace(/\"/g,"")+'"',r.properties={endpoint:i},o)),s=n,c=t,JSON&&((u=C.fetch)&&!cfg.useXhr?u(c,{method:D,body:JSON.stringify(s),mode:"cors"}):XMLHttpRequest&&((l=new XMLHttpRequest).open(D,c),l.setRequestHeader("Content-type","application/json"),l.send(JSON.stringify(s)))))))},a=function(e,t){m||setTimeout(function(){!t&&h.core||i()},500),f=!1},p=function(e){var n=O.createElement(q),e=(n.src=e,t&&(n.integrity=t),n.setAttribute("data-ai-name",E),cfg[w]);return!e&&""!==e||"undefined"==n[w]||(n[w]=e),n.onload=a,n.onerror=i,n.onreadystatechange=function(e,t){"loaded"!==n.readyState&&"complete"!==n.readyState||a(0,t)},cfg.ld&&cfg.ld<0?O.getElementsByTagName("head")[0].appendChild(n):setTimeout(function(){O.getElementsByTagName(q)[0].parentNode.appendChild(n)},cfg.ld||0),n};p(d)}cfg.sri&&(n=o.match(/^((http[s]?:\/\/.*\/)\w+(\.\d+){1,5})\.(([\w]+\.){0,2}js)$/))&&6===n.length?(d="".concat(n[1],".integrity.json"),i="@".concat(n[4]),l=window.fetch,t=function(e){if(!e.ext||!e.ext[i]||!e.ext[i].file)throw Error("Error Loading JSON response");var t=e.ext[i].integrity||null;s(o=n[2]+e.ext[i].file,t)},l&&!cfg.useXhr?l(d,{method:"GET",mode:"cors"}).then(function(e){return e.json()["catch"](function(){return{}})}).then(t)["catch"](r):XMLHttpRequest&&((a=new XMLHttpRequest).open("GET",d),a.onreadystatechange=function(){if(a.readyState===XMLHttpRequest.DONE)if(200===a.status)try{t(JSON.parse(a.responseText))}catch(e){r()}else r()},a.send())):o&&r();try{h.cookie=O.cookie}catch(k){}function e(e){for(;e.length;)!function(t){h[t]=function(){var e=arguments;f||h.queue.push(function(){h[t].apply(h,e)})}}(e.pop())}var c,u,l="track",d="TrackPage",p="TrackEvent",l=(e([l+"Event",l+"PageView",l+"Exception",l+"Trace",l+"DependencyData",l+"Metric",l+"PageViewPerformance","start"+d,"stop"+d,"start"+p,"stop"+p,"addTelemetryInitializer","setAuthenticatedUserContext","clearAuthenticatedUserContext","flush"]),h.SeverityLevel={Verbose:0,Information:1,Warning:2,Error:3,Critical:4},(g.extensionConfig||{}).ApplicationInsightsAnalytics||{});return!0!==g[L]&&!0!==l[L]&&(e(["_"+(c="onerror")]),u=C[c],C[c]=function(e,t,n,i,a){var o=u&&u(e,t,n,i,a);return!0!==o&&h["_"+c]({message:e,url:t,lineNumber:n,columnNumber:i,error:a,evt:C.event}),o},g.autoExceptionInstrumented=!0),h}(cfg.cfg),(C[E]=n).queue&&0===n.queue.length?(n.queue.push(e),n.trackPageView({})):e();})({
src: "https://js.monitor.azure.com/scripts/b/ai.3.gbl.min.js",
crossOrigin: "anonymous", // When supplied this will add the provided value as the cross origin attribute on the script tag
onInit: function (sdk) {
    sdk.addTelemetryInitializer(function (envelope) {
    envelope.data = envelope.data || {};
    envelope.data.someField = 'This item passed through my telemetry initializer';
    });
}, // Once the application insights instance has loaded and initialized this method will be called
// sri: false, // Custom optional value to specify whether fetching the snippet from integrity file and do integrity check
cfg: { // Application Insights Configuration
    connectionString: "YOUR_CONNECTION_STRING"
}});
</script>

Aby uzyskać podsumowanie właściwości innych niż niestandardowe dostępnych w elemencie telemetrii, zobacz Application Insights Export Data Model.

Możesz dodać dowolną liczbę inicjalizatorów. Są one wywoływane w kolejności, w której są dodawane.

Dodawanie nazwy roli chmury i wystąpienia roli w chmurze

Użyj inicjatora telemetrii, aby ustawić tagi ai.cloud.role oraz ai.cloud.roleInstance. Te tagi definiują sposób wyświetlania składnika w mapie aplikacji w usłudze Azure Monitor.

appInsights.queue.push(() => {
appInsights.addTelemetryInitializer((envelope) => {
  envelope.tags["ai.cloud.role"] = "your role name";
  envelope.tags["ai.cloud.roleInstance"] = "your role instance";
});
});

Począwszy od wersji 2.6.0, SDK JavaScript dla Azure Application Insights zapewnia zarządzanie plikami cookie oparte na instancjach, które można wyłączyć i ponownie włączyć po zainicjowaniu.

Jeśli wyłączyłeś pliki cookie podczas inicjowania z użyciem konfiguracji disableCookiesUsage lub cookieCfg.enabled, możesz je ponownie włączyć za pomocą funkcji setEnabled w obiekcie ICookieMgr.

Zarządzanie plikami cookie oparte na instancji zastępuje poprzednie funkcje globalne CoreUtils, disableCookies(), setCookie(), getCookie(), i deleteCookie().

Aby skorzystać z ulepszeń drżenia drzewa wprowadzonych w wersji 2.6.0, zaleca się, aby nie używać już funkcji globalnych.

ICookieMgrConfig to konfiguracja plików cookie do zarządzania plikami cookie opartymi na wystąpieniach dodana w wersji 2.6.0. Dostępne opcje umożliwiają włączanie lub wyłączanie używania plików cookie przez zestaw SDK. Można również ustawić niestandardowe domeny plików cookie i ścieżki oraz dostosować funkcje pobierania, ustawiania i usuwania plików cookie.

Opcje ICookieMgrConfig są zdefiniowane w poniższej tabeli.

Nazwisko Typ Wartość domyślna opis
włączony typ logiczny (boolowski) prawda Bieżące wystąpienie zestawu SDK używa tego elementu logicznego, aby wskazać, czy użycie plików cookie jest włączone. Jeśli jest to wartość false, wystąpienie zestawu SDK zainicjowane przez tę konfigurację nie przechowuje ani nie odczytuje żadnych danych z plików cookie.
domena ciąg null Niestandardowa domena plików cookie. Warto udostępnić pliki cookie usługi Application Insights w poddomenach. Jeśli wartość nie zostanie podana, użyj wartości z wartości głównej cookieDomain .
ścieżka ciąg / Określa ścieżkę, która ma być używana dla pliku cookie; jeśli nie zostanie podana, używana jest jakakolwiek wartość z wartości głównej cookiePath.
ignorujCiasteczka ciąg znakowy[] niezdefiniowany Określ nazwy plików cookie, które mają być ignorowane, powoduje, że dowolna zgodna nazwa pliku cookie nigdy nie będzie odczytywana ani zapisywana. Mogą one być nadal jawnie czyszczone lub usuwane. Nie musisz powtarzać nazwy w blockedCookies konfiguracji. (od wersji 2.8.8)
zablokowaneCiasteczka ciąg znakowy[] niezdefiniowany Określ nazwy plików cookie, które nigdy nie mają być zapisywane. Zapobiega tworzeniu lub aktualizowaniu jakichkolwiek nazw plików cookie, ale można je nadal odczytywać, chyba że są również uwzględnione w ignoreCookies. Mogą być one nadal czyszczone lub usuwane jawnie. Jeśli nie zostanie podana, zostanie ona domyślnie ustawiona na tę samą listę w parametrze ignoreCookies. (Od wersji 2.8.8)
pobierzCiasteczko (name: string) => string null Funkcja pobierania nazwanej wartości pliku cookie, jeśli nie zostanie podana, używa wewnętrznego analizowania/buforowania plików cookie.
ustawCiasteczko (name: string, value: string) => void null Funkcja ustawiania nazwanego pliku cookie z określoną wartością, wywoływana tylko podczas dodawania lub aktualizowania pliku cookie.
delCookie (name: string, value: string) => void null Funkcja usuwania nazwanego pliku cookie z określoną wartością oddzielona od setCookie, aby uniknąć konieczności analizowania wartości w celu określenia, czy plik cookie jest dodawany, czy usuwany. Jeśli nie zostanie podany, używa wewnętrznej analizy i buforowania plików cookie.

Mapa źródłowa

Obsługa map źródłowych pomaga debugować zminifikowany kod JavaScript, umożliwiając deminifikację zminifikowanego stosu wywołań w telemetrii wyjątków.

  • Zgodna ze wszystkimi bieżącymi integracjami na panelu Szczegóły wyjątku
  • Obsługuje wszystkie bieżące i przyszłe zestawy SDK języka JavaScript, w tym Node.JS, bez konieczności uaktualniania zestawu SDK

Usługa Application Insights obsługuje przesył map źródłowych do kontenera obiektów blob konta usługi Azure Storage. Możesz użyć map źródłowych, aby odminifikować stosy wywołań znalezione na stronie Szczegóły transakcji od początku do końca. Możesz również użyć map źródłowych, aby usunąć wszelkie wyjątki wysyłane przez zestaw SDK języka JavaScript lub zestaw SDK Node.js.

Zrzut ekranu przedstawiający wybranie opcji rozminifikowania stosu wywołań poprzez połączenie z kontem magazynu.

Utwórz nowe konto magazynowe i kontener obiektów blob

Jeśli masz już istniejące konto magazynowe lub kontener obiektów blob, możesz pominąć ten krok.

  1. Utwórz nowe konto magazynowe.

  2. Utwórz kontener obiektów blob na swoim koncie przechowywania. Ustaw poziom dostępu publicznego na Prywatny , aby upewnić się, że mapy źródłowe nie są publicznie dostępne.

    Zrzut ekranu przedstawiający ustawienie poziomu dostępu kontenera na Prywatny.

Prześlij mapy źródłowe do kontenera Blob

Zintegruj pipeline ciągłego wdrażania z kontem magazynowym, konfigurując go tak, aby automatycznie przesyłać mapy źródłowe do skonfigurowanego kontenera blobów.

Mapy źródłowe można przekazać do kontenera usługi Azure Blob Storage przy użyciu tej samej struktury folderów, z którą zostały skompilowane i wdrożone. Typowym przykładem zastosowania jest poprzedzenie folderu wdrożenia jego wersją, na przykład 1.2.3/static/js/main.js. Gdy wykonujesz unminify przez kontener obiektów blob platformy Azure o nazwie sourcemaps, potok próbuje pobrać mapę źródłową znajdującą się w lokalizacji sourcemaps/1.2.3/static/js/main.js.map.

Jeśli używasz usługi Azure Pipelines do ciągłego kompilowania i wdrażania aplikacji, dodaj zadanie Azure File Copy do potoku, aby automatycznie przekazywać mapy źródłowe.

Zrzut ekranu pokazujący, jak dodać zadanie kopiowania plików Azure do potoku, aby przesłać mapy źródłowe do Azure Blob Storage.

Skonfiguruj zasób usługi Application Insights z kontem magazynowym dla map źródłowych

Masz dwie opcje konfigurowania zasobu usługi Application Insights z użyciem konta magazynowego dla map źródeł.

Karta szczegółów transakcji końcowej

Na karcie Szczegóły transakcji kompleksowej wybierz Unminify. Skonfiguruj zasób, jeśli jest on nieskonfigurowany.

  1. W portalu Azure wyświetl szczegóły wyjątku, który jest zminifikowany.
  2. Wybierz Unminify.
  3. Jeśli zasób nie jest skonfigurowany, skonfiguruj go.
Karta Właściwości

Aby skonfigurować lub zmienić konto magazynu lub kontener blobów połączony z zasobem usługi Application Insights:

  1. Przejdź do karty Właściwości zasobu usługi Application Insights.

  2. Wybierz Zmień kontener Blob mapy źródłowej.

  3. Wybierz inny kontener obiektów blob jako kontener mapy źródłowej.

  4. Wybierz Zastosuj.

    Zrzut ekranu przedstawiający ponowną konfigurację wybranego kontenera obiektów blob platformy Azure w okienku Właściwości.

Wyświetl niezminifikowany stos wywołań

Aby wyświetlić niezminyfikowany stos wywołań, wybierz element Telemetria wyjątków w witrynie Azure Portal, znajdź mapy źródłowe pasujące do stosu wywołań, a następnie przeciągnij i upuść mapy źródłowe do stosu wywołań w witrynie Azure Portal. Mapa źródłowa musi mieć taką samą nazwę jak plik źródłowy ramki stosu, ale z map rozszerzeniem.

Jeśli wystąpią problemy, które obejmują obsługę mapy źródłowej dla aplikacji JavaScript, zobacz Rozwiązywanie problemów z obsługą mapy źródłowej dla aplikacji JavaScript.

Animacja przedstawiająca funkcję unminify.

Drżenie drzewa

Drżenie drzewa eliminuje nieużywany kod z końcowego pakietu JavaScript.

Aby wykorzystać drżenie drzewa, zaimportuj tylko niezbędne składniki zestawu SDK do kodu. Dzięki temu nieużywany kod nie jest uwzględniony w ostatnim pakiecie, zmniejszając jego rozmiar i zwiększając wydajność.

Ulepszenia i zalecenia dotyczące potrząsania drzewami

W wersji 2.6.0 wycofaliśmy i usunęliśmy wewnętrzne użycie tych statycznych klas pomocniczych, aby poprawić obsługę algorytmów drżenia drzewa. Dzięki temu pakiety npm bezpiecznie upuszczają nieużywany kod.

  • CoreUtils
  • EventHelper
  • Util
  • UrlHelper
  • DateTimeUtils
  • ConnectionStringParser

Funkcje są teraz eksportowane jako elementy najwyższego poziomu z modułów, co ułatwia refaktoryzację kodu w celu lepszej optymalizacji drzewa.

Klasy statyczne zostały zmienione na obiekty const odwołujące się do nowych wyeksportowanych funkcji, a przyszłe zmiany są planowane do dalszej refaktoryzacji odwołań.

Usuwanie nieużywanych przestarzałych funkcji i ich zamienników

Ta sekcja ma zastosowanie tylko wtedy, gdy używasz przestarzałych funkcji i chcesz zoptymalizować rozmiar pakietu. Zalecamy użycie funkcji zastępczych, aby zmniejszyć rozmiar i obsługiwać wszystkie wersje programu Internet Explorer.

Istniejący Zastąpienie
CoreUtils @microsoft/applicationinsights-core-js
CoreUtils._canUseCookies Brak. Nie używaj go, ponieważ powoduje, że wszystkie odwołania CoreUtils zostaną uwzględnione w ostatnim kodzie.
Zrefaktoruj obsługę plików cookie, aby używać appInsights.getCookieMgr().setEnabled(true/false) do ustawiania wartości i appInsights.getCookieMgr().isEnabled() do sprawdzania wartości.
CoreUtils.isTypeof isTypeof
CoreUtils.isUndefined jestNiezdefiniowany
CoreUtils.isNullOrUndefined isNullOrUndefined
CoreUtils.hasOwnProperty (metoda sprawdzająca, czy obiekt posiada określone własności) hasOwnProperty
CoreUtils.isFunction isFunction
CoreUtils.isObject isObject
CoreUtils.isDate isDate
CoreUtils.isArray funkcja isArray
CoreUtils.isError isError
CoreUtils.isString isString
CoreUtils.isNumber jestLiczba
CoreUtils.isBoolean isBoolean
CoreUtils.toISOString toISOString lub getISOString
CoreUtils.arrForEach arrForEach
CoreUtils.arrIndexOf arrIndexOf (indeks tablicy)
CoreUtils.arrMap arrMap
CoreUtils.arrReduce arrReduce
CoreUtils.strTrim strTrim
CoreUtils.objCreate objCreateFn
CoreUtils.objKeys objKeys
CoreUtils.objDefineAccessors objDefineAccessors (definiuj akcesory)
CoreUtils.addEventHandler addEventHandler
CoreUtils.dateNow dataTeraz
CoreUtils.isIE isIE
CoreUtils.disableCookies (wyłącza ciasteczka) disableCookies
Odwoływanie się do obu powoduje, że odwołania do narzędzi CoreUtils mają być przywołyne w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().setEnabled(false)
CoreUtils.newGuid newGuid
CoreUtils.perfNow narzędzie perfNow
CoreUtils.newId nowyIdentyfikator
CoreUtils.randomValue randomValue
CoreUtils.random32 losowy32
CoreUtils.mwcRandomSeed mwcRandomSeed
CoreUtils.mwcRandom32 mwcRandom32
CoreUtils.generateW3CId generujW3CId
EventHelper @microsoft/applicationinsights-core-js
EventHelper.Attach DołączZdarzenie
EventHelper.AttachEvent DołączZdarzenie
EventHelper.Detach odłączZdarzenie
EventHelper.DetachEvent odłączZdarzenie
Użyteczność @microsoft/applicationinsights-common-js
Util.Nieokreślony strNotSpecified
Util.createDomEvent utwórzDomEvent
Util.wyłączPrzechowywanie wyłączPrzechowywanie
Util.isInternalApplicationInsightsEndpoint (metoda sprawdzająca czy dany punkt końcowy Insights jest wewnętrzny) czyJestWewnętrznymPunktemKońcowymAnalizyAplikacji
Util.canUseLocalStorage (czy można używać localStorage) utlCanUseLocalStorage (czy można używać pamięci lokalnej)
Util.getStorage utlGetLocalStorage
Util.setStorage utlSetLocalStorage
Util.removeStorage utlUsuńPamięć
Funkcja Util.canUseSessionStorage (sprawdza możliwość użycia pamięci sesji) utlMożnaUżyćPrzechowywaniaSesji
Util.getSessionStorageKeys utlGetSessionStorageKeys
Util.getSessionStorage utlGetSessionStorage
Util.setSessionStorage utlSetSessionStorage
Util.removeSessionStorage utlRemoveSessionStorage
Util.wyłączCiasteczka disableCookies
Odwoływanie się do obu powoduje, że odwołania do narzędzi CoreUtils mają być przywołyne w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().setEnabled(false)
Util.możeUżywaćCiasteczek może używać ciasteczek
Odwoływanie się do obu powoduje, że odwołania do narzędzi CoreUtils mają być przywołyne w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().isEnabled()
Util.disallowsSameSiteNone (uniemożliwia użycie SameSite ustawionego na None) uaOdrzucaSameSiteNone
Util.setCookie (ustawienie ciasteczka) coreSetCookie
Odwoływanie się powoduje odwołanie do narzędzi CoreUtils w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().set(name: string, value: string)
Util.stringToBoolOrDefault stringToBoolOrDefault
Util.getCookie coreGetCookie
Odwoływanie się powoduje odwołanie do narzędzi CoreUtils w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().get(name: string)
Util.deleteCookie (usuń cookie) główneUsuwanieCiasteczka
Odwoływanie się powoduje odwołanie do narzędzi CoreUtils w celu zapewnienia zgodności z poprzednimi wersjami.
Przekształć obsługę plików cookie w celu użycia appInsights.getCookieMgr().del(name: string, path?: string)
Util.trim strTrim
Util.newId nowyIdentyfikator
Util.random32 ---
Nie dokonuj zamiany, zrefaktoryzuj kod, aby używać rdzenia random32(true)
Util.generateW3CId generujW3CId
Util.isArray funkcja isArray
"Util.isError" isError
Util.isDate isDate
Util.toISOStringForIE8 (konwersja do formatu ISO dla przeglądarki IE8) toISOString
Util.getIEVersion getIEVersion
Util.msToTimeSpan msToTimeSpan
Util.isCrossOriginError isCrossOriginError
Util.dump (funkcja zrzutu) dumpObj
Util.getExceptionName getNazwaWyjątku
Util.addEventHandler DołączZdarzenie
Util.IsBeaconApiSupported isBeaconApiSupported
Util.getExtension getExtensionByName
UrlHelper @microsoft/applicationinsights-common-js
UrlHelper.parseUrl urlParseUrl
UrlHelper.getAbsoluteUrl urlGetAbsoluteUrl (uzyskaj absolutny URL)
UrlHelper.pobierzNazwęŚcieżki urlPobierzNazwęŚcieżki
UrlHelper.getCompeteUrl urlPobierzPelnyUrl
UrlHelper.parseHost urlParseHost
UrlHelper.parseFullHost urlParseFullHost
DateTimeUtils @microsoft/applicationinsights-common-js
DateTimeUtils.Now dateTimeUtilsNow
DateTimeUtils.GetDuration dateTimeUtilsDuration
ConnectionStringParser @microsoft/applicationinsights-common-js
ConnectionStringParser.parse parsuj ciąg połączenia

Powiadomienia dotyczące usług

Powiadomienia o usłudze to funkcja wbudowana w zestaw SDK, która udostępnia zalecenia umożliwiające podejmowanie działań, aby zapewnić nieprzerwane przepływy telemetrii w usłudze Application Insights. Powiadomienia są widoczne jako komunikat o wyjątku w usłudze Application Insights. Upewniamy się, że powiadomienia są istotne dla Ciebie na podstawie ustawień zestawu SDK i dostosowujemy szczegółowość na podstawie pilności zalecenia. Zalecamy pozostawienie powiadomień serwisowych, ale możesz je wyłączyć za pomocą konfiguracji featureOptIn.

Obecnie żadne aktywne powiadomienia nie są wysyłane.

Powiadomienia o usłudze są zarządzane przez zestaw SDK języka JavaScript, który regularnie sonduje publiczny plik JSON w celu kontrolowania i aktualizowania tych powiadomień. Aby wyłączyć sondowanie przeprowadzane przez zestaw SDK języka JavaScript, wyłącz tryb featureOptIn.

Rozwiązywanie problemów

Zobacz dedykowany artykuł dotyczący rozwiązywania problemów.

Następne kroki