Udostępnij za pośrednictwem


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

  1. Zaloguj się w witrynie Azure Portal.
  2. 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.

  1. 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.

    Zrzut ekranu przedstawiający przegląd usługi Application Insights i parametry połączenia.

  2. 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.

  3. 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');
    
  4. Można również podać parametry połączenia za pomocą zmiennej środowiskowej APPLICATIONINSIGHTS_CONNECTION_STRING, zamiast przekazywać ją ręcznie do setup() lub new 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.

  5. 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

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 200stanu .
  • 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 z gzipelementów lub br 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,,,mongodbmongodb-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, winstoni 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 isAppCrashingopróż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 falsewartość , 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.

Następne kroki