Aracılığıyla paylaş


Application Insights ile Node.js hizmetlerinizi ve uygulamalarınızı izleme

Application Insights , performansı ve diğer sorunları keşfetmek için dağıtımdan sonra bileşenlerinizi izler. Application Insights'ı veri merkezinizde, Azure VM'lerinizde ve web uygulamalarınızda ve hatta diğer genel bulutlarda barındırılan Node.js hizmetleri için kullanabilirsiniz.

İzleme verilerinizi almak, depolamak ve incelemek için SDK'yı kodunuzla birlikte ekleyin. Ardından Azure'da ilgili Application Insights kaynağını ayarlayın. SDK daha fazla analiz ve araştırma için verileri bu kaynağa gönderir.

Node.js istemci kitaplığı, gelen ve giden HTTP isteklerini, özel durumları ve bazı sistem ölçümlerini otomatik olarak izleyebilir. 0.20 sürümünden itibaren istemci kitaplığı MongoDB, MySQL ve Redis gibi bazı yaygın üçüncü taraf paketlerini de izleyebilir.

Gelen bir HTTP isteği ile ilgili tüm olaylar, daha hızlı sorun giderme için birbiriyle ilişkilendirilir.

TelemetryClient API'sini kullanarak uygulamanızın ve sisteminizin daha fazla yönünü el ile izleyebilir ve izleyebilirsiniz. TelemetryClient API'si bu makalenin ilerleyen bölümlerinde ayrıntılı bir şekilde anlatılmıştır.

Not

Aşağıdaki belgeler Application Insights klasik API'sine dayanır. Application Insights için uzun vadeli plan, OpenTelemetry kullanarak veri toplamaktır. Daha fazla bilgi için bkz . .NET, Node.js, Python ve Java uygulamaları için Azure İzleyici OpenTelemetry'yi etkinleştirme ve OpenTelemetry Yol Haritamız. Geçiş kılavuzu .NET, Node.js ve Python için kullanılabilir.

Kullanmaya başlayın

Bir uygulama veya hizmet için izlemeyi ayarlamak üzere aşağıdaki görevleri tamamlayın.

Önkoşullar

Başlamadan önce, bir Azure aboneliğine sahip olduğunuzdan emin olun veya ücretsiz olarak yeni bir tane edinin. Kuruluşunuzun bir Azure aboneliğini zaten varsa, yöneticiniz bu yönergeleri izleyerek sizi aboneliğe ekleyebilir.

Application Insights kaynağını ayarlama

  1. Azure Portal’ında oturum açın.
  2. Application Insights kaynağı oluşturun.

Not

31 Mart 2025’te izleme anahtarı alımı desteği sona erecektir. İzleme anahtarı alımı çalışmaya devam edecek, ancak artık özellik için güncelleştirme veya destek sağlamayacağız. Yeni özelliklerden yararlanmak için bağlantı dizesi geçiş.

Node.js istemci kitaplığını ayarlama

Veri toplayabilmesi için SDK'yi uygulamanıza ekleyin.

  1. Kaynağınızın bağlantı dizesi yeni kaynağınızdan kopyalayın. Application Insights, verileri Azure kaynağınızla eşlemek için bağlantı dizesi kullanır. SDK'nın bağlantı dizesi kullanabilmesi için önce bağlantı dizesi bir ortam değişkeninde veya kodunuzda belirtmeniz gerekir.

    Application Insights'a genel bakış ve bağlantı dizesi gösteren ekran görüntüsü.

  2. aracılığıyla uygulamanızın bağımlılıklarına package.jsonNode.js istemci kitaplığını ekleyin. Uygulamanızın kök klasöründen şunu çalıştırın:

    npm install applicationinsights --save
    

    Not

    TypeScript kullanıyorsanız ayrı "yazma" paketleri yüklemeyin. Bu NPM paketi yerleşik yazma işlemleri içerir.

  3. Kitaplığı kodunuza açıkça yükleyin. SDK diğer birçok kitaplığa izleme eklediği için kitaplığı diğer require deyimlerinden de önce olmak üzere mümkün olduğunca erken yükleyin.

    let appInsights = require('applicationinsights');
    
  4. Ayrıca ortam değişkeni APPLICATIONINSIGHTS_CONNECTION_STRINGaracılığıyla veya öğesine el ile setup() new appInsights.TelemetryClient()geçirmek yerine bir bağlantı dizesi sağlayabilirsiniz. Bu uygulama, bağlantı dizesi kaydedilmiş kaynak kodunun dışında tutmanıza olanak tanır ve farklı ortamlar için farklı bağlantı dizesi belirtebilirsiniz. El ile yapılandırmak için çağrısı yapın appInsights.setup('[your connection string]');.

    Daha fazla yapılandırma seçeneği için aşağıdaki bölümlere bakın.

    SDK'yı telemetri verileri göndermeden denemek için appInsights.defaultClient.config.disableAppInsights = true ayarını yapın.

  5. çağrısı appInsights.start();yaparak otomatik olarak veri toplamaya ve göndermeye başlayın.

Not

Application Insights izlemesini kullanmanın bir parçası olarak tanılama verilerini toplar ve Microsoft'a göndeririz. Bu veriler Application Insights'ı çalıştırmamıza ve geliştirmemize yardımcı olur. Temel olmayan veri toplamayı devre dışı bırakma seçeneğiniz vardır. Daha fazla bilgi edinin.

Uygulamanızı izleme

SDK, Node.js çalışma zamanı ve bazı yaygın üçüncü taraf modülleri hakkında telemetri verilerini otomatik olarak toplar. Uygulamanızı kullanarak bu verilerin bazılarını oluşturun.

Ardından Azure portalında önceden oluşturduğunuz Application Insights kaynağına gidin. Genel bakış zaman çizelgesinde ilk birkaç veri noktasını bulun. Ayrıntılı verileri görmek için grafikteki farklı bileşenleri seçin.

Uygulamanız için bulunan topolojiyi görüntülemek için Uygulama Haritası'nı kullanabilirsiniz.

Veri yok

SDK verileri gönderim için toplu olarak işlediğinden, öğelerin portalda görünmesi gecikmeli olabilir. Verileri kaynağınızda görmüyorsanız aşağıdaki düzeltmelerden bazılarını deneyin:

  • Uygulamayı kullanmaya devam edin. Daha fazla telemetri oluşturmak için daha fazla eylem gerçekleştirin.
  • Portal kaynak görünümünde Yenile'yi seçin. Grafikler belirli aralıklarla otomatik olarak yenilenir ancak el ile yenilerseniz anında yenilenir.
  • Gerekli giden bağlantı noktalarının açık olduğunu doğrulayın.
  • Belirli olayları aramak için Arama sekmesini kullanın.
  • SSS sayfasını inceleyin.

Temel kullanım

HTTP isteklerinin, popüler üçüncü taraf kitaplık olaylarının, işlenmeyen özel durumların ve sistem ölçümlerinin kullanıma hazır koleksiyonu için:


let appInsights = require("applicationinsights");
appInsights.setup("[your connection string]").start();

Not

bağlantı dizesi ortam değişkeninde APPLICATIONINSIGHTS_CONNECTION_STRING.setup() ayarlanırsa, bağımsız değişken olmadan çağrılabilir. Bu, farklı ortamlar için farklı bağlantı dizesi kullanımını kolaylaştırır.

Diğer paketleri yüklemeden önce betiklerinizde Application Insights kitaplığını require("applicationinsights") mümkün olduğunca erken yükleyin. Application Insights kitaplığının daha sonraki paketleri izlemeye hazır edebilmesi için bu adım gereklidir. Benzer hazırlık yapan diğer kitaplıklarla çakışmalarla karşılaşırsanız, daha sonra Application Insights kitaplığını yüklemeyi deneyin.

JavaScript'in geri çağırmaları işleme şekli nedeniyle, dış bağımlılıklar ve daha sonraki geri çağırmalar arasında bir isteği izlemek için daha fazla çalışma gerekir. Bu ek izleme varsayılan olarak etkindir. SDK yapılandırması bölümünde açıklandığı gibi çağırarak setAutoDependencyCorrelation(false) devre dışı bırakın.

0.22 öncesi sürümlerden geçiş

Sürüm 0.22 ve sonrasındaki sürümler arasında hataya neden olan değişiklikler vardır. Bu değişiklikler, diğer Application Insights SDK'larıyla tutarlılık sağlamak ve gelecekte genişletilebilirlik sağlamak için tasarlanmıştır.

Genel olarak, aşağıdaki eylemlerle geçiş yapabilirsiniz:

  • başvurularını appInsights.client ile appInsights.defaultClientdeğiştirin.
  • başvurularını appInsights.getClient() ile new appInsights.TelemetryClient()değiştirin.
  • Tüm bağımsız değişkenleri client.track* yöntemlerine, bağımsız değişken olarak adlandırılmış özellikler içeren tek bir nesneyle değiştirin. Her telemetri türü için IDE'nizin yerleşik tür ipuçlarına veya bağımsız nesne için TelemetryTypes'a bakın.

SDK yapılandırma işlevlerine appInsights.setup()zincirlemeden erişiyorsanız, artık bu işlevleri adresinde appInsights.Configurationsbulabilirsiniz. appInsights.Configuration.setAutoCollectDependencies(true) bunun bir örneğidir. Sonraki bölümde varsayılan yapılandırmada yapılan değişiklikleri gözden geçirin.

SDK yapılandırması

appInsights nesnesi birçok yapılandırma yöntemi sağlar. Bunlar aşağıdaki kod parçacığında varsayılan değerleriyle birlikte listelenir.

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();

Bir hizmetteki olayları tam olarak ilişkilendirmek için .setAutoDependencyCorrelation(true) ayarını yaptığınızdan emin olun. Bu seçenek belirlenmiş durumda olduğunda SDK Node.js içindeki zaman uyumsuz geri çağırmalar arasında içeriği izleyebilir.

Ayrıntılı bilgi ve isteğe bağlı ikincil bağımsız değişkenler için IDE'nizin yerleşik tür ipucu veya applicationinsights.ts açıklamalarını gözden geçirin.

Not

Varsayılan olarak, setAutoCollectConsole ve diğer konsol yöntemlerine yapılan çağrıları dışlamak üzere console.log yapılandırılır. Yalnızca desteklenen üçüncü taraf günlükçülere (örneğin, winston ve bunyan) yapılan çağrılar toplanır. Bu davranışı kullanarak setAutoCollectConsole(true, true)yöntemlere console çağrılar içerecek şekilde değiştirebilirsiniz.

Örnekleme

Varsayılan olarak, SDK toplanan tüm verileri Application Insights hizmetine gönderir. Veri miktarını azaltmak için örneklemeyi etkinleştirmek istiyorsanız, alanı istemcinin config nesnesinde ayarlayınsamplingPercentage. 100 (varsayılan) olarak ayarlanması samplingPercentage tüm verilerin gönderileceği, 0 ise hiçbir şeyin gönderilmeyeceği anlamına gelir.

Otomatik bağıntı kullanıyorsanız, tek bir istekle ilişkili tüm veriler bir birim olarak dahil edilir veya hariç tutulur.

Örneklemeyi etkinleştirmek için aşağıdaki gibi bir kod ekleyin:

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();

Çok bileşenli uygulamalar için birden çok rol

Bazı senaryolarda uygulamanız, tümünü aynı bağlantı dizesi izlemek istediğiniz birden çok bileşenden oluşabilir. Bu bileşenleri, ayrı bağlantı dizesi kullanıyor gibi portalda ayrı birimler olarak görmeye devam etmek istiyorsunuz. Uygulama Haritası'nda ayrı düğümler örnek olarak verilmiştir. Bir bileşenin telemetrisini RoleName Application Insights kaynağınıza veri gönderen diğer bileşenlerden ayırt etmek için alanı el ile yapılandırmanız gerekir.

Alanı ayarlamak RoleName için aşağıdaki kodu kullanın:

const appInsights = require("applicationinsights");
appInsights.setup("<connection_string>");
appInsights.defaultClient.context.tags[appInsights.defaultClient.context.keys.cloudRole] = "MyRoleName";
appInsights.start();

Tarayıcı SDK Yükleyicisi

Not

Genel önizleme olarak kullanılabilir. Microsoft Azure Önizlemeleri için Ek Kullanım Koşulları

Otomatik web araçları, yapılandırmaya göre JavaScript (Web) SDK Yükleyici Betiği ekleme yoluyla düğüm sunucusu için etkinleştirilebilir.

let appInsights = require("applicationinsights");
appInsights.setup("<connection_string>")
    .enableWebInstrumentation(true)
    .start();

veya ortam değişkeni APPLICATIONINSIGHTS_WEB_INSTRUMENTATION_ENABLED = trueayarlayarak.

Aşağıdaki gereksinimlerin tümü karşılandığında Düğüm sunucusu yanıtlarında Web İzleme etkinleştirilir:

  • Yanıtın durum kodu 200vardır.
  • Yanıt yöntemi: GET.
  • Sunucu yanıtı html'ye sahiptir Content-Type .
  • Sunucu yanıtı hem hem </head> de <head> Etiketleri içerir.
  • Yanıt sıkıştırılmışsa, yalnızca bir Content-Encoding türe sahip olmalı ve kodlama türü veya br deflatetüründen gzipbiri olmalıdır.
  • Yanıt geçerli /backup web İzleme CDN uç noktalarını içermiyor. (geçerli ve yedek Web Araçları CDN uç noktaları burada)

web Instrumentation CDN uç noktası ortam değişkeni APPLICATIONINSIGHTS_WEB_INSTRUMENTATION_SOURCE = "web Instrumentation CDN endpoints"ayarlanarak değiştirilebilir. web İzleme bağlantı dizesi ortam değişkeni ayarlanarak değiştirilebilirAPPLICATIONINSIGHTS_WEB_INSTRUMENTATION_CONNECTION_STRING = "web Instrumentation connection string"

Not

Web İzleme, özellikle yanıt boyutu büyük olduğunda veya yanıt sıkıştırıldığında sunucu yanıt süresini yavaşlatabilir. Bazı orta katmanların uygulandığı durumlarda, web İzleme'nin çalışmaması ve özgün yanıt döndürülmesiyle sonuçlanabilir.

Otomatik üçüncü taraf izleme

Zaman uyumsuz çağrılarda bağlamı izlemek için MongoDB ve Redis gibi üçüncü taraf kitaplıklarda bazı değişiklikler yapılması gerekir. Application Insights varsayılan olarak bu kitaplıklardan bazılarını maymuna yama uygulamak için kullanır diagnostic-channel-publishers . Ortam değişkeni ayarlanarak APPLICATION_INSIGHTS_NO_DIAGNOSTIC_CHANNEL bu özellik devre dışı bırakılabilir.

Not

Bu ortam değişkeni ayarlanarak olaylar doğru işlemle doğru şekilde ilişkilendirilmeyebilir.

Ortam değişkeni, devre dışı bırakılacak paketlerin APPLICATION_INSIGHTS_NO_PATCH_MODULES virgülle ayrılmış listesine ayarlanarak tek tek maymun düzeltme ekleri devre dışı bırakılabilir. Örneğin, ve redis paketlerine console düzeltme eki uygulamaktan kaçınmak için kullanınAPPLICATION_INSIGHTS_NO_PATCH_MODULES=console,redis.

Şu anda dokuz paket izlenir: bunyan,console,,mongodb,mongodb-core,mysql,redis,winston,,pg ve pg-pool. Bu paketlerin tam olarak hangi sürümüne düzeltme eki eklendiği hakkında bilgi için bkz . diagnostic-channel-publishers'ın README.

bunyan, winstonve console düzeltme ekleri, etkinleştirilip etkinleştirilmediğine setAutoCollectConsole bağlı olarak Application Insights izleme olayları oluşturur. Geri kalanı, etkinleştirilip etkinleştirilmediğine setAutoCollectDependencies bağlı olarak Application Insights bağımlılık olayları oluşturur.

Canlı ölçümler

Uygulamanızdan Azure'a canlı ölçüm göndermeyi etkinleştirmek için kullanın setSendLiveMetrics(true). Şu anda portalda canlı ölçümlerin filtrelenmesi desteklenmemektedir.

Genişletilmiş ölçümler

Not

Genişletilmiş yerel ölçümleri gönderme özelliği 1.4.0 sürümüne eklendi.

Uygulamanızdan Azure'a genişletilmiş yerel ölçümler göndermeyi etkinleştirmek için ayrı yerel ölçüm paketini yükleyin. SDK yüklendiğinde otomatik olarak yüklenir ve yerel ölçümler Node.js toplamaya başlar.

npm install applicationinsights-native-metrics

Şu anda yerel ölçüm paketi çöp toplama CPU süresi, olay döngüsü onay işaretleri ve yığın kullanımı için otomatik toplama gerçekleştirir:

  • Çöp toplama: Her bir çöp toplama türü için harcanan CPU süresi miktarı ve her türün kaç kez yinelenme sayısı.
  • Olay döngüsü: Kaç değer çizgisi oluştuğu ve toplamda ne kadar CPU süresi harcandığını belirtir.
  • Yığın ve yığın olmayanlar: Uygulamanızın bellek kullanımının yığında veya yığın dışı olarak ne kadar olduğu.

Dağıtılmış izleme modları

Varsayılan olarak SDK, Application Insights SDK'sı ile izlenen diğer uygulamalar veya hizmetler tarafından anlaşılan üst bilgileri gönderir. Mevcut yapay zeka üst bilgilerine ek olarak W3C İzleme Bağlamı üst bilgilerinin gönderilmesini ve alınmasını etkinleştirebilirsiniz. Bu şekilde, mevcut eski hizmetlerinizle bağıntıyı kesmezsiniz. W3C üst bilgilerinin etkinleştirilmesi, uygulamanızın Application Insights ile izlenmemiş ancak bu W3C standardını benimseyen diğer hizmetlerle bağıntılı olmasını sağlar.

const appInsights = require("applicationinsights");
appInsights
  .setup("<your connection string>")
  .setDistributedTracingMode(appInsights.DistributedTracingModes.AI_AND_W3C)
  .start()

TelemetryClient API'si

TelemetryClient API'sinin tam açıklaması için bkz. Özel olaylar ve ölçümler için Application Insights API'si.

Node.js için Application Insights istemci kitaplığını kullanarak herhangi bir isteği, olayı, ölçümü veya özel durumu izleyebilirsiniz. Aşağıdaki kod örneği, kullanabileceğiniz API'lerden bazılarını göstermektedir:

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
});

Bağımlılıklarınızı izleme

Bağımlılıklarınızı izlemek için aşağıdaki kodu kullanın:

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"});;

Olay döngüsü zamanlamasının ne kadar sürdüğünü ölçmek için kullanan trackMetric örnek bir yardımcı program:

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);
}

Tüm olaylara özel bir özellik ekleme

Tüm olaylara özel bir özellik eklemek için aşağıdaki kodu kullanın:

appInsights.defaultClient.commonProperties = {
  environment: process.env.SOME_ENV_VARIABLE
};

HTTP GET isteklerini izleme

HTTP GET isteklerini el ile izlemek için aşağıdaki kodu kullanın:

Not

  • Tüm istekler varsayılan olarak izlenir. Otomatik koleksiyonu devre dışı bırakmak için çağrısından önce öğesini arayın .setAutoCollectRequests(false) start().
  • Yerel getirme API'leri istekleri klasik Application Insights tarafından otomatik olarak izlenmez; el ile bağımlılık izleme gereklidir.
appInsights.defaultClient.trackRequest({name:"GET /customers", url:"http://myserver/customers", duration:309, resultCode:200, success:true});

Alternatif olarak, yöntemini kullanarak trackNodeHttpRequest istekleri izleyebilirsiniz:

var server = http.createServer((req, res) => {
  if ( req.method === "GET" ) {
      appInsights.defaultClient.trackNodeHttpRequest({request:req, response:res});
  }
  // other work here....
  res.end();
});

Sunucu başlangıç saatini izleme

Sunucu başlangıç saatini izlemek için aşağıdaki kodu kullanın:

let start = Date.now();
server.on("listening", () => {
  let duration = Date.now() - start;
  appInsights.defaultClient.trackMetric({name: "server startup time", value: duration});
});

Flush

Varsayılan olarak, telemetri alma sunucusuna gönderilmeden önce 15 saniye arabelleğe alınıp bırakılır. Uygulamanızın CLI aracı gibi kısa bir ömrü varsa, uygulama kullanarak appInsights.defaultClient.flush()sonlandırıldığında arabelleğe alınan telemetrinizi el ile temizlemeniz gerekebilir.

SDK uygulamanızın kilitlendiğini algılarsa kullanarak sizin appInsights.defaultClient.flush({ isAppCrashing: true })için flush çağrısında bulunur. Temizleme seçeneğiyle isAppCrashinguygulamanızın anormal bir durumda olduğu varsayılır ve telemetri göndermek için uygun değildir. Bunun yerine SDK, tüm arabelleğe alınan telemetri verilerini kalıcı depolamaya kaydeder ve uygulamanızın sonlandırılmasını sağlar. Uygulamanız yeniden başlatıldığında, kalıcı depolamaya kaydedilmiş telemetri verilerini göndermeye çalışır.

Telemetri işlemcileriyle verileri ön işlemeden geçirme

Toplanan verileri, telemetri işlemcilerini kullanarak saklama için gönderilmeden önce işleyebilir ve filtreleyebilirsiniz. Telemetri işlemcileri, telemetri öğesi buluta gönderilmeden önce eklendikleri sırayla tek tek çağrılır.

public addTelemetryProcessor(telemetryProcessor: (envelope: Contracts.Envelope, context: { http.RequestOptions, http.ClientRequest, http.ClientResponse, correlationContext }) => boolean)

Telemetri işlemcisi döndürürse false, bu telemetri öğesi gönderilmez.

Tüm telemetri işlemcileri, incelemek ve değiştirmek için telemetri verilerini ve zarfını alır. Ayrıca bir bağlam nesnesi alır. Bu nesnenin içeriği, el ile izlenen telemetri için bir izleme yöntemi çağrılırken parametresi tarafından contextObjects tanımlanır. Otomatik olarak toplanan telemetri için, bu nesne tarafından sağlanan appInsights.getCorrelationContext() kullanılabilir istek bilgileri ve kalıcı istek içeriğiyle doldurulur (otomatik bağımlılık bağıntısı etkinleştirildiyse).

Telemetri işlemcisi için TypeScript türü:

telemetryProcessor: (envelope: ContractsModule.Contracts.Envelope, context: { http.RequestOptions, http.ClientRequest, http.ClientResponse, correlationContext }) => boolean;

Örneğin, özel durumlardan yığın izleme verilerini kaldıran bir işlemci yazılabilir ve aşağıdaki gibi eklenebilir:

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);

Birden çok bağlantı dizesi kullanma

Birden çok Application Insights kaynağı oluşturabilir ve ilgili bağlantı dizesi kullanarak her birine farklı veriler gönderebilirsiniz.

Örneğin:

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"});

Gelişmiş yapılandırma seçenekleri

İstemci nesnesi, gelişmiş senaryolar için birçok isteğe bağlı ayar içeren bir config özellik içerir. Bunları ayarlamak için şunu kullanın:

client.config.PROPERTYNAME = VALUE;

Bu özellikler istemciye özgü olduğundan ile new appInsights.TelemetryClient()oluşturulan istemcilerden ayrı olarak yapılandırabilirsinizappInsights.defaultClient.

Özellik Açıklama
connectionString Application Insights kaynağınız için bir tanımlayıcı.
endpointUrl Telemetri yüklerinin gönderilmesi için alım uç noktası.
quickPulseHost Canlı ölçüm telemetrisi göndermek için Canlı Ölçüm Akışı ana bilgisayarı.
proxyHttpUrl SDK HTTP trafiği için bir ara sunucu. (İsteğe bağlı. Varsayılan, ortam değişkeninden http_proxy alınır.)
proxyHttpsUrl SDK HTTPS trafiği için bir ara sunucu. (İsteğe bağlı. Varsayılan, ortam değişkeninden https_proxy alınır.)
httpAgent Http. SDK HTTP trafiği için kullanılacak aracı. (İsteğe bağlı. Varsayılan tanımlanmamıştır.)
httpsAgent Https. SDK HTTPS trafiği için kullanılacak aracı. (İsteğe bağlı. Varsayılan tanımlanmamıştır.)
maxBatchSize Alma uç noktasına yüke eklenecek en fazla telemetri öğesi sayısı. (Varsayılan değer: 250.)
maxBatchIntervalMs Bir yükün maxBatchSize'a ulaşmasını bekleme süresi üst sınırı. (Varsayılan değer: 15000.)
disableAppInsights Telemetri iletimini devre dışı bırakılıp bırakılmadığını gösteren bir bayrak. (Varsayılan değer: false.)
samplingPercentage İletilmesi gereken izlenen telemetri öğelerinin yüzdesi. (Varsayılan değer: 100.)
correlationIdRetryIntervalMs Bileşenler arası bağıntının kimliğini almak için yeniden denemeden önce beklenmesi gereken süre. (Varsayılan değer: 30000.)
correlationHeaderExcludedDomains Bileşenler arası bağıntı üst bilgisi ekleme işleminin dışında tutulacak etki alanlarının listesi. (Varsayılan. Bkz. Config.ts.)

Sık sorulan sorular

Telemetri bağıntısını nasıl devre dışı bırakabilirim?

Telemetri bağıntısını devre dışı bırakmak için yapılandırmada özelliğini kullanın correlationHeaderExcludedDomains . Daha fazla bilgi için bkz . ApplicationInsights-node.js.

Sorun giderme

"Veri yok" senaryoları ve günlükleri özelleştirme de dahil olmak üzere sorun giderme bilgileri için bkz . Node.js uygulama ve hizmetlerinin Application Insights izleme sorunlarını giderme.

Sonraki adımlar