Node.js Toplayıcısı Kuruluşu

Node.js Collector Paketinin Kurulması

Not: Uygulamalarınız yalnızca Kubernetesüzerinde çalışıyorsa, bunun yerine Instana AutoTrace WebHook yöntemini kullanmayı düşünün.

Instana Node.js toplayıcısının kuruluşu basit iki adımlı bir işlemdir. Öncelikle, @instana/collector npm paketini uygulamanıza aşağıdaki yöntemlerle kurun:

npm install --save @instana/collector

CommonJS

Toplayıcı artık kurulduğundan, uygulamanın içinden etkinleştirilmesi gerekir. Bunu, komutunu zorunlu tutarak ve uygulamanızdaki ilk deyim olarak kullanıma hazırlayarak yapın. Toplayıcı belirli bilgilere erişemeyecek olduğundan, bunun ilk deyim olduğunu lütfen dikkat edin.

require('@instana/collector')();

// All other require statements must be done after the collector is initialized.
// Note the () after the require statement of the collector which initializes it.


// const express = require('express');

Yukarıda gösterilen kod, toplayıcıyı varsayılan yapılandırma seçenekleriyle başlatır. You can also pass in a configuration object when initializing the Instana Node.js collector. Geçerli yapılandırma seçeneklerinin bir listesi için yapılandırma sayfasına ve özellikle izlenen uygulamanız ile Yönortamın aracısı arasında bağlanırlığı yapılandırmaya ilişkin ayrıntılar için aracı iletişimi bölümüne bakın.

ECMAScript modülleri

When @instana/collector is installed as a dependency, you need to activate the collector for the application by loading the Instana Node.js collector through the --experimental-loaders bağımsız değişkeni. Daha fazla bilgi için bkz. ECMAScript Modülleri.

Genel Pitfalls

Toplayıcının yanlış bütünleştirilmesi genellikle gözlenebilirlik kaybına neden olur. Node.js uygulamanız YönOrtamı'ndagösterilmeye devam eder, ancak izleme kısmen çalışır. Bazı çağrılar izlenecek, ancak diğerleri kaybolacak.

Önemli: require deyimini uygulamanızdaki ilk deyim olarak almak ve daha sonra require('@instana/collector') tarafından dışa aktarılan işlevi çağırmak yeterli değildir. Yani, aşağıdakiler desteklenmez:

// WRONG!
require('@instana/collector'); // @instana/collector is not initialized

require('something');
require('another-thing');

...

Ve bu da değil:

// WRONG!
const instana = require('@instana/collector');

require('something');
require('another-thing');

instana(); // TOO LATE!
...

Bunun yerine, require('@instana/collector') tarafından dışa aktarılan işlevin diğer require ya da import deyimlerinden önce hemen çağrılması gerekir. Bu, yukarıda gösterildiği gibi bir deyimde ( require('@instana/collector')()içinde ikinci ayraç çiftini not edin) ya da ardışık iki deyimde yapılabilir:

// Correct:
const instana = require('@instana/collector');
instana(); // this is fine

// Now all other modules can be required:
require('something');
require('another-thing');
...

ECMAScript modüllerini (ESM) kullanırken, veri toplayıcıyı kod içinde aşağıdaki gibi içe aktarmayın ya da zorunlu kılmayın:

import instana from '@instana/collector'
instana()
import { something, else } from 'some-module';

Bunun yerine, deneysel yükleyiciler işaretinikullanarak toplayıcıyı yükleyin.

Birden çok izleyiciyle izleme

Instana ve üçüncü taraf izleyici (örneğin, New Relic, Dynatrace ya da Datadog) içeren tek bir Node.js uygulamasının izlenmesi desteklenmez.

Opentelemetry

Aynı Node.js uygulamasında hem OpenTelemetry SDK hem de YönOrtamı-toplayıcı kullanılması desteklenmez. Aşağıdaki sorunlara neden olabilir:

  • Instana 'da arama eksik
  • Instana 'da yinelenen veriler
  • Bozuk özel işlemden geçirmeler

Aynı Node.js uygulamasında hem OpenTelemetry SDK ' yı, hem de YönOrtamıcı toplayıcısını kullanmanız önerilmez. Opentelemetry SDK ' yı kullanmak istiyorsanız, bkz. Node.js OpenTelemetry bütünleştirmesi.

Gelişmiş Devreye Alma Senaryoları

Kubernetes & OpenShift

Instana AutoTrace WebHook

Not: Bu kuruluş yöntemi şu anda Teknik Önizleme 'de yer almaktadır.

Instana AutoTrace WebHook , Node.js uygulamalarının tüm Kubernetes kümesinde çalıştırılmasına ilişkin tüm gereksinimleri otomatik olarak yapılandıran bir Kubernetes Mutasyon WebHook Kabul Denetleyicisi uygulamasıdır.

Kubernetes kümelerinize YönOrtamı AutoTrace WebHook kurmayı seçerseniz, bu kümelerde çalışan Node.js uygulamalarınızdan herhangi birini izlemek için el ile bir adım gerçekleştirmenize gerek yoktur.

Not: If you use the Instana AutoTrace webhook and you want to use the Instana Node.js SDK, review the API ' yi AutoTrace WebHook ile birlikte kullanma section.

El ile kuruluş

Node.js uygulamanız ve Instana aracısı bir Kubernetes kümesinde çalışıyorsa, bu kurulumda gerekli yapılandırmaya ilişkin bilgi için Kubernetes ağ erişimi ile ilgili belgelere bakın.

Cloud Foundry

Not: Bu bölümde, YönOrtamıAna aracısının Cloud Foundry temelinin Diego hücrelerinde çalışmakta olduğu varsayılır. Diego hücresinde çalışan bir aracı olmadan, Cloud Foundry uygulamalarının izlenmesi desteklenmez.

Instana aracılarının ve ilgili Cloud Foundry ya da Pivotal Platform işlevselliğinin nasıl ayarlanacağına ilişkin bilgi için Cloud Foundry ve Pivotal Platform belgelerimize bakın.

Cloud Foundry' de cf push düzeyinde ve uygulama bildirgesi düzeyinde bir yapılandırma gerekli değildir. Gerekli tek adım, @instana/collector paketini yukarıda açıklandığı gibi Cloud Foundry Node.js uygulamasına eklemektir.

Apigee Microgateway (Apigee Microgateway)

Please refer to the Apigee Microgateway sayfası for information on how to use the Instana Node.js collector package with Apigee Mikroağ Geçidi (also known as edgemicro).

Next.js

Next.js uygulamaları için, Kaynak Kodu Değiştirmeden Kuruluşbaşlıklı konuda açıklanan yaklaşımı kullanmanızı öneririz.

Kaynak Kodunu Değiştirmeden Kuruluş

İzlenen uygulamanın kaynak kodunu değiştiremeyeceğiniz (ya da değiştirmek istemediğiniz) durumlar vardır. Bu senaryolar için aşağıdaki yaklaşım kullanılabilir. Bu, Webpack, Babel veya başka bir paketleyici veya nakil makinesi ile oluşturulan uygulamalar için de tercih edilen bir yaklaşımdır. Son olarak, Next.js uygulamaları için önerilen yaklaşım budur.

Bu yöntemin iki çeşnisi vardır:

  1. @instana/collector ' i projenizin yerel bağımlılığı olarak kurma ya da
  2. Hedef sisteme @instana/collector genel olarak kurma.

Her iki lezzet de aşağıdaki gibi ayrıntılı olarak açıklanır.

Bağımlılık Olarak Yerel Kuruluş

npm install -- save @instana/collector ya da yarn add @instana/collectorkomutunu çalıştırarak @instana/collector paketini projenizin bağımlılıklarına ekleyin. Kodunuza deyimi eklemeyin require('@instana/collector')(); . Aslında, JavaScript ya da TypeScript dosyalarınızın hiçbirinin herhangi bir @instana paketinden söz etmesi gerekli değildir.

CommonJS

NODE_OPTIONS ortam değişkenini ayarlayın ya da node yürütülür dosyasını başlattığınızda ek bir --require parametresi ekleyin.

Aşağıdaki adımlardan birini tamamlayın:

  • Node.js sürecini başlatan NODE_SEçENEKLERI değişkeni bundan önce ayarlayın:

    NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"
    

    Uygulamayı Dockerile oluşturursanız, bunu Dockerfile ' a (son FROM deyiminden sonra ve node işlemini başlatan son CMD ya da ENTRYPOINT ifadesinden önce) aşağıdaki satırı ekleyerek yapmanız gerekir:

    ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"
    

    Not: src/immediate kısmı önemlidir, bu nedenle yanlışlıkla atmadığınızdan emin olun. Yolun ./ ile başlaması gerekir; böylece Node.js bunun bir modül tanıtıcısı değil, göreli bir yol olduğunu bilir. Yol, yürürlükteki çalışma dizinine dayalı olarak değerlendirilir.

  • NODE_OPTIONS değişkenini ayarlamak yerine, --require değiştirgesini Node.js' yi başlatan komuta ekleyebilirsiniz. Normalde uygulamayı node app/index.jsgibi bir şey yaparak başlatacaksanız, ek bir --require komut satırı bağımsız değişkeni ekleyin. Örneğin, node app/index.js komutunu aşağıdaki gibi değiştirin:

    node --require ./node_modules/@instana/collector/src/immediate app/index.js
    

    Not: src/immediate kısmı önemlidir, bu nedenle parçayı yanlışlıkla atmadığınızdan emin olun. Yolun ./ile başlaması gerekir; böylece Node.js bunun bir modül tanıtıcısı değil, göreli bir yol olduğunu bilir. Yol, yürürlükteki çalışma dizinine dayalı olarak değerlendirilir. Bu uygulama Dockerkullanılarak oluşturulup çalıştırılırsa, Dockerfile ürününüzdeki son CMD ya da ENTRYPOINT öğesini buna göre değiştirmeniz gerekir.

    --require değiştirgesiyle ilgili ek bilgi için Node.js belgesinde -r, -- require module başlıklı konuya bakın.

Bu şekilde NODE_OPTIONS ya da --require eklendiğinde, uygulama kodundan önce Node.js toplayıcısı yüklenir ve kullanıma hazırlanır.

@instana/collector ' in bir paket yöneticisi tarafından hedef sisteme kurulması önemlidir, bu nedenle tüm bağımlılıkları da doğru şekilde kurulur. npm install ya da yarn/yarn install başka bir yerde (örneğin, bir oluşturma sisteminde) çalıştırılıp, sonuçtaki node_modules klasörünün hedef sisteme kopyalanması önerilmez. Paket kuruluş adımı, hedef mimaride ve doğru Node.js sürümü için gerçekleşmesi gereken yerel eklentilerin derlenmesini içerir.

ECMAScript modülleri

Önceki bölümiçindeki adımları izleyin, ancak --requireyerine aşağıdaki bağımsız değişkeni kullanın:

--experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjs

Notlar:

  • Node.js veri toplayıcısından 2.14.0ECMAScript desteği eklenmiştir.
  • Deneysel yükleyiciler v16düğümünden edinilebilir.
  • Instana Node.js toplayıcısı yükleyici tarafından otomatik olarak başlatılır.

Genel Kuruluş

Tüm bağımlılıkları hedef sistemde bulunan @instana/collector paketini bilinen bir yerde (örneğin, /path/to/instana/node_modules/@instana/collector) kullanılabilir kılın.

Örneğin, hedef sistemde npm install -g @instana/collector komutunu çalıştırabilirsiniz. npm yerine yarn kullanıyorsanız, npm install -gyerine yarn global add komutunu çalıştırın. Veri toplayıcıyı bulunduran bir uygulamaya kuruyorsanız, bu deyimi Dockerfile' e ekleyebilirsiniz. npm install -g komutunun paketi nereye koyduğunu bilmeniz gerekir; bu, işletim sistemine bağlıdır. npm ' nin kurulu paketleri nereye koyduğu hakkında daha fazla bilgi için Node.js belgesine bakın klasörler.

CommonJS

NODE_OPTIONS ortam değişkenini ayarlayın ya da node yürütülür dosyasını başlattığınızda ek bir --require parametresi ekleyin.

Aşağıdaki adımlardan birini tamamlayın:

  • Node.js işlemini başlatacağınız NODE_SEçENEKLERI değişkeni bundan önce ayarlayın:

    NODE_OPTIONS="--require /path/to/instana/node_modules/@instana/collector/src/immediate"
    

    /path/to/instana yerine gerçek yolu koymanız gerekir. Uygulamayı Dockerile oluşturursanız, Dockerfile ürününüze (son FROM deyiminden sonra bir yerde ve node işlemini başlatan son CMD ya da ENTRYPOINT ifadesinden önce) aşağıdaki satırı ekleyerek bunu yapmanız gerekir:

    ENV NODE_OPTIONS="--require /path/to/instana/node_modules/@instana/collector/src/immediate"
    

    Not: src/immediate kısmı önemlidir, bu nedenle parçayı yanlışlıkla atmadığınızdan emin olun. Yolun, Node.js ' ye modül tanıtıcısı değil, mutlak ya da göreli bir yol olduğunu söylemek için / ya da ./ ile başlaması gerekir.

  • Yerine NODE_SEçENEKLERI değişkenini ayarlarken, --require değiştirgesini başlayan komuta ekleyebilirsiniz Node.js. Normalde uygulamayı node /path/to/app/gibi bir şey yaparak başlatacaksanız, ek bir --require komut satırı bağımsız değişkeni ekleyin. Örneğin, node /path/to/app komutunu aşağıdaki gibi değiştirin:

    node --require /path/to/instana/node_modules/@instana/collector/src/immediate /path/to/app`.
    

    Not: src/immediate kısmı önemlidir, bu nedenle parçayı yanlışlıkla atmadığınızdan emin olun. Yolun, Node.js ' ye modül tanıtıcısı değil, mutlak ya da göreli bir yol olduğunu söylemek için / ya da ./ ile başlaması gerekir. Bu uygulama Dockerkullanılarak oluşturulup çalıştırılırsa, Dockerfile ürününüzdeki son CMD ya da ENTRYPOINT öğesini buna göre değiştirmeniz gerekir.

    --require değiştirgesiyle ilgili ek bilgi için Node.js belgesinde -r, -- require module başlıklı konuya bakın.

Bu şekilde NODE_OPTIONS ya da --require eklendiğinde, uygulama kodundan önce Node.js toplayıcısı yüklenir ve kullanıma hazırlanır.

@instana/collector ' in bir paket yöneticisi tarafından hedef sisteme kurulması önemlidir, bu nedenle tüm bağımlılıkları da doğru şekilde kurulur. @instana/collector ' in başka bir yere kurulması (örneğin, bir oluşturma sisteminde) ve paketin hedef sisteme kopyalanması önerilmez. npm install adımı, hedef mimaride ve doğru Node.js sürümü için gerçekleşmesi gereken yerli eklentilerin derlenmesini içerir.

ECMAScript modülleri

Önceki bölümiçindeki adımları izleyin, ancak --requireyerine aşağıdaki bağımsız değişkeni kullanın:

--experimental-loader /path/to/instana/node_modules/@instana/collector/esm-loader.mjs

Notlar:

  • Deneysel yükleyiciler şu anda Node.js v20ile uyumsuz.
  • Node.js veri toplayıcısından 2.14.0ECMAScript desteği eklenmiştir.
  • Deneysel yükleyiciler v16düğümünden edinilebilir.

Gelişmiş Oluşturma Senaryoları

Bundlers (Web Paketi ve Benzer)

Node.js sunucu uygulamanızı Webpack ya da Rollup gibi bir paketleyici ile önceden işlediğinizde tercih edilen kuruluş yöntemi, Kaynak Kodu Değiştirmeden Kuruluşbaşlıklı konuda açıklanmaktadır.

Diğer bir seçenek olarak, @instana/collector ' yi normal bir bağımlılık olarak da kurabilirsiniz.

Her iki durumda da node_modules klasöründeki bağımlılıklarınızın kodunu değil, yalnızca kendi kodunuzu paketlemeniz gerekir. Bunun iki nedeni vardır:

  • @instana/collector modülü, Webpack ile önceden işlenmesini desteklemiyor. Diğer sorunların yanı sıra, kodumuzda kullanılan dinamik zorunlu deyimler doğru şekilde çözümlenmeyecektir.
  • Üçüncü kişi kitaplıklarınıizleme kodu eklemek için, npm paketi @instana/collector , Node.js' nin require sürecini durdurur. Ancak, bu kitaplıklar çalıştırma zamanında yüklenmezse ve bunun yerine oluşturma sırasında kendi kodunuzla birlikte paketlenirse, require işlemi yürütülmez ve özel işlemden geçirme uygulanmaz. Instana izleme çalışmıyor ya da kısmen böyle bir düzende çalışıyor. (Kesin olarak, izleme yalnızca http gibi Node.js çekirdek modüllerinde çalışır; çünkü bu modüller varsayılan olarak paketleme dışında bırakılır.)

Bu nedenle, node_modules içindeki her şeyin tüm kod dönüşümlerinin dışında bırakılacağı şekilde paketleyicinizi yapılandırmanızı şiddetle öneririz.

Aşağıdakileri gerçekleştirmek için webpack-node-externals modülünü kullanabilirsiniz:

// your webpack.config.js:

const nodeExternals = require('webpack-node-externals');

module.exports = {
  ...
  // externals: nodeModules,
  externals: [nodeExternals()],
  ...
};

Açısal CLI kullanıyorsanız, özellikle Angular Universal/SSRile, bunları paketleme dışında bırakmak için angular.json dosyanıza "externalDependencies": ["@instana/collector"] (ve muhtemelen @instana/collector aygıtlarını içeren diğer kitaplıklar) eklemelisiniz (bkz. buraya).

Nakil işlemleri (Babel vb.)

Taşıyıcı kullanırken tercih edilen kuruluş yöntemi (Babel, Traceur ya da TypeScript derleyicisi tscgibi) Kaynak Kodu Değiştirmeden Kuruluşbaşlıklı konuda açıklanmaktadır.

Alternatif olarak, @instana/collector ürününü normal bir bağımlılık olarak kurabilirsiniz, ancak bu yaklaşımı önermiyoruz. Bu, import ve require deyimlerinin nakil yapanınız tarafından nasıl ele alındığına dikkat etmenizi gerektirir. Bu, nakil işlemciniz ES6 import deyimlerini işlerse özellikle içe aktarır. Ana dosyanızın üst kısmına bunun gibi bir şey koymak işe yaramayacaktır :

import instana from '@instana/collector';

// THIS WILL NOT WORK because transpilers change the order of imports and statements.
instana();

import express from 'express';

-Neden olmasın? ES6 belirtimine göre, modülün gövdesi yürütülmeden önce tüm içe aktarmalar değerlendirilir. Babel ve diğer nakiller bu kurala uygun hareket eder ve kaynak dosyaları naklederken tüm içe aktarmaları en üste taşır. Tüm gerçek stamerler ithalattan sonra konacak. Sonuç olarak, bu örnekteki express için içe aktarma, instana(); çağrıdan önce yerleştirilir. Nakledilen dosyanda buna benzer bir şey bulacaksın:

var _instana = _interopRequireDefault(require("@instana/collector"));

var _express = _interopRequireDefault(require("express"));

var _morgan = _interopRequireDefault(require("morgan"));

function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }

(0, _instana.default)(); // <- This is too late, since all other modules will already have been required.

...

Gördüğünüz gibi, @instana/collector init işlevine yapılan gerçek çağrı, nakledilen dosyadaki tüm zorunlu deyimlerin ardından gelir.

Bunun yerine, şöyle bir şey yapabilirsiniz:

// Put this import at the top of your main file. Only the import here,
// don't change this to "import instana from './instanaInit'"!
import './instanaInit';

// Now all the other imports can follow:
import express from 'express';
import morgan from 'morgan';

// The following statement is optional; it is only required if you want to use
// Instana's Node.js API (https://www.ibm.com/docs/en/instana-observability/current?topic=nodejs-instana-api):
// @ts-ignore (in case you are using TypeScript, to avoid 'Could not find a declaration file for '@instana/collector')
import instana from '@instana/collector';

instanaInit.js dosyası (ya da TypeScriptkullanıyorsanız instanaInit.ts ) şu bir deyime sahip olmalıdır:

require('@instana/collector')();

Bu şekilde, init işlevi işlem başladığında hemen çağrılır.

Genel olarak, herhangi bir nakil aracı kullanırken, @instana/collectorbütünleştirirken nakil yapanın çıkış dosyalarını incelemek iyi bir fikirdir.

## Native Add-ons {: #native-add-ons}

Bazı bilgiler, yerel eklentilerin yardımı olmadan Node.js programlarının kullanımına sunulmaz. Specifically, the Instana Node.js collector uses these add-ons:

  • Atık toplama hakkında bilgi almak için
  • Olay döngüsü etkinliğine ilişkin bilgileri almak için
  • Profil Oluşturma için

Tüm yerli eklentiler isteğe bağlı bağımlılıklardır. Toplayıcı bu yerli eklentiler olmadan düzgün çalışacaktır, ancak yukarıda belirtilen özellikler devre dışı bırakılacaktır. Bu bağımlılıklardan herhangi biri eksikse, başlatma sırasında uygulama günlüğüne şöyle bir günlük iletisi yazılır:

Could not load @instana/autoprofile. You will not get profiling information for this Node.js app in Instana, although
autoprofiling has been enabled. This typically occurs when native add-ons could not be built during module installation
(npm install/yarn) or when npm install --no-optional or yarn --ignore-optional have been used to install dependencies.
See the instructions to learn more about the requirements of the collector:
https://www.ibm.com/docs/de/obi/current?topic=nodejs-collector-installation#native-add-ons

Not: Ek atık toplama ve olay döngüsü metrikleri sizin için uygun değilse ve Node.jsüzerinde AutoProfile özelliğini kullanmayı planlamıyorsanız, bu iletiyi güvenle yoksayabilirsiniz.

Yerli eklentilerin eksik olmasının iki nedeni olabilir:

  • npm install --no-optional ya da yarn --ignore-optionalile bağımlılıklar kuruluyor. Bu işaret varsa, npm/yarn bu bağımlılıkları kurma girişiminde bulunmaz. Bunu düzeltmek için, kuruluş adımından --no-optional/--ignore-optional işaretini kaldırın ya da npm install --no-optional/yarn --ignore-optional adımından sonra söz konusu bağımlılıklar için belirtik kuruluş adımları ekleyin:
    • npm install @instana/autoprofile / yarn add @instana/autoprofile
    • npm install event-loop-stats / yarn add event-loop-stats
    • npm install gcstats.js / yarn add gcstats.js
  • npm install/yarn adımı sırasında eklenti derlemesi başarısız oldu. Bu bölümün geri kalanında bunun neden olabileceği ve nasıl düzeltileceği açıklanır.

Instana Node.js toplayıcı bağımlılığı ( npm install ya da yarn adımının bir parçası olarak) kurulduğunda, sisteminiz ve Node.js sürümü için yerli eklentiler otomatik olarak derlenir. Derlemenin çalışması için sistemin make, g++ ve python gibi araçlarının kurulu olması gerekir. Bu araçlar genellikle build-essential adlı ya da benzeri bir paket kullanılarak kurulabilir (işletim sisteminizin paket yöneticisine ve kaydına bağlı olarak). Aşağıdaki örneklerde, sık kullanılan Linux dağıtımları için bunun nasıl gerçekleştirileceği gösterilmektedir:

# for Debian-based distributions (including Ubuntu)
apt-get install build-essential
# or, for Fedora-based distributions (CentOS, Red Hat, etc.)
yum groupinstall "Development Tools"
# or, for Alpine Linux
apk add build-base python

Önemli: Uygulamayı çalıştıracak makinede bağımlılıkların kurulması gerekir. Tersi durumda, yerli eklentiler hedef makinenin sistem mimarisiyle ya da kullanılmakta olan Node.js sürümüyle uyumsuz olabilir. Bu nedenle, npm install/yarn komutunu bir oluşturma sunucusunda çalıştırarak bağımlılıkları kurmak ve uygulamayı (bağımlılıklar dahil) hedef makineye kopyalamak hatalı bir uygulamadır .

Node.js uygulamanızı bir taşıyıcıda çalıştırırsanız, bu özellik daha fazla dikkat edilmeyi hak eder. Docker oluşturmanızdaki node-gyp hatalarını denetlemek isteyebilirsiniz ( gyp ERR! ve node-pre-gyp ERR!öğelerini arayın). Bunlar varsa, bunları inceleyip değerlendirmelisiniz. Bazıları güvenle yoksayılabilir. Örneğin, bazı paketler ön derlenmiş ikili dosyaları karşıdan yüklemeye çalışabilir; bu başarısız olursa, node-gyp aracılığıyla derlemeye geri dönerler; yani, derleme adımı çalışırsa, karşıdan yükleme hatası yoksayılabilir. Diğer paketler derleme sırasında birçok not ve uyarı yayar; bu da yoksayılabilir.

İsteğe bağlı bir bağımlılığın kuruluşu gyp ERR! not okile biterse, bu bağımlılığa bakmak isteyebilirsiniz. Instana, Dockerfileürününüzü düzeltmek için ne yazık ki destek sağlayamıyor olsa da, bazı örnek Dockerfilessağlıyoruz.

npm installçalıştırılırken gcstats.js ve event-loop-stats gibi yerel eklenti bağımlılıkları başarıyla kurulmadıysa, @instana/collector paketi otomatik olarak işletim sistemiyle ( Node.js sürümü ve libc çeşitlemesi) eşleşen önceden oluşturulmuş ikili dosyaları kullanmayı dener. Bu özellik yalnızca x64 Linuxüzerinde kullanılabilir. INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS=falseayarlanarak devre dışı bırakılabilir.

Geliştirme Sırasında Node.js Veri Toplayıcısını Devre Dışı Bırakma

(Yerel) geliştirme için Node.js toplayıcısını devre dışı bırakmanın en kolay yolu ortam değişkenlerini kullanmaktır. Express çerçevesi, bu amaçla kullanılmasını önerdiğimiz NODE_ENV ortam değişkenini bu amaçla popülerleştirdi. Node.js toplayıcısını aşağıdaki şekilde yükleyin:

if (process.env.NODE_ENV !== 'development') {
  require('@instana/collector')();
}

Daha sonra, NODE_ENV değişkeni developmentolarak ayarlanarak uygulamanızı yerel olarak başlatın. Örneğin:

export NODE_ENV=development
# -or-
NODE_ENV=development node myApp.js

Paket Adı Değişikliği

instana-nodejs-sensor paketi artık güncellenmiyor.

Not: Paket adını kullanmaya devam edin instana-nodejs-sensor? @instana/collector' e geçin.

@instana/collector Paketinin Güncellenmesi

Instana 'nın Node.js desteğini sürekli olarak iyileştirir ve bu geliştirmelerden yararlanmak için her zaman @instana/collector paketinin en son sürümünü kullanmanızı öneririz. Uygulamanızı her oluşturuşunuzda/kullanıma sunuşunuzda paketin en son sürümüne güncellenmesi iyi bir uygulamadır. Güncelleme, diğer npm paketleriyle aynı şekilde çalışır.

İlk npm install --save @instana/collector (yukarıya bakın) işleminden sonra, package.json ürününüz "@instana/collector": "^1.68.2"gibi bir bağımlılık bildirimi içerir. Düzeltme işareti (^) bir SemVer sürüm aralığını belirtir (bu örnekte ^1.68.2 , >= 1.68.2 && < 2.0.0anlamına gelir). Sürüm aralıkları, npm install ve npm update komutlarının davranışını belirler.

Sürümün "@instana/collector": "1.68.2" olarak belirtilmesi (düzeltme işareti olmadan ya da daha genel olarak, bir sürüm aralığı kullanılmadan), bu tam sürümü sabitler; yani, npm install ve npm update her zaman 1.68.2sürümünü kullanır. Bunu yapmanız ÖNERİLMEZ. Daha fazla ayrıntı için sürüm aralıklarındaki npm belgelerine bakın.

  • Projenizde npm update @instana/collector komutu yürütüldüğünde, package.json dosyanızdaki sürüm aralığıyla eşleşen en son sürüm kurulur. package.jsoniçindeki sürüm aralığı dizgisini de günceller. Bir lockfile (package-lock.json) varsa, bu dosya da buna göre güncellenir. npm update(npm güncellemesi) için belgeleri okuyun.
  • Projenizde npm install komutunun yürütülmesi, package.json dosyanızdaki sürüm aralığıyla eşleşen en son sürümü de kurar, ancak
    1. node_modules klasörü, sürüm aralığıyla eşleşen bir @instana/collector sürümü içermiyor ve
    2. Paketin sürümünü kilitleyen bir package-lock.json dosyası yok.

Sonuç olarak, uygulamanızı Yapılandırma Öğesi üzerinde oluşturur ve her seferinde yeni bir npm install yaparsanız ( node_modules klasörünü oluşturmalar arasında tutmazsanız) ve package-lock.json 'i sürüm denetimine kesinleştirmezseniz, npm install ' yi oluşturma adımı olarak çalıştırmak en son sürümü almak için yeterlidir. Diğer tüm durumlarda ( node_modules , oluşturmalar arasında ve/veya package-lock.json sürüm denetiminde tutulması), oluşturmanın bir parçası olarak npm update @instana/collector komutunu çalıştırmanız önerilir.

npmyerine yarn kullanıyorsanız, ayrıntılar için özellikle yarn update iplik belgelerine bakın, ancak temel olarak öneriler ve yordamlar aynıdır.

Ayrıca Bkz.