JavaScript aracı API 'si
- Giriş
- Genel Nesne
- API Yapısı
- TypeScript Tip Tanımlamaları
- API'lar
- İzleme Anahtarı
- Raporlama URL'si
- Birden çok arka uç
- Sayfa
- Kullanıcıları Belirleme
- Oturum İzleme
- Meta Veriler
- Sayfa Yükleme Arka Uç İzleme Tanıtıcısı
- URL ' lerin İzlemeden Dışlanması
- URL ' lerden güvenlik sırlarını düzeltme
- Kullanıcı Zamanlamalarını İzlemelerin Dışında Tutma
- Sayfa Yüklendikten Sonra Bekleme Üst Sınırını Yapılandırma
- Sayfa Yükleme Tanıtıcısının Alınması
- Hata İzleme
- Özel Olayları Raporlama
- Kökler Arası İstek Arka Uç İlintisi
- HTTP istek/yanıt üstbilgilerini yakala
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,
XMLHttpRequestvefetcharacı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,
Zoneile başlayan işaretler ve ölçüler ve - Adları
startya daendile 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
stringya daundefinedolarak 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:
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 (
OPTIONSHTTP 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-LJavaScript 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]);