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.
Usługa Application Insights monitoruje składniki po wdrożeniu, aby wykryć wydajność i inne problemy. Z aplikacji Application Insights można korzystać do usług Node.js hostowanych w centrum danych, na maszynach wirtualnych platformy Azure, w aplikacjach internetowych, a nawet w innych chmurach publicznych.
Aby odbierać, przechowywać i eksplorować dane monitorowania, dołącz zestaw SDK do kodu. Następnie skonfiguruj odpowiedni zasób usługi Application Insights na platformie Azure. Zestaw SDK wysyła dane do zasobu do dalszej analizy i eksploracji.
Biblioteka klienta Node.js może automatycznie monitorować przychodzące i wychodzące żądania HTTP, wyjątki i niektóre metryki systemowe. Począwszy od wersji 0.20, biblioteka kliencka może również monitorować niektóre typowe pakiety innych firm, takie jak MongoDB, MySQL i Redis.
Wszystkie zdarzenia związane z przychodzącym żądaniem HTTP są skorelowane, aby zapewnić szybsze rozwiązanie problemów.
Interfejs API TelemetryClient umożliwia ręczne instrumentowanie i monitorowanie większej liczby aspektów aplikacji i systemu. Interfejs API TelemetryClient został szczegółowo opisany w dalszej części tego artykułu.
Uwaga
Zalecamy Azure Monitor OpenTelemetry Distro dla nowych aplikacji lub klientów, aby zasilić Azure Monitor Application Insights. Dystrybucja OpenTelemetry dla Azure Monitor zapewnia podobną funkcjonalność i środowisko co zestaw SDK usługi Application Insights. Migracja z zestawu SDK usługi Application Insights jest możliwa przy użyciu przewodników migracji dla platformy .NET, Node.js i języka Python, ale nadal pracujemy nad dodaniem kilku dodatkowych funkcji w celu zapewnienia zgodności z poprzednimi wersjami.
Rozpocznij
Wykonaj następujące zadania w celu skonfigurowania monitorowania aplikacji lub usługi.
Wymagania wstępne
Przed rozpoczęciem upewnij się, że masz subskrypcję platformy Azure, lub bezpłatnie uzyskaj nową. Jeśli Twoja organizacja ma już subskrypcję platformy Azure, administrator może dodać Cię do niej, wykonując te instrukcje.
Konfigurowanie zasobu usługi Application Insights
- Zaloguj się w witrynie Azure Portal.
- Utwórz zasób usługi Application Insights.
Uwaga
31 marca 2025 r. zostanie zakończone świadczenie pomocy technicznej dla pozyskiwania klucza instrumentacji. Pobieranie klucza instrumentacji będzie nadal działać, ale nie będziemy już udostępniać aktualizacji ani obsługi tej funkcji. Przejście do ciągów połączenia w celu skorzystania z nowych funkcji.
Konfigurowanie biblioteki klienta Node.js
Uwzględnij zestaw SDK w aplikacji, aby mógł zbierać dane.
Skopiuj parametry połączenia zasobu z nowego zasobu. Usługa Application Insights używa ciągu połączenia do mapowania danych do zasobu platformy Azure. Aby zestaw SDK mógł używać parametry połączenia, należy określić parametry połączenia w zmiennej środowiskowej lub w kodzie.
Dodaj bibliotekę klienta Node.js do zależności aplikacji za pomocą polecenia
package.json
. Z folderu głównego Twojej aplikacji uruchom polecenie:npm install applicationinsights --save
Uwaga
Jeśli używasz języka TypeScript, nie instaluj oddzielnych pakietów "typings". Ten pakiet NPM zawiera wbudowane definicje typów.
Wyraźnie załaduj bibliotekę w swoim kodzie. Ponieważ zestaw SDK wprowadza instrumentację do wielu innych bibliotek, załaduj go możliwie jak najszybciej, nawet przed innymi instrukcjami
require
.let appInsights = require('applicationinsights');
Można również podać parametry połączenia za pomocą zmiennej środowiskowej
APPLICATIONINSIGHTS_CONNECTION_STRING
, zamiast przekazywać ją ręcznie dosetup()
lubnew appInsights.TelemetryClient()
. Ta praktyka pozwala zachować parametry połączenia poza zatwierdzonym kodem źródłowym i można określić różne parametry połączenia dla różnych środowisk. Aby ręcznie skonfigurować, wywołaj metodęappInsights.setup('[your connection string]');
.Aby uzyskać więcej opcji konfiguracji, zobacz następujące sekcje.
Zestaw SDK możesz wypróbować bez wysyłania danych telemetrycznych przez ustawienie elementu
appInsights.defaultClient.config.disableAppInsights = true
.Rozpocznij automatyczne zbieranie i wysyłanie danych przez wywołanie metody
appInsights.start();
.
Uwaga
W ramach instrumentacji usługi Application Insights zbieramy i wysyłamy dane diagnostyczne do firmy Microsoft. Te dane pomagają nam uruchamiać i ulepszać usługę Application Insights. Istnieje możliwość wyłączenia zbierania danych innych niż podstawowe. Dowiedz się więcej.
Monitorowanie aplikacji
Zestaw SDK automatycznie zbiera dane telemetryczne dotyczące środowiska uruchomieniowego Node.js i niektórych typowych modułów innych firm. Użyj swojej aplikacji, aby wygenerować niektóre z tych danych.
Następnie w witrynie Azure Portal przejdź do usługi Application Insights i otwórz utworzony zasób. W sekcji Podgląd na osi czasu, znajdź kilka pierwszych punktów danych. Aby wyświetlić bardziej szczegółowe dane, wybierz inne składniki wykresów.
Aby wyświetlić topologię odnalezioną dla aplikacji, możesz użyć mapy aplikacji.
Brak danych
Ponieważ SDK grupuje dane do przesłania, może wystąpić opóźnienie, zanim pozycje pojawią się w portalu. Jeśli nie widzisz danych w swoim zasobie, wypróbuj następujące sposoby:
- Kontynuuj korzystanie z aplikacji. Wykonaj więcej akcji, aby wygenerować więcej telemetrii.
- Wybierz pozycję Odśwież w widoku zasobów portalu. Wykresy są odświeżane samoczynnie w regularnych odstępach czasu, ale ręczne odświeżenie wymusza ich natychmiastowe zaktualizowanie.
- Upewnij się, że wymagane porty wychodzące zostały otwarte.
- Użyj pozycji Wyszukaj, aby znaleźć określone zdarzenia.
- Zapoznaj się z sekcją Często zadawane pytania.
Podstawowy sposób użycia
W przypadku gotowej do użycia kolekcji żądań HTTP, popularnych zdarzeń bibliotek zewnętrznych, nieobsługiwanych wyjątków i metryk systemowych:
let appInsights = require("applicationinsights");
appInsights.setup("[your connection string]").start();
Uwaga
Jeśli parametr połączenia jest ustawiony w zmiennej środowiskowej APPLICATIONINSIGHTS_CONNECTION_STRING
, .setup()
można wywołać bez argumentów. Ułatwia to korzystanie z różnych parametry połączenia w różnych środowiskach.
Załaduj bibliotekę usługi Application Insights require("applicationinsights")
tak szybko, jak to możliwe, przed załadowaniem innych pakietów. Ten krok jest potrzebny, aby biblioteka usługi Application Insights mogła przygotować później pakiety do śledzenia. Jeśli wystąpią konflikty z innymi bibliotekami wykonującymi podobne przygotowania, spróbuj załadować bibliotekę Application Insights później.
Ze względu na sposób, w jaki język JavaScript obsługuje wywołania zwrotne, konieczna jest większa praca w celu śledzenia żądania między zależnościami zewnętrznymi i późniejszymi wywołaniami zwrotnymi. Domyślnie to dodatkowe śledzenie jest włączone. Wyłącz tę funkcję, wywołując wywołanie setAutoDependencyCorrelation(false)
zgodnie z opisem w sekcji konfiguracji zestawu SDK.
Migrowanie z wersji wcześniejszych do wersji 0.22
Istnieją zmiany powodujące niezgodność między wydaniami przed wersją 0.22 a wydaniami po niej. Te zmiany zostały zaprojektowane tak, aby zapewnić spójność z innymi zestawami SDK usługi Application Insights i umożliwiają rozszerzanie w przyszłości.
Ogólnie rzecz biorąc, można przeprowadzić migrację przy użyciu następujących akcji:
- Zastąp odwołania do
appInsights.client
naappInsights.defaultClient
. - Zastąp odwołania do
appInsights.getClient()
nanew appInsights.TelemetryClient()
. - Zastąp wszystkie argumenty metod client.track* pojedynczym obiektem zawierającym nazwane właściwości jako argumenty. Zobacz wbudowane wskazówki dotyczące typu środowiska IDE lub TelemetryTypes dla obiektu z wyjątkiem dla każdego typu telemetrii.
Jeśli uzyskujesz dostęp do funkcji konfiguracji SDK bez łączenia ich z appInsights.setup()
, możesz teraz znaleźć te funkcje w appInsights.Configurations
. Może to być na przykład appInsights.Configuration.setAutoCollectDependencies(true)
. Przejrzyj zmiany konfiguracji domyślnej w następnej sekcji.
Konfiguracja zestawu SDK
Obiekt appInsights
udostępnia wiele metod konfiguracji. Są one wymienione w poniższym fragmencie kodu z ich wartościami domyślnymi.
let appInsights = require("applicationinsights");
appInsights.setup("<connection_string>")
.setAutoDependencyCorrelation(true)
.setAutoCollectRequests(true)
.setAutoCollectPerformance(true, true)
.setAutoCollectExceptions(true)
.setAutoCollectDependencies(true)
.setAutoCollectConsole(true)
.setUseDiskRetryCaching(true)
.setSendLiveMetrics(false)
.setDistributedTracingMode(appInsights.DistributedTracingModes.AI)
.start();
Aby w pełni skorelować zdarzenia w usłudze, należy ustawić parametr .setAutoDependencyCorrelation(true)
. Po ustawieniu tej opcji zestaw SDK może śledzić kontekst między asynchronicznymi wywołaniami zwrotnymi w środowisku Node.js.
Przejrzyj ich opisy we wbudowanych podpowiedziach typu IDE lub applicationinsights.ts, aby uzyskać szczegółowe informacje i opcjonalne dodatkowe argumenty.
Uwaga
Domyślnie setAutoCollectConsole
jest skonfigurowany do wykluczania wywołań do console.log
i innych metod konsoli. Zbierane będą tylko wywołania obsługiwanych loggerów innych firm (na przykład winston i bunyan). To zachowanie można zmienić tak, aby uwzględniało wywołania metod console
przy użyciu polecenia setAutoCollectConsole(true, true)
.
Próbkowanie
Domyślnie zestaw SDK wysyła wszystkie zebrane dane do usługi Application Insights. Jeśli chcesz włączyć próbkowanie, aby zmniejszyć ilość danych, ustaw samplingPercentage
pole na config
obiekcie klienta. Ustawienie samplingPercentage
wartości 100 (wartość domyślna) oznacza, że wszystkie dane zostaną wysłane, a 0 oznacza, że nic nie zostanie wysłane.
Jeśli używasz automatycznej korelacji, wszystkie dane skojarzone z pojedynczym żądaniem są dołączane lub wykluczane jako jednostka.
Dodaj kod, jak poniższy, aby włączyć próbkowanie.
const appInsights = require("applicationinsights");
appInsights.setup("<connection_string>");
appInsights.defaultClient.config.samplingPercentage = 33; // 33% of all telemetry will be sent to Application Insights
appInsights.start();
Wiele ról dla aplikacji wieloskładnikowych
W niektórych scenariuszach aplikacja może składać się z wielu składników, które chcesz monitorować przy użyciu tego samego ciągu połączenia. Chcesz nadal widzieć te składniki jako oddzielne jednostki w portalu, tak jakby używały oddzielnych ciągów połączeń. Przykładem są oddzielne węzły na mapie aplikacji. Należy ręcznie skonfigurować RoleName
pole, aby odróżnić dane telemetryczne jednego składnika od innych składników, które wysyłają dane do zasobu usługi Application Insights.
Użyj następującego kodu, aby ustawić RoleName
pole:
const appInsights = require("applicationinsights");
appInsights.setup("<connection_string>");
appInsights.defaultClient.context.tags[appInsights.defaultClient.context.keys.cloudRole] = "MyRoleName";
appInsights.start();
Program ładujący SDK dla przeglądarki
Uwaga
Dostępna jako publiczna wersja zapoznawcza. Dodatkowe warunki użytkowania dotyczące wersji zapoznawczych platformy Microsoft Azure
Automatyczną instrumentację internetową można włączyć dla serwera Node.js za pomocą skryptu ładującego SDK JavaScript (Web) przez konfigurację.
let appInsights = require("applicationinsights");
appInsights.setup("<connection_string>")
.enableWebInstrumentation(true)
.start();
lub przez ustawienie zmiennej środowiskowej APPLICATIONINSIGHTS_WEB_INSTRUMENTATION_ENABLED = true
.
Instrumentacja sieci web jest włączona w odpowiedziach serwera węzła, gdy są spełnione wszystkie poniższe wymagania.
- Odpowiedź ma kod stanu
200
. - Metoda odpowiedzi to
GET
. - Odpowiedź serwera zawiera
Content-Type
kod HTML. - Odpowiedź serwera zawiera tagi
<head>
i</head>
. - Jeśli odpowiedź jest skompresowana, musi mieć tylko jeden typ
Content-Encoding
, a typ kodowania musi być jednym zgzip
,br
lubdeflate
. - Odpowiedź nie zawiera aktualnych ani zapasowych internetowych punktów końcowych usługi CDN instrumentacji. (bieżące i zapasowe punkty końcowe CDN tutaj)
Punkt końcowy usługi CDN instrumentacji internetowej można zmienić, ustawiając zmienną środowiskową APPLICATIONINSIGHTS_WEB_INSTRUMENTATION_SOURCE = "web Instrumentation CDN endpoints"
.
Parametry połączenia instrumentacji sieci Web można zmienić, ustawiając zmienną środowiskowąAPPLICATIONINSIGHTS_WEB_INSTRUMENTATION_CONNECTION_STRING = "web Instrumentation connection string"
Uwaga
Instrumentacja sieci Web może spowolnić czas odpowiedzi serwera, zwłaszcza gdy rozmiar odpowiedzi jest duży lub odpowiedź jest kompresowana. W przypadku zastosowania niektórych warstw pośrednich może to spowodować, że instrumentacja webowa nie będzie działać i oryginalna odpowiedź zostanie zwrócona.
Automatyczna instrumentacja firm zewnętrznych
Aby śledzić kontekst między wywołaniami asynchronicznymi, niektóre zmiany są wymagane w bibliotekach innych firm, takich jak MongoDB i Redis. Domyślnie usługa Application Insights używa diagnostic-channel-publishers
funkcji monkey-patch niektórych z tych bibliotek. Tę funkcję można wyłączyć, ustawiając zmienną APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL
środowiskową.
Uwaga
Ustawiając tę zmienną środowiskową, zdarzenia mogą nie być poprawnie skojarzone z właściwą operacją.
Poszczególne poprawki małpy można wyłączyć, ustawiając APPLICATION_INSIGHTS_NO_PATCH_MODULES
zmienną środowiskową na rozdzielaną przecinkami listę pakietów do wyłączenia. Na przykład użyj APPLICATION_INSIGHTS_NO_PATCH_MODULES=console,redis
, aby uniknąć stosowania poprawek do pakietów console
i redis
.
Obecnie instrumentowane są dziewięć pakietów: bunyan
, console
, mongodb
, mongodb-core
, mysql
, redis
, winston
, pg
i pg-pool
. Aby uzyskać informacje o tym, które wersje tych pakietów są załatane, zobacz plik README diagnostic-channel-publishers.
Poprawki bunyan
, winston
i console
generują zdarzenia śledzenia usługi Application Insights na podstawie tego, czy setAutoCollectConsole
jest włączona. Pozostałe elementy generują zdarzenia zależnościowe usługi Application Insights na podstawie tego, czy setAutoCollectDependencies
jest aktywowane.
Metryki na żywo
Aby włączyć wysyłanie metryk na żywo z aplikacji do platformy Azure, użyj polecenia setSendLiveMetrics(true)
. Obecnie filtrowanie metryk na żywo w portalu nie jest obsługiwane.
Metryki rozszerzone
Uwaga
Możliwość wysyłania rozszerzonych metryk natywnych została dodana w wersji 1.4.0.
Aby włączyć wysyłanie rozszerzonych metryk natywnych z aplikacji do platformy Azure, zainstaluj oddzielny pakiet metryk natywnych. Zestaw SDK jest ładowany automatycznie po zainstalowaniu i rozpoczęciu zbierania Node.js metryk natywnych.
npm install applicationinsights-native-metrics
Obecnie pakiet metryk natywnych wykonuje automatyczne monitorowanie czasu procesora używanego przez zbieranie śmieci, tyków pętli zdarzeń oraz użycia sterty.
- Kolekcja śmieci: czas procesora CPU spędzony na każdym typie kolekcji śmieci oraz liczba wystąpień każdego typu.
- Pętla zdarzeń: ile razy się wykonała i ile czasu CPU zużyto w sumie.
- Sterta a nie-sterta: ile użycia pamięci aplikacji znajduje się w stercie lub w obszarze pamięci innym niż sterta.
Tryby śledzenia rozproszonego
Domyślnie zestaw SDK wysyła nagłówki zrozumiałe dla innych aplikacji lub usług zintegrowanych z zestawem SDK usługi Application Insights. Można włączyć wysyłanie i odbieranie nagłówków kontekstu śledzenia W3C oprócz istniejących nagłówków AI. W ten sposób nie zostanie przerwana korelacja z żadnymi istniejącymi starszymi usługami. Włączenie nagłówków W3C umożliwia aplikacji skorelowanie z innymi usługami, które nie są instrumentowane za pomocą usługi Application Insights, ale przyjmują ten standard W3C.
const appInsights = require("applicationinsights");
appInsights
.setup("<your connection string>")
.setDistributedTracingMode(appInsights.DistributedTracingModes.AI_AND_W3C)
.start()
Interfejs API TelemetryClient
Pełny opis interfejsu API TelemetryClient można znaleźć w temacie Application Insights API for custom events and metrics (Interfejs API usługi Application Insights na potrzeby metryk i zdarzeń niestandardowych).
Dowolne żądanie, zdarzenie, metryka lub wyjątek można śledzić przy użyciu biblioteki klienta usługi Application Insights dla Node.js. W poniższym przykładzie kodu pokazano niektóre z interfejsów API, których możesz użyć:
let appInsights = require("applicationinsights");
appInsights.setup().start(); // assuming connection string in env var. start() can be omitted to disable any non-custom data
let client = appInsights.defaultClient;
client.trackEvent({name: "my custom event", properties: {customProperty: "custom property value"}});
client.trackException({exception: new Error("handled exceptions can be logged with this method")});
client.trackMetric({name: "custom metric", value: 3});
client.trackTrace({message: "trace message"});
client.trackDependency({target:"http://dbname", name:"select customers proc", data:"SELECT * FROM Customers", duration:231, resultCode:0, success: true, dependencyTypeName: "ZSQL"});
client.trackRequest({name:"GET /customers", url:"http://myserver/customers", duration:309, resultCode:200, success:true});
let http = require("http");
http.createServer( (req, res) => {
client.trackNodeHttpRequest({request: req, response: res}); // Place at the beginning of your request handler
});
Śledzenie zależności
Aby śledzić zależności, użyj następującego kodu:
let appInsights = require("applicationinsights");
let client = new appInsights.TelemetryClient();
var success = false;
let startTime = Date.now();
// execute dependency call here....
let duration = Date.now() - startTime;
success = true;
client.trackDependency({target:"http://dbname", name:"select customers proc", data:"SELECT * FROM Customers", duration:duration, resultCode:0, success: true, dependencyTypeName: "ZSQL"});;
Przykładowe narzędzie korzystające z trackMetric
do mierzenia czasu planowania pętli zdarzeń.
function startMeasuringEventLoop() {
var startTime = process.hrtime();
var sampleSum = 0;
var sampleCount = 0;
// Measure event loop scheduling delay
setInterval(() => {
var elapsed = process.hrtime(startTime);
startTime = process.hrtime();
sampleSum += elapsed[0] * 1e9 + elapsed[1];
sampleCount++;
}, 0);
// Report custom metric every second
setInterval(() => {
var samples = sampleSum;
var count = sampleCount;
sampleSum = 0;
sampleCount = 0;
if (count > 0) {
var avgNs = samples / count;
var avgMs = Math.round(avgNs / 1e6);
client.trackMetric({name: "Event Loop Delay", value: avgMs});
}
}, 1000);
}
Dodawanie właściwości niestandardowych do wszystkich zdarzeń
Aby dodać właściwość niestandardową do wszystkich zdarzeń, użyj następującego kodu:
appInsights.defaultClient.commonProperties = {
environment: process.env.SOME_ENV_VARIABLE
};
Śledzenie żądań HTTP GET
Użyj następującego kodu, aby ręcznie śledzić żądania HTTP GET:
Uwaga
- Wszystkie żądania domyślnie się śledzi. Aby wyłączyć automatyczne zbieranie danych, wywołaj
.setAutoCollectRequests(false)
przed wywołaniemstart()
. - Natywne żądania fetch API nie są automatycznie śledzone przez klasyczne rozwiązanie Application Insights; wymagają ręcznego śledzenia zależności.
appInsights.defaultClient.trackRequest({name:"GET /customers", url:"http://myserver/customers", duration:309, resultCode:200, success:true});
Alternatywnie możesz śledzić żądania przy użyciu trackNodeHttpRequest
metody :
var server = http.createServer((req, res) => {
if ( req.method === "GET" ) {
appInsights.defaultClient.trackNodeHttpRequest({request:req, response:res});
}
// other work here....
res.end();
});
Śledzenie czasu uruchamiania serwera
Aby śledzić czas uruchamiania serwera, użyj poniższego kodu:
let start = Date.now();
server.on("listening", () => {
let duration = Date.now() - start;
appInsights.defaultClient.trackMetric({name: "server startup time", value: duration});
});
Spłukać
Domyślnie dane telemetryczne są buforowane przez 15 sekund przed ich wysłaniem do serwera zbierania danych. Jeśli aplikacja ma krótki czas działania, taką jak narzędzie CLI, może być konieczne ręczne wyczyszczenie buforowanej telemetrii przy jej zakończeniu przy użyciu polecenia appInsights.defaultClient.flush()
.
Jeśli zestaw SDK wykryje, że aplikacja crashuje, wywołuje funkcję flush przy użyciu polecenia appInsights.defaultClient.flush({ isAppCrashing: true })
. W przypadku opcji isAppCrashing
opróżniania przyjmuje się, że aplikacja jest w stanie nietypowym i nie jest odpowiednia do wysyłania danych telemetrycznych. Zamiast tego zestaw SDK zapisuje wszystkie buforowane dane telemetryczne do magazynu trwałego i umożliwia zakończenie działania aplikacji. Gdy aplikacja zostanie uruchomiona ponownie, spróbuje wysłać wszelkie dane telemetryczne zapisane w magazynie trwałym.
Wstępne przetwarzanie danych za pomocą procesorów telemetrycznych
Zebrane dane można przetwarzać i filtrować przed wysłaniem ich do przechowywania przy użyciu procesorów telemetrycznych. Procesory telemetryczne są wywoływane pojedynczo w kolejności, w której zostały dodane przed wysłaniem elementu telemetrii do chmury.
public addTelemetryProcessor(telemetryProcessor: (envelope: Contracts.Envelope, context: { http.RequestOptions, http.ClientRequest, http.ClientResponse, correlationContext }) => boolean)
Jeśli procesor telemetrii zwróci wartość false
, ten element telemetrii nie jest wysyłany.
Wszystkie procesory telemetryczne odbierają dane telemetryczne i jego kopertę w celu sprawdzenia i zmodyfikowania. Otrzymują również obiekt kontekstu. Zawartość tego obiektu jest definiowana przez parametr contextObjects
podczas wywoływania metody track w przypadku ręcznie śledzonej telemetrii. W przypadku automatycznie zebranych danych telemetrycznych ten obiekt jest wypełniany dostępnymi informacjami o żądaniu oraz trwałą zawartością żądania, jak dostarczono przez appInsights.getCorrelationContext()
(jeśli włączono automatyczną korelację zależności).
TypeScript dla procesora telemetrii to:
telemetryProcessor: (envelope: ContractsModule.Contracts.Envelope, context: { http.RequestOptions, http.ClientRequest, http.ClientResponse, correlationContext }) => boolean;
Na przykład procesor, który usuwa dane śledzenia stosów z wyjątków, może zostać zapisany i dodany w następujący sposób:
function removeStackTraces ( envelope, context ) {
if (envelope.data.baseType === "Microsoft.ApplicationInsights.ExceptionData") {
var data = envelope.data.baseData;
if (data.exceptions && data.exceptions.length > 0) {
for (var i = 0; i < data.exceptions.length; i++) {
var exception = data.exceptions[i];
exception.parsedStack = null;
exception.hasFullStack = false;
}
}
}
return true;
}
appInsights.defaultClient.addTelemetryProcessor(removeStackTraces);
Używanie wielu parametry połączenia
Możesz utworzyć wiele zasobów usługi Application Insights i wysłać różne dane do każdego przy użyciu odpowiednich parametry połączenia.
Na przykład:
let appInsights = require("applicationinsights");
// configure auto-collection under one connection string
appInsights.setup("Connection String A").start();
// track some events manually under another connection string
let otherClient = new appInsights.TelemetryClient("Connection String B");
otherClient.trackEvent({name: "my custom event"});
Zaawansowane opcje konfiguracji
Obiekt klienta zawiera config
właściwość z wieloma opcjonalnymi ustawieniami dla zaawansowanych scenariuszy. Aby je ustawić, użyj:
client.config.PROPERTYNAME = VALUE;
Te właściwości są specyficzne dla klienta, więc można skonfigurować appInsights.defaultClient
oddzielnie od klientów utworzonych za pomocą new appInsights.TelemetryClient()
programu .
Nieruchomość | Opis |
---|---|
Parametry połączenia | Identyfikator zasobu usługi Application Insights. |
endpointUrl | Punkt końcowy pozyskiwania do wysyłania ładunków telemetrii do. |
quickPulseHost | Host strumienia metryk na żywo do wysyłania telemetrii na żywo. |
proxyHttpUrl | Serwer proxy dla ruchu HTTP SDK. (Opcjonalnie. Wartość domyślna jest pobierana ze http_proxy zmiennej środowiskowej). |
proxyHttpsUrl | Serwer proxy do obsługi ruchu HTTPS dla zestawu SDK. (Opcjonalnie. Wartość domyślna jest pobierana ze https_proxy zmiennej środowiskowej). |
httpAgent | Agent HTTP do używania dla ruchu HTTP w SDK. (Opcjonalnie. Wartość domyślna jest niezdefiniowana). |
httpsAgent | Https. Agent do użycia na potrzeby ruchu HTTPS zestawu SDK. (Opcjonalnie. Wartość domyślna jest niezdefiniowana). |
maxBatchSize | Maksymalna liczba elementów telemetrii do uwzględnienia w pakiecie do końcowego punktu odbioru danych. (Wartość domyślna to 250 .) |
maxBatchIntervalMs | Maksymalny czas oczekiwania na ładunek, aby osiągnąć wartość maxBatchSize. (Wartość domyślna to 15000 .) |
wyłączAppInsights | Flaga wskazująca, czy transmisja danych telemetrycznych jest wyłączona. (Wartość domyślna to false .) |
procent próbkowania | Procent śledzonych elementów telemetrii, które powinny być przesyłane. (Wartość domyślna to 100 .) |
correlationIdInterwałPonownejPróbyMs | Czas oczekiwania przed ponowną próbą pobrania identyfikatora korelacji między składnikami. (Wartość domyślna to 30000 .) |
nagłówkiKorelacyjneWykluczoneDomeny | Lista domen do wykluczenia z iniekcji nagłówków korelacyjnych między komponentami. (Ustawienie domyślne. Zobacz Config.ts. |
Często zadawane pytania
Jak wyłączyć korelację telemetrii?
Aby wyłączyć korelację telemetrii, użyj właściwości correlationHeaderExcludedDomains
w konfiguracji. Aby uzyskać więcej informacji, zobacz ApplicationInsights-node.js.
Jak skonfigurować żądany poziom dziennika?
Aby skonfigurować żądany poziom dziennika używany przez usługę Application Insights, użyj zmiennej środowiskowej APPLICATIONINSIGHTS_INSTRUMENTATION_LOGGING_LEVEL
.
Obsługiwane wartości to NONE, ERROR, WARN, INFO, DEBUG, VERBOSE i ALL.
Aby uzyskać więcej informacji, zobacz ApplicationInsights-node.js.
Rozwiązywanie problemów
Aby uzyskać informacje dotyczące rozwiązywania problemów, w tym scenariusze "brak danych" i personalizowanie dzienników, zobacz Rozwiązywanie problemów z monitorowaniem aplikacji i usług Node.js w usłudze Application Insights.