JavaScript aracı API 'si

Giriş

JavaScript aracısı, izlenen web sitelerindebulunan bir API ' yi gösterir. Web siteniz, toplanan verileri zenginleştirmek/yapılandırmak, özel olaylar göndermek ve daha fazlasını yapmak için JavaScript aracımızın API 'si ile etkileşim kurabilir.

JavaScript aracı API 'si, Web REST APIile karıştırılmamalıdır. Toplanan verilere ilişkin sorguları yürütmek ve yeni bir web sitesi yapılandırmak için kullanılabilecek Web REST API.

Genel Nesne

Instana JavaScript aracısı, ineumadlı yeni bir genel işlev tanımlar. Bu işlev, HTML belgesi içindeki JavaScript parçacığının hemen ardından kullanılabilir. Bu, aracının kendisi henüz karşıdan yüklenmemiş olsa da işlevin var olduğu anlamına gelir. Bu, ineum API çağrılarını kolay ve verimli hale getirmek için yapıldı.

Aracı henüz karşıdan yüklenmediğinde, ineum yürütülen tüm API çağrılarını kuyruğa alacak. Aracı karşıdan yüklemesi tamamlandığında, bu API çağrıları, yapıldıkları sırayla eşzamanlı olarak yürütülür. Bu noktadan sonra ineum , API çağrılarını hemen yürüten bir işlevle değiştirilir.

API Yapısı

Tüm ineum çağrıları aynı yapıyı izler. Şu şekilde görünüyorlar:

ineum(commandName, ...args);

Parametreler

Değiştirge Açıklama
commandName (string) Hangi komutun yürütülmesi gerektiğini tanımlar; örneğin, meta verileri ayarlayın ya da bir hata bildirin.
...args Belirli bir komuta ilişkin gerçek bağımsız değişkenler. Bağımsız değişken sayısı ve tipleri her komuta özgüdür ve aşağıdaki bölümlerde daha ayrıntılı olarak açıklanır.

ineum işlevinin hiçbir zaman bir şey döndürmediğini unutmayın ( getPageLoadIdkomutu dışında, aşağıdaki gibi).

TypeScript Tip Tanımlamaları

TypeScript kullanıcıları, DefinitelyTyped projesi tarafından sağlanan tip tanımlamalarını kurabilir ve kullanabilir.

npm install --save @types/ineum

API ' leri

Aşağıdaki bölümlerde, bağımsız değişkenleriyle birlikte kullanılabilir komut adları açıklanmaktadır.

İzleme Anahtarı

İzleme tuşları key komutuyla ayarlanabilir. Instana kullanıcı arabirimi içinde web siteleri yapılandırılırken izleme anahtarı görülebilir.

ineum('key', trackingKey);

Parametre

Değiştirge Açıklama
trackingKey (string) Instana 'daki web sitesi yapılandırmasına ilişkin izleme anahtarı.

Örnek

Instana kullanıcı arabiriminde doğru bir yapılandırma gösterilir.

İzleme Anahtarlarının Değiştirilmesi

Ortamlarınızın her birinin (örneğin, üretim, üretime hazırlık, test), Instana içinde benzersiz web siteleri olarak modellenmesini öneririz. Bu, konuşlandırmaya bağlı olarak JavaScript aracısı için farklı izleme anahtarları yapılandırmanızı gerektirir. Varsa, izleme anahtarlarını yapılandırma yönetimi sisteminizde saklamanızı ve izleme anahtarını değiştirmek için saklanan değeri kullanmanızı öneririz.

Web sitesinin yalnızca statik dosyalardan oluştuğu ya da yapılandırma yönetimi sistemi olmadığı durumlarda, web sitenize ilişkin kod parçacıklarını yönetmenize yardımcı olan Google Etiket Yöneticisi gibi bir aracı çalıştırmayı seçebilirsiniz. Diğer bir seçenek olarak, izleme anahtarlarını sabit kodlayabilir ve web tarayıcısı içinde küçük bir denetim yürütebilirsiniz.

if (window.location.hostname === 'example.com') {
  ineum('key', 'production monitoring key');
} else if (window.location.hostname === 'qa.example.com') {
  ineum('key', 'QA monitoring key');
} else {
  ineum('key', 'test monitoring key');
}

Raporlama URL 'si

Bu işaretler, izleme verilerini YönOrtamıana 'ya teslim etmek için HTTP GET ve POST aracılığıyla bu URL ' ye iletilir.

ineum('reportingUrl', reportingUrl);

Parametre

Değiştirge Açıklama
reportingUrl (string) Web sitesi izleme verilerinin gönderileceği URL.

Örnek

