Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
Konfiguracja oparta na programie npm
Dodaj następującą konfigurację:
distributedTracingMode: DistributedTracingModes.W3CŁadowarka SDK JavaScript (Web) - konfiguracja skryptowa
Dodaj następującą konfigurację:
distributedTracingMode: 2 // DistributedTracingModes.W3C
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.
Utwórz funkcję wywołania zwrotnego inicjatora telemetrii. Funkcja wywołania zwrotnego przyjmuje
ITelemetryItemjako parametr, czyli zdarzenie, które jest przetwarzane. Zwracaniefalsez tego wywołania zwrotnego powoduje odfiltrowanie elementu telemetrii.var filteringFunction = (envelope) => { if (envelope.data.someField === 'tobefilteredout') { return false; } return true; };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";
});
});
Zarządzanie plikami cookie
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.
Konfiguracja pliku cookie
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
Łączenie z kontem usługi Blob Storage
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.
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.
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.
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.
Przekazywanie map źródłowych za pośrednictwem usługi Azure Pipelines (zalecane)
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.
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.
- W portalu Azure wyświetl szczegóły wyjątku, który jest zminifikowany.
- Wybierz Unminify.
- 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:
Przejdź do karty Właściwości zasobu usługi Application Insights.
Wybierz Zmień kontener Blob mapy źródłowej.
Wybierz inny kontener obiektów blob jako kontener mapy źródłowej.
Wybierz Zastosuj.
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.
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.
CoreUtilsEventHelperUtilUrlHelperDateTimeUtilsConnectionStringParser
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
- Aby zapoznać się z często zadawanymi pytaniami, zobacz Często zadawane pytania dotyczące konfiguracji zestawu SDK języka JavaScript.
- Śledzenie użycia
- Zadanie kopiowania plików platformy Azure
- Dokumentacja typów danych usługi Azure Monitor i kod zestawu SDK dla zestawu SDK języka JavaScript.