Monitorowanie usług i aplikacji Node.js za pomocą usługi Application Insights
Usługa Application Insights monitoruje składniki po wdrożeniu, aby wykryć wydajność i inne problemy. Usługi Application Insights można używać do Node.js usług hostowanych w centrum danych, maszynach wirtualnych platformy Azure i 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 na potrzeby przyszłej 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 dystrybucję OpenTelemetry usługi Azure Monitor dla nowych aplikacji lub klientów, aby umożliwić usłudze Azure Monitor Application Insights. Dystrybucja OpenTelemetry usługi Azure Monitor zapewnia podobną funkcjonalność i środowisko jako 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. Pozyskiwanie klucza instrumentacji będzie nadal działać, ale nie udostępnimy już aktualizacji ani obsługi funkcji. Przejście do parametry 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 parametry połączenia do mapowania danych na zasób 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
. W folderze głównym 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.
Jawnie załaduj bibliotekę w 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 obszarze Oś czasu przeglądu wyszukaj 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ż zestaw SDK wsaduje dane do przesłania, może wystąpić opóźnienie, zanim elementy 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ą okresowo odświeżane samoczynnie, ale odświeżanie ręczne jest wykonywane od razu.
- 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 kolekcji żądań HTTP popularne zdarzenia bibliotek innych firm, nieobsługiwane wyjątki i metryki systemowe:
let appInsights = require("applicationinsights");
appInsights.setup("[your connection string]").start();
Uwaga
Jeśli parametry połączenia jest ustawiona 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ę require("applicationinsights")
usługi Application Insights 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 później załadować bibliotekę usługi Application Insights.
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 w wersji 0.22 i nowszej. 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 wartości
appInsights.client
.appInsights.defaultClient
- Zastąp odwołania do wartości
appInsights.getClient()
.new 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 zestawu SDK bez łączenia ich w łańcuch do appInsights.setup()
elementu , możesz teraz znaleźć te funkcje pod adresem 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 wbudowanym podpowiedzi typu środowiska IDE lub applicationinsights.ts , aby uzyskać szczegółowe informacje i opcjonalne argumenty pomocnicze.
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 rejestratoró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, taki jak następujące polecenie, 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 instrumentować przy użyciu tych samych parametry połączenia. Te składniki są nadal widoczne jako oddzielne jednostki w portalu, tak jakby używały oddzielnych parametry połączenia. 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();
Moduł ładujący zestawu SDK przeglądarki
Uwaga
Dostępna jako publiczna wersja zapoznawcza. Dodatkowe warunki użytkowania dotyczące wersji zapoznawczych platformy Microsoft Azure
Automatyczne instrumentację internetową można włączyć dla serwera węzłów za pomocą skryptu modułu ładującego zestawu SDK języka 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łów, gdy spełnione są wszystkie następujące wymagania:
- Odpowiedź ma kod
200
stanu . - Metoda odpowiedzi to
GET
. - Odpowiedź serwera ma
Content-Type
kod HTML. - Odpowiedź serwera zawiera tagi
<head>
i</head>
. - Jeśli odpowiedź jest skompresowana, musi mieć tylko jeden
Content-Encoding
typ, a typ kodowania musi być jednym zgzip
elementów lubbr
deflate
. - Odpowiedź nie zawiera bieżących /kopii zapasowych internetowych punktów końcowych usługi CDN instrumentacji. (bieżące i tworzenie kopii zapasowych punktów końcowych usługi CDN w sieci Web)
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 środkowych może to spowodować, że instrumentacja sieci Web nie działa i zostanie zwrócona oryginalna odpowiedź.
Automatyczne instrumentacja innych firm
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 polecenia APPLICATION_INSIGHTS_NO_PATCH_MODULES=console,redis
, aby uniknąć stosowania poprawek do console
pakietów i redis
.
Obecnie instrumentowane są dziewięć pakietów: bunyan
,,,mongodb
mongodb-core
,mysql
,redis
,,winston
,pg
i pg-pool
.console
Aby uzyskać informacje o dokładnie tej wersji tych pakietów, zobacz PLIK README firmy diagnostic-channel-publishers.
Poprawki bunyan
, winston
i console
generują zdarzenia śledzenia usługi Application Insights na podstawie tego, czy setAutoCollectConsole
jest włączona. Reszta generuje zdarzenia zależności usługi Application Insights na podstawie tego, czy setAutoCollectDependencies
jest włączona.
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 zbieranie pamięci czasu procesora CPU, znaczniki pętli zdarzeń i użycie sterty:
- Odzyskiwanie pamięci: ilość czasu procesora CPU spędzonego na każdym typie odzyskiwania pamięci oraz liczbę wystąpień każdego typu.
- Pętla zdarzeń: ile znaczników wystąpiło i ile czasu procesora CPU spędził w sumie.
- Sterta a nie sterta: ile użycia pamięci aplikacji znajduje się w stercie lub stosie innym niż sterta.
Tryby śledzenia rozproszonego
Domyślnie zestaw SDK wysyła nagłówki zrozumiałe dla innych aplikacji lub usług instrumentowanych za pomocą zestawu SDK usługi Application Insights. Oprócz istniejących nagłówków AI można włączyć wysyłanie i odbieranie nagłówków kontekstu śledzenia W3C. 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 służące 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 są domyślnie śledzone. Aby wyłączyć automatyczną kolekcję, przed wywołaniem metody wywołaj metodę
.setAutoCollectRequests(false)
start()
. - Natywne żądania interfejsu API pobierania nie są automatycznie śledzone przez klasyczną usługę Application Insights; wymagane jest ręczne śledzenie 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 wysłaniem ich do serwera pozyskiwania. Jeśli aplikacja ma krótką żywotność, taką jak narzędzie interfejsu wiersza polecenia, może być konieczne ręczne opróżnienie buforowanej telemetrii po zakończeniu działania aplikacji przy użyciu polecenia appInsights.defaultClient.flush()
.
Jeśli zestaw SDK wykryje, że aplikacja ulega awarii, wywołuje funkcję opróżniania 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 false
wartość , 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 contextObjects
parametr podczas wywoływania metody track dla ręcznie śledzonej telemetrii. W przypadku automatycznie zebranych danych telemetrycznych ten obiekt jest wypełniony dostępnymi informacjami o żądaniu i zawartością żądania trwałego zgodnie z informacjami podanymi przez appInsights.getCorrelationContext()
program (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 .
Właściwości | 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 metryk na żywo do. |
proxyHttpUrl | Serwer proxy dla ruchu HTTP zestawu SDK. (Opcjonalnie. Wartość domyślna jest pobierana ze http_proxy zmiennej środowiskowej). |
proxyHttpsUrl | Serwer proxy dla ruchu HTTPS zestawu SDK. (Opcjonalnie. Wartość domyślna jest pobierana ze https_proxy zmiennej środowiskowej). |
httpAgent | Http. Agent do użycia na potrzeby ruchu HTTP zestawu 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 ładunku do punktu końcowego pozyskiwania. (Wartość domyślna to 250 .) |
maxBatchIntervalMs | Maksymalny czas oczekiwania na ładunek, aby osiągnąć wartość maxBatchSize. (Wartość domyślna to 15000 .) |
disableAppInsights | Flaga wskazująca, czy transmisja danych telemetrycznych jest wyłączona. (Wartość domyślna to false .) |
samplingPercentage | Procent śledzonych elementów telemetrii, które powinny być przesyłane. (Wartość domyślna to 100 .) |
correlationIdRetryIntervalMs | Czas oczekiwania przed ponowną próbą pobrania identyfikatora korelacji między składnikami. (Wartość domyślna to 30000 .) |
correlationHeaderExcludedDomains | Lista domen do wykluczenia z iniekcji nagłówka korelacji między składnikami. (Ustawienie domyślne. Zobacz Config.ts. |
Często zadawane pytania
Jak wyłączyć korelację telemetrii?
Aby wyłączyć korelację telemetrii, użyj correlationHeaderExcludedDomains
właściwości w konfiguracji. 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 dostosowywanie dzienników, zobacz Rozwiązywanie problemów z monitorowaniem usługi Application Insights Node.js aplikacji i usług.