SaaS ürünümüzü kullanan müşteriler için YönOrtamıkullanıcı arabiriminde doğru bir yapılandırma gösterilir. Şirket içi müşterilerin, yapılandırılmış EUM Uç Nokta'larına dayalı olarak doğru URL' yi tanımlaması gerekir.

Birden çok arka uç

Bazı durumlarda, birden çok arka uca bir JavaScript aracısı raporu yapmak istenebilir. Bu durumda, JavaScript aracısını birden çok arka uca raporlamak için reportingBackends komutunu kullanın.

ineum('reportingBackends', reportingBackends);

Parametre

Değiştirge Açıklama
reportingBackends (ReportingBackend[]) Bir ReportingBackend nesneleri dizisi. Nesnelerin her biri, web sitesi izleme verilerinin gönderildiği bir arka ucu tanımlar. ReportingBackend nesnesi aşağıdaki gibi görünür.
{
  reportingUrl: 'http://example.com',  // The URL to which to send website monitoring data to.
  key: 'monitoring key'                // The monitoring key for the website configuration in Instana.
}

Bu tarihten bu yana

reportingBackends komutu, YönOrtamıAna Yayın 230ile başlayarak kullanılabilir.

Örnek

ineum('reportingBackends', [
      { reportingUrl: 'http://backend1.example.com', key: 'monitoring key 1' },
      { reportingUrl: 'http://backend2.example.com', key: 'moniroting key 2' }
    ]);

Not: reportingBackends komutu, reportingUrl komutuna göre önceliklidir. reportingBackends komut çağrısı yapıldıktan sonra, herhangi bir reportingUrl komut çağrısı yoksayılır.

Sayfa

Instana, web sitesi metriklerini mantıksal sayfalara göre bölebilir. Bunu yapmak için kullanıcının şu anda hangi sayfaya baktığını göstermesi gerekir. Bu sayfa adı page komutuyla ayarlanabilir. page ' yi mümkün olan en erken şekilde ayarlamanızı öneririz. Ayrıca, page ' in bir noktada belge değişikliklerini sunmak (örneğin, tek sayfalık uygulamalar) için değiştirilmesi de son derece iyidir. Bu, Instana 'nın sayfa yüklemelerine ek olarak sayfa geçişlerini de izlemesinisağlar.

ineum('page', pageName);

Sayfa adı, sayfa yükleme aşamasındabu API ' nin ilk kez çağrılması dışında, API aracılığıyla her eşzamanlandığında sayfa geçişi olayları kaydedilir.

Genel olarak, sayfaları tanımlamak için window.title ya da window.href kullanmamanızı öneririz. Bu, vakaların çoğunda değer sağlamayacak çok sayıda izlenen sayfayla sonuçlanır; örneğin, window.title ürün adlarını içerdiğinden. Bunun yerine, sayfalar için mantıksal adlar kullanılmasını öneririz. Örneğin, product detail page ya da payment selection. Bu, gerçekte var olan kodla doğrudan ilişkisi olacak daha az sayfa ile sonuçlanır.

Çeşitli çerçeveler ve kitaplıklar için anlamlı sayfa adlarının nasıl toplanacağını gösteren örnek projeler sağlıyoruz. Çerçeveniz/kitaplığınız eksikse, bir çekme ya da destek isteği gönderebilirsiniz.

Parametre

Değiştirge Açıklama
pageName (string) Sayfanın adı.

Örnek

ineum('page', 'shopping-cart');

// Do you want to change meta data and the page name at the same time?
// Make sure to change the page name last as this immediately
// triggers a page transition beacon.
ineum('meta', 'product', 'skateboard');
ineum('page', 'article-details');

Kullanıcıları Tanımlama

Kullanıcıya özgü bilgiler, isteğe bağlı olarak, YönOrtama aktarılan verilerle birlikte gönderilebilir. Bu bilgiler daha sonra aşağıdakiler gibi ek yeteneklerin kilidini açmak için kullanılabilir:

  • hatalardan etkilenen kullanıcı sayısını hesaplayın,
  • belirli kullanıcılar için verileri süzgeçten geçirmek için ve
  • Hangi kullanıcının sayfa yükleme/AJAX çağrısı başlattığını görmek için.

Varsayılan olarak, YönOrtamıana kullanıcı tarafından tanımlanabilir bilgileri işaretlerle ilişkilendirmez. Lütfen bunu seçerken ilgili veri koruma yasalarını dikkate alın. Genellikle bir kullanıcı kimliği aracılığıyla kullanıcıların kimliğini belirlemenizi öneririz. Instana için bu, yalnızca belirli metrikleri hesaplamak için kullanılan tamamen saydam bir string ' dir. userName ve userEmail , daha fazla süzgeç ve kullanıcı bilgilerinin daha hoş bir sunumuna erişmek için de kullanılabilir.

Instana 'nın sunucusuna iletilen verilerin geriye dönük olarak güncellenemeyeceğini göz önünde bulundurmak önemlidir. Bu nedenle, sayfa yükleme işleminde bu API ' yi mümkün olan en kısa sürede çağırmak önemlidir. Bu API ' yi sayfa yükleme işleminde zamanuyumlu olarak (örneğin, bilgileri sunucu tarafındaki HTML belgesine görüntüleyerek) çağırmanızı öneririz. Bu, tüm işaretlerin kullanıcı bilgilerini taşımasını, benzersiz/etkilenen kullanıcı istatistiklerinin doğru olmasını ve işaretlerin analiz sırasında doğru şekilde süzülmesini ve gruplanmasını sağlar.

ineum('user', userId, userName, userEmail);

Parametre

Değiştirge Açıklama
userId (string, isteğe bağlı) Kullanıcı için bir tanıtıcı.
userName (string, isteğe bağlı) Kullanıcı adı.
userEmail (string, isteğe bağlı) Kullanıcının e-posta adresi.

Ayarlamak istemediğiniz değerler için null ya da undefined değerini iletebilirsiniz.

Örnek

// Report everything to Instana
ineum('user', 'hjmna897k1', 'Tom Mason', 'tom@example.com');

// or only some data points
ineum('user', 'hjmna897k1');
ineum('user', null, null, 'tom@example.com');

Oturum İzleme

Sayfa yüklerinde son kullanıcıların etkinliğine ilişkin öngörüler elde etmek için oturum izleme kullanılabilir. Oturum izleme özelliği, instana 'nın tanımlı kullanıcı bilgileriolmadığında son kullanıcı etkisini belirlemesini sağlar.

Oturumları izlemek için JavaScript aracısı, trackSessions çağrısı yaptıktan sonra localStorage tarayıcı API 'sini kullanır. Teknik olarak bir oturum, tarayıcıların localStorage anahtar altında in-sessioniki zaman damgası ile birlikte saklanan rasgele bir tanıtıcıdır.

Gizlilik düzenlemelerine uyulmasına ilişkin sorumluluk, bu API ' yi çağıran kişi tarafından üstlenilmektedir.

Oturumu Kullanıma Hazırla/Yeniden Kullan

Bu API, yeni bir oturum başlatır ya da olanaklıyken var olan bir oturumu yeniden kullanır.

ineum('trackSessions', sessionInactivityTimeout, sessionTerminationTimeout);
Parametre
Değiştirge Açıklama
sessionInactivityTimeout (number, isteğe bağlı) Bir oturumun milisaniye cinsinden son trackSessions çağrıdan bu yana ne kadar etkin kalacağını açıklar. Varsayılan değer olarak üç saat kullanılır.
sessionTerminationTimeout (number, isteğe bağlı) Bir oturumun, milisaniye cinsinden ilk trackSessions aramasından bu yana ne kadar süreyle etkin kalacağını açıklar. Varsayılan değer olarak altı saat kullanılır.

Ayarlamak istemediğiniz değerler için null ya da undefined değerini iletebilirsiniz.

Örnek
// Starts tracking sessions with the default timeouts
ineum('trackSessions');

// or specify custom timeouts
ineum('trackSessions', 900000 /* 15min */, 3600000 /* 1h */);

Oturumu Sonlandır

Çalışmakta olan oturumu sonlandırır (varsa) ve localStorage' den saklanan verileri kaldırır.

ineum('terminateSession');
Örnek
// Starts tracking sessions with the default timeouts
ineum('trackSessions');

// after some time…
ineum('terminateSession');

Meta Veri

Meta veriler, sayfa yüklerine ve AJAX çağrılarına ek açıklama eklemek için kullanılabilir. UI yapılandırma değerlerini, ayarlarını, özellik işaretlerini ... analiz için yararlı olabilecek herhangi bir ek bağlamı izlemek için bunu kullanmayı düşünün.

ineum('meta', key, value);

Parametre

Değiştirge Açıklama
key (string) Meta veri olarak eklemek istediğiniz anahtar-değer çiftinin key değeri.
value (string) Meta veri olarak eklemek istediğiniz anahtar-değer çiftinin value değeri.

Örnek

ineum('meta', 'version', '1.42.3');
ineum('meta', 'role', 'admin');

Sayfa Yükleme Arka Uç İzleme Tanıtıcısı

Sayfa yükünün bir parçası olarak, ön uç/arka uç ilintilendirmesine izin vermek için bir arka uç izleme tanıtıcısı tanımlanabilir. Daha fazla ayrıntı için arka uç ilintilendirmebölümünde özel olarak ayrılmış bölüme bakın. Bu yalnızca sayfa yüklerinin arka ucu ve ön uç işlemleri arasında ilişki elde etmek için gereklidir. XMLHttpRequest ya da fetch istekleri arasındaki ilinti için gerekli değildir . İzleme tanıtıcısı 16 ya da 32 karakterli bir onaltılı dizgi olmalıdır.

ineum('traceId', traceId);

Parametre

Değiştirge Açıklama
traceId (string) İlişkili arka uç izlemesinin izleme tanıtıcısı.

Örnek

ineum('traceId', '89jkbds891jkn321');

İzlemedeki URL ' leri Dışlama

Bu API, en az bir eşleşme olduğunda YönOrtamıana 'ya veri iletimine neden olmayacak birkaç düzenli ifade tanımlamanıza olanak sağlar. Düzenli ifadeler aşağıdaki senaryolarda değerlendirilir.

  • Belgelerin URL 'lerine (adres çubuğunda görünen URL' ler, örneğin window.location.href) ilişkin değerlendirme. Düzenli ifadelerden biri eşleştiğinde, YönOrtama yapılan tüm veri iletimi geçersiz kılınır.
  • Kaynakların URL 'lerine (örneğin, JavaScript ve CSS dosyalarının URL' lerine) ilişkin değerlendirme. Düzenli ifadelerden biriyle eşleşen kaynaklarla ilgili hiçbir bilgi YönOrtama 'ya iletilmez.
  • HTTP çağrılarının hedef URL ' lerine ilişkin değerlendirme; örneğin, XMLHttpRequest ve fetcharacılığıyla. Düzenli ifadelerden biriyle eşleşen HTTP çağrılarıyla ilgili hiçbir bilgi YönOrtama iletilecek.
ineum('ignoreUrls', ignoreUrls);

Ayrıca, belge URL ' lerinden güvenlik dizgileri çıkarılmasını destekliyoruz; örneğin, tarayıcı adres çubuğunda görünen URL ( güvenlik dizgileri API 'sine bakın). Ancak, belge URL ' lerinde saklanan sırların neredeyse tüm üçüncü kişilere sızdırıldığına dikkat edin. Belge URL ' lerinde saklanan sırların neden tüm üçüncü kişilere sızmaya eğilimli olduğunu gösteren açıklamalı özel olarak ayrılmış bir örnek uygulamamız var. Daha fazla ayrıntı için lütfen bu örnek uygulamaya ve açıklamaya bakın. Ancak, bu API aracılığıyla bu URL ' ler için tüm izleme verileri toplamasını yoksaymayı seçebilirsiniz.

Parametre

Değiştirge Açıklama
ignoreUrls (RegExp[]) Yoksaymak istediğiniz URL ' lerle eşleşen RegExp nesneleri dizisi.

Örnek

ineum('ignoreUrls', [
  /\/comet.+/i,
  /\/ws.+/i,
  /.*(&|\?)secret=.*/i
]);

URL ' lerden güvenlik sırlarını düzeltme

Toplanan URL ' lerdeki sorgu parametreleri hassas veriler içerebilir. Bu nedenle, JavaScript aracısı, değerleri düzeltilecek sorgu değiştirgesi anahtarlarına ilişkin örüntü belirtimini destekler. Düzelti, JavaScript aracısı içinde, yani web tarayıcısı içinde gerçekleşir. Sonuç olarak, sırlar işlenmek üzere YönOrtamıana sunucularına ulaşmaz ve kullanıcı arabiriminde analiz veya API aracılığıyla alma için kullanılamaz.

ineum('secrets', secrets);

Bir sorgu parametresi listedeki bir girişle eşleşirse, değer düzeltiilir ve YönOrtamıana arka ucuna gönderilmez. ineum('secrets') tanımlanmazsa, YönOrtamı'nıda varsayılan olarak eşleşen kural olarak [/key/i, /secret/i, /password/i] kullanılır.

Parametre

Değiştirge Açıklama
secrets (RegExp[]) Değerleri güvenlik dizgisi olarak kabul edilecek sorgu parametresi anahtar adlarıyla eşleşen RegExp nesneleri dizisi.

Örnek

ineum('secrets', [/account/i, /user/i]);

Örneğin, https://example.com/accounts/status?account=acount_name&user=user_name toplanır ve https://example.com/accounts/status?account=<redacted>&user=<redacted>olarak görüntülenir.

Not: JavaScript aracısı, yol parametrelerinin (/account/<account id>/status) ya da matris parametrelerinin (/account;accountId=<account id>/status) güvenlik dizgileri olarak tedavisini desteklemez .

Not: Belge URL ' lerinde saklanan sırlar neredeyse tüm üçüncü kişilere sızdırılmıştır. Belge URL ' lerinde saklanan sırların neden tüm üçüncü kişilere sızmaya eğilimli olduğunu gösteren açıklamalı özel olarak ayrılmış bir örnek uygulamamız var. Daha fazla ayrıntı için lütfen bu örnek uygulamaya ve açıklamaya bakın.

İzlemedeki Kullanıcı Zamanlamalarını Dışlama

User-Timing API (Kullanıcı Zamanlama API 'si) aracılığıyla yapılan işaretçileri ve ölçümleri otomatik olarak toplar ve bunları özel olaylaradönüştürürz. Bu, Kullanıcı-Zamanlama API 'sinin, YönOrtamıana 'ya saf zamanlama verilerini raporlamak için satıcı tarafından tarafsız bir yöntem olarak kullanılabileceği anlamına gelir.

Bu API, en az bir eşleşme olduğunda belirli kullanıcı zamanlamasının toplanmasıyla sonuçlanmayacak birkaç düzenli ifade tanımlamanıza olanak sağlar. Varsayılan olarak yoksayıyoruz ...

  • ⚛️ ya da ⛔ ifadesiyle başlayan işaretler ve ölçüler,
  • Angular 'ın kullanıcı zamanlamaları-örneğin, Zone ile başlayan işaretler ve ölçüler ve
  • Adları start ya da end ile başlayan işaretleri ve ölçümleri gösterir.
ineum('ignoreUserTimings', ignoreUserTimings);

Parametre

Değiştirge Açıklama
ignoreUserTimings (RegExp[]) Yoksaymak istediğiniz kullanıcı zamanlama işaretleri ve ölçümlerinin adlarıyla eşleşen RegExp nesneleri dizisi.

Örnek

ineum('ignoreUserTimings', [
  /^\u269B/,
  /^\u26D4/,
  /^Zone(:|$)/,
  /mySecretTiming/i
]);

Sayfa Yükünden Sonra Bekleme Üst Sınırını Yapılandırma

Ek metrikleri (örneğin, ilk giriş gecikmesi ve birikmeli yerleşim düzeni vardiyasını) toplamak için, JavaScript aracısı şu zamana kadar bekler ...

  • tüm metrikler kullanılabilir
  • sayfa boşaltıldı (örneğin, sekme kapatıldı) ya da
  • bekleme süresi üst sınırı geçinceye kadar.

Bekleme süresi üst sınırını yeniden yapılandırmak için bu API ' yi kullanabilirsiniz. Varsayılan olarak, sayfa yüklemesi bittikten sonra en fazla bir saniye bekleriz; örneğin, onLoad olayı sona ermiştir.

ineum('maxMaitForPageLoadMetricsMillis', durationMillis);

Parametre

Değiştirge Açıklama
durationMillis (numbner) Sayfa yükleme işareti iletilmeden önce sayfa yükleme bittikten sonra beklenecek süre üst sınırı (milisaniye).

Örnek

ineum('maxMaitForPageLoadMetricsMillis', 500);

Sayfa Yükleme Tanıtıcısının Alınması

Bazen, örneğin özel ilinti yapmak istediğinde, sayfa yükünün tanıtıcısını el ile almak yararlı olabilir. Bu işlev, JavaScript aracısı henüz yüklenmediği sürece undefined döndürür. Yüklendikten sonra, her zaman aynı stringdöndürülür.

ineum('getPageLoadId');

İadeler

  • string ya da undefinedolarak sayfa yükleme tanıtıcısı.

Örnek

var pageLoadId = ineum('getPageLoadId');
console.log(pageLoadId);

Hata İzleme

El İle Hata Raporlama

Yakalanan hataları raporlamak mümkündür. Bu, Instana 'yı yakalanmayan hataları yakalayan çerçevelerle ve kitaplıklarla bütünleştirmek için kullanılabilir.

ineum('reportError', error, opts);
Parametre
Değiştirge Açıklama
error (Error ya da string) JavaScript Error nesnesi ya da bir hata iletisi.
opts (ErrorReportingOpts, isteğe bağlı) Aşağıdaki gibi görünen bir nesne.
{
  componentStack: '...' // an optional string

  meta: {               // An optional JavaScript object with `string` values which can be used
    widgetType: 'chart' // to send metadata to Instana just for this singular event. In contrast to
  }                     // the usage of the metadata API, this metadata is not included in subsequent
                        // beacons.
}
Örnek
ineum('reportError', new Error('Something failed'), {
  componentStack: '…',
  meta: {
    widgetType: 'chart'
  }
});
React Bütünleştirmesi

JavaScript aracısını React hata sınırlarıyla bütünleştirirken daha iyi hata öngörüleri elde etmek mümkündür. Özellikle, hata (işlev) yığın izlemesine ek olarak bileşen yığını izlemeleri de kullanılabilir olur.

Aşağıdaki kod parçacığı, React 'ın componentDidCatch ürününün bu bütünleştirmeyi gerçekleştirmek için nasıl genişletilebileceğini göstermektedir. componentDidCatch yaşam çevrimi hakkında daha fazla bilgi için bkz. Belgeleri yeniden harekete geçir.

componentDidCatch(error, info) {
  ineum('reportError', error, {
    componentStack: info.componentStack
  });

  // your regular error boundary code
}
Açısal 2 + Bütünleştirme

Açısal, varsayılan olarak tüm hataları yakalar ve bunları konsolda günlüğe kaydeder. Bu, JavaScript aracısının bu hatalara hiçbir zaman erişemeyeceğini gösterir. Aşağıdaki TypeScript kod parçacığı, Angular 'ın yakalanan hatalarının YönOrtamıyla nasıl bütünleştirileceğini gösterir.

Açısal hata işleyicilerle ilgili daha fazla bilgi için bkz. Açısal belgeler.

import { ErrorHandler, NgModule } from '@angular/core';

class CustomErrorHandler implements ErrorHandler {
  handleError(error) {
    ineum('reportError', error);

    // Continue to log caught errors to the console
    console.error(error);
  }
}

@NgModule({
  providers: [{ provide: ErrorHandler, useClass: CustomErrorHandler }],
})
class MyModule {
  // the rest of your application code…
}
Vue Bütünleştirmesi

Vue, uygulamadan yayılan yakalanmayan hatalar için genel bir işleyici atayabilir. Aşağıdaki kod parçacığı, Vue 'nin hata işlemenin YönOrtamla nasıl bütünleştirileceğini gösterir.

Vue hata işleyicilerine ilişkin ek bilgi için Vue belgeleribaşlıklı konuya bakın.

app.config.errorHandler = (err, instance, info) => {
  ineum('reportError', err);
  // your regular error handling code
}

İzlemedeki Hataların Dışlanması

Bazı hataların YönOrtamıana 'ya raporlanmasının açıkça durdurulması mümkündür. Bu, bilinen/düzeltilemeyen hataları yoksaymak için kullanılabilir.

ineum('ignoreErrorMessages', ignoreErrorMessages);
Parametre
Değiştirge Açıklama
ignoreErrorMessages (RegExp[]) Hata izlemeden dışlamak istediğiniz hatalarla eşleşecek RegExp nesneleri dizisi.
Örnek
ineum('ignoreErrorMessages', [/^script error/i]);

Komut Dosyası Hatalarını İçgörüleri

Çok sayıda üçüncü taraf komut dosyası yerleşen web siteleri genellikle sabit sayıda Script Errorile karşılaşır. Bu hataların nasıl erişilebilir kılınacağına, örneğin gerçek hata iletisine ve yığına nasıl erişileceğine ilişkin kılavuzluk sağlıyoruz. Ancak bazen bu yönergeleri izleyemeyebilirsiniz; örneğin, üçüncü taraf gerekli Access-Control-Allow-Origin üstbilgisini eklemeyecektir. Bu durumda, Script Errors' lere ilişkin öngörüleri geliştirmek için alternatif yöntemler sağlıyoruz.

Bu mekanizmanın gümüş madde işareti yokolduğunu lütfen unutmayın. Bu, size daha iyi görünürlük sağlar ve daha yararlı izlenen hatalarla karşılaşırsınız, ancak yine de (daha az sayıda) Script Error' leri görürsünüz. Yine de önce başlangıç noktaları arası rehberlik ' i okumayı ve uygulamayı denemeyi öneriyoruz.

DOM Olayı Dinleyici Hatalarının Belirtik Olarak Izlenmesi

Bu, YönOrtamıcı aracısını her DOM olay dinleyicisininçağrı yığınına yerleştirir. Instana aracısı, olay dinleyicilerinin işlevlerine try/catch deyimlerini otomatik olarak yerleştirir. Bu, başlangıç noktaları arası hatalara ilişkin daha iyi öngörüler sağlar.

Bu özellik varsayılan olarak devre dışıdır , çünkü değer çoğu müşterimiz için sorgulanabilir. Ayrıca, web tarayıcıları web güvenlik modelinde bu deliği yamaya başladığından, komut dosyası hatalarıyla ilgili daha iyi bilgilerin toplanabileceği garanti edilmez.

ineum('wrapEventHandlers', enabled);
Parametre
Değiştirge Açıklama
enabled (boolean) Bu özelliği devre dışı bırakmak/etkinleştirmek için kullanılan işaret.
Örnek
ineum('wrapEventHandlers', true);
Süreölçer Hatalarının Belirtik Olarak Izlenmesi

Bu, instana aracısını tüm zamanlayıcılarınçağrı yığınına yerleştirir. Instana aracısı, süreölçer işleyicilerinin işlevlerinin etrafına try/catch deyimlerini otomatik olarak yerleştirir. Bu, başlangıç noktaları arası hatalara ilişkin daha iyi öngörüler sağlar.

Değer çoğu müşterimiz için sorgulanabilir olduğundan bu özellik varsayılan olarak devre dışı bırakılmıştır. Ayrıca, web tarayıcıları web güvenlik modelinde bu deliği yamaya başladığından, komut dosyası hatalarıyla ilgili daha iyi bilgilerin toplanabileceği garanti edilmez.

ineum('wrapTimers', enabled);
Parametre
Değiştirge Açıklama
enabled (boolean) Bu özelliği devre dışı bırakmak/etkinleştirmek için kullanılan işaret.
Örnek
ineum('wrapTimers', true);
Komut Dosyası Hataları Yoksayılıyor

Daha önce bahsedilen mekanizmalardan herhangi birini kullanarak komut dosyası hatalarına ilişkin öngörüler elde edemiyorsanız, bunları YönOrtamıana 'ya rapor edilmelerine engel olmak isteyebilirsiniz. Bu, hata istatistiklerinin eyleme geçirilebilir kalmasını sağlamak için yararlı olabilir. Komut dosyası hatalarının YönOrtamıana 'ya bildirilmesini önlemek için aşağıdaki kod parçacığını kullanabilirsiniz.

ineum('ignoreErrorMessages', [/^script error/i]);

Özel Olayları Raporlama

Belirsizliği giderme: Bunun yerine Genel Özel Olayları mı arıyorsunuz? Etkinlikler sayfasınagidin.

Özel olaylar, standart olmayan etkinlikler, önemli etkileşimler ve özel zamanlamaların YönOrtama raporlanmasını sağlar. Bu, özellikle yakalanmayan hataları (işlem izlerini) analiz ederken ve ek performans ölçümlerini izlerken yararlı olabilir.

ineum('reportEvent', eventName, {
  duration: duration,
  timestamp: timestamp,
  backendTraceId: backendTraceId,
  error: error,
  componentStack: componentStack,
  meta: meta
});

Parametre

Değiştirge Açıklama
eventName (string) Web sitenizde özel bir işaretçi iletimine neden olacak ne tür bir olay olduğunu tanımlar.
timestamp (number, isteğe bağlı) Olayın gerçekleştiği zamanı gösteren bir zaman damgası. Tanımlanmadığında now() - duration ' e geri döner.
duration (number, isteğe bağlı) Olayın ne kadar sürdüğü milisaniye cinsinden süre.
backendTraceId (string, isteğe bağlı) Bir işaret ışığını bir arka uç izlemesine ilişkilendirmek için bu parametreyi kullanın. Değeri, 16 ya da 32 karakterli bir onaltılı dizgi olmalıdır.
error (Error, isteğe bağlı) Ek bağlam sağlamak için bir JavaScript hata nesnesi. Yalnızca bir hata oluştuğunu bildirmek istiyorsanız, özel olarak ayrılmış hata raporlama API 'sininkullanılmasını öneririz.
componentStack (string, isteğe bağlı) Bir bileşen sıradüzenini gösteren dizgi. Genellikle bileşen tabanlı çerçeveler tarafından sağlanır.
meta (object, isteğe bağlı) Yalnızca bu tekil olay için YönOrtamıana 'ya meta veri göndermek için kullanılabilecek string değerlerini içeren bir JavaScript nesnesi. Meta veri API 'sikullanımından farklı olarak, bu meta veriler sonraki işaretlere dahil edilmez.

Örnek

ineum('reportEvent', 'login');

ineum('reportEvent', 'full example', {
  timestamp: Date.now(),
  duration: 42,
  backendTraceId: '31ab91fc109223fe',
  error: new Error('whooops – sorry!'),
  componentStack: 'a component stack',
  meta: {
    state: 'running'
  }
});

Kökler Arası İstek Arka Uç İlintisi

Instana 'nın arka uç ilintisi, XMLHttpRequest / fetch isteklerinde özel üstbilgiler ayarlanarak çalışır. JavaScript aracısı, sunucu tarafından okunan bu üstbilgileri ayarlar. Tarayıcı içinde, aynı kaynak ilkesi özel üstbilgilerin iletimini sınırlar. Daha spesifik olarak, özel üstbilgiler yalnızca aynı köken istekleri ya da özel üstbilgilerin iletilmesine izin veren diğer kökenlere yönelik istekler için ayarlanabilir. Örneğin, varsayılan olarak https://example.com:443 tarafından sunulan bir web sitesi, iki farklı kökenden oluşması nedeniyle https://shop.example.com:443 ' e XMLHttpRequestyapamaz.

Bu güvenlik kısıtlaması üzerinde çalışmak için kaynaklar arası kaynak paylaşımı (CORS) kullanılabilir. CORS ile kökenlere, köken arası kaynak erişimi için izin verilebilir. Uygulamanızda köken arası kaynak erişiminiz varsa, büyük olasılıkla bazı CORS üstbilgilerini zaten kullanıyorsunuz.

Instana arka uç ilintisini etkinleştirmek için aşağıdaki yapılması gerekir:

  1. Sunucu tarafında aşağıdaki üstbilgilerle yanıt vererek YönOrtamıana 'nın başlangıç noktaları arası isteklere ilişkin ilinti üstbilgilerine izin verin.

    Sunucunuzun hem uçuş öncesi istekler hem de düzenli istekler için bu üstbilgilerle yanıt vermesi gerektiğini lütfen unutmayın. Uçuş öncesi istekler ( OPTIONS HTTP yöntemiyle tanımlanabilir), isteklerin sunucuya yayınlanabileceğini doğrulamak için tarayıcı tarafından yürütülür.

    Access-Control-Allow-Origin: https://your-origin.example.com
    Access-Control-Allow-Headers: X-INSTANA-T, X-INSTANA-S, X-INSTANA-L
    
  2. JavaScript aracısını CORS ' un doğru yapılandırıldığını ve bu ilinti üstbilgilerini ayarlaması gerektiğini bildirin:

    ineum('allowedOrigins', urls);
    

Parametre

Değiştirge Açıklama
urls (RegExp[]) İzin verilen URL ' lerle eşleşecek RegExp nesneleri dizisi.

Bu tarihten bu yana

allowedOrigins komutu, YönOrtamıAna Yayın 185ile başlayarak kullanılabilir. Daha eski yayınlarla whitelistedOrigins diğer adını kullanın.

Diğer Ad

whitelistedOrigins komutu, allowedOriginsiçin kullanımdan kaldırılmış bir diğer addır.

Örnek

ineum('allowedOrigins', [/.*api\.example\.com.*/]);

Bu değişikliklerden sonra uygulamanızın düzgün çalışıp çalışmadığını denetleyin. JavaScript aracısına sunucu tarafında arka uç korelasyon üstbilgileri (örneğin, kökenlere izin verme) CRS ' yi yapılandırmadan eklemesi için talimat verilmesi, web sitenizi kırma olasılığının yüksek olduğu bir olasılığa sahiptir!

HTTP istek/yanıt üstbilgilerini yakala

XMLHttpRequest / fetch isteklerinde HTTP istek/yanıt üstbilgileri JavaScript aracısı tarafından yakalanabilir. JavaScript aracısının captureHeaders komutuyla yakalamasını istediğiniz HTTP üstbilgilerini tanımlayabilirsiniz.

Tarayıcı içinde, aynı kaynak ilkesi özel üstbilgilere erişimi kısıtlar. Köken arası kaynak paylaşımı (CORS) yapılandırması olmadan, JavaScript aracısı tüm HTTP üstbilgilerini yakalayamayabilir. CRS ' yi etkinleştirmek için bkz. Köken Arası İstek Arka Uç İlintisi. CORS ile, JavaScript Agent tarafından yalnızca COSR ' nin karşıladığı istek/yanıt üstbilgileri ve Erişim Denetimi-Göster-Üstbilgileri 'nde tanımlananlar toplanabilir.

Parametre

Değiştirge Açıklama
captureHeaders (RegExp[]) JavaScript aracısının yakalamasını istediğiniz HTTP istek/yanıt üstbilgilerinin anahtarıyla eşleşecek RegExp nesneleri dizisi.

Bu tarihten bu yana

captureHeaders komutu, YönOrtamıAna Yayın 216ile başlayarak kullanılabilir.

Örnek

ineum('captureHeaders', [/content-type/i]);