Node.js Toplayıcısı Kuruluşu
- Node.js Collector Paketinin Kurulması
- Genel Pitfalls
- Gelişmiş Devreye Alma Senaryoları
- Gelişmiş Oluşturma Senaryoları
- Yerel Eklentiler
- Geliştirme Sırasında Node.js Toplayıcısını Devre Dışı Bırakma
- Paket Adının Değiştirilmesi
- @instana/collector Package 'ın güncellenmesi
- Ayrıca bkz.
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:
@instana/collector' i projenizin yerel bağımlılığı olarak kurma ya da- Hedef sisteme
@instana/collectorgenel 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 (sonFROMdeyiminden sonra venodeişlemini başlatan sonCMDya daENTRYPOINTifadesinden önce) aşağıdaki satırı ekleyerek yapmanız gerekir:ENV NODE_OPTIONS="--require ./node_modules/@instana/collector/src/immediate"Not:
src/immediatekı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,
--requiredeğiştirgesini Node.js' yi başlatan komuta ekleyebilirsiniz. Normalde uygulamayınode app/index.jsgibi bir şey yaparak başlatacaksanız, ek bir--requirekomut satırı bağımsız değişkeni ekleyin. Örneğin,node app/index.jskomutunu aşağıdaki gibi değiştirin:node --require ./node_modules/@instana/collector/src/immediate app/index.jsNot:
src/immediatekı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 sonCMDya daENTRYPOINTöğesini buna göre değiştirmeniz gerekir.--requiredeğ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/instanayerine gerçek yolu koymanız gerekir. Uygulamayı Dockerile oluşturursanız,Dockerfileürününüze (sonFROMdeyiminden sonra bir yerde venodeişlemini başlatan sonCMDya daENTRYPOINTifadesinden ö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/immediatekı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,
--requiredeğiştirgesini başlayan komuta ekleyebilirsiniz Node.js. Normalde uygulamayınode /path/to/app/gibi bir şey yaparak başlatacaksanız, ek bir--requirekomut satırı bağımsız değişkeni ekleyin. Örneğin,node /path/to/appkomutunu aşağıdaki gibi değiştirin:node --require /path/to/instana/node_modules/@instana/collector/src/immediate /path/to/app`.Not:
src/immediatekı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 sonCMDya daENTRYPOINTöğesini buna göre değiştirmeniz gerekir.--requiredeğ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/collectormodü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' ninrequiresü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,requireiş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ızcahttpgibi 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.
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-optionalya dayarn --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-optionalişaretini kaldırın ya danpm install --no-optional/yarn --ignore-optionaladımından sonra söz konusu bağımlılıklar için belirtik kuruluş adımları ekleyin:npm install @instana/autoprofile/yarn add @instana/autoprofilenpm install event-loop-stats/yarn add event-loop-statsnpm install gcstats.js/yarn add gcstats.js
npm install/yarnadı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/collectorkomutu yürütüldüğünde,package.jsondosyanı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 installkomutunun yürütülmesi,package.jsondosyanızdaki sürüm aralığıyla eşleşen en son sürümü de kurar, ancaknode_modulesklasörü, sürüm aralığıyla eşleşen bir@instana/collectorsürümü içermiyor ve- Paketin sürümünü kilitleyen bir
package-lock.jsondosyası 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.