توصيف
Node.js Collector
بالنسبة لمعظم الحالات التي يتم استخدامها ، يكون كافيا لبدء تشغيل أداة تجميع Intana Node.js بطريقة غير صحيحة معrequire('@instana/collector')();وأترك اختيارات التوصيف المفترضة في مكانها. يمكنك أيضا تمرير عنصر توصيف عند بدء أداة تجميع Intana Node.js :
require('@instana/collector')({
// configuration options, see below
});
بالاضافة الى ذلك ، يمكنك توصيف وحدة تجميع Node.js بواسطة متغيرات بيئة التشغيل.
- الاتصال بالبرنامج الوسيط
- التتبع
- تحديد اسم العملية
- حالات الإبلاغ التي لم يتم التعامل معها
- تسجيل
- ملف مواصفات آلي™
- تجميع آلي لمكالمات Exit Exit
- الغاء اتاحة عودة الى Add-Built Native Add-Ons
- مرجع توصيف كامل
- ارجع أيضا الى
اتصال
Agent
النظام الرئيسي الى
Agent
تقوم أداة التجميع بمحاولة الاتصال مع Inttana Agent من خلال IP127.0.0.1وكمغالطة بواسطة gateway المفترض للنظام الرئيسي. اذا كان البرنامج الوسيط غير متاح تحت أي من IPs ، يمكنك استخدامagentHostاختيار لاستخدام IP مهيأ.
require('@instana/collector')({
agentHost: '::1' // use IPv6 to contact via localhost
});
أو الضغط على متغير بيئة التشغيل.
require('@instana/collector')({
agentHost: process.env.HOST_IP
});
اذا لم يتم توصيفه ، ستقوم وحدة تجميع Intana بالبحث عن متغير بيئة تم استدعاؤهINSTANA_AGENT_HOSTواستخدم ما تم تعريفه في متغير بيئة التشغيل هذا للاتصال مع agent. اذا لم يكن هناك متغير بيئة تشغيل ، سيحاول الاتصال بالبرنامج الوسيط أولا فيlocalhostوبعد ذلك على gateway المفترض.
منفذ
Agent
تقوم أداة التجميع بمحاولة الاتصال مع Intana Agent من خلال المنفذ42699. اذا كان قد تم تغيير المنفذ ، يمكنك استخدامagentPortاختيار لتغيير المنفذ.
require('@instana/collector')({
agentPort: 42699
});
اذا لم يتم توصيفه ، ستقوم وحدة تجميع Intana بالبحث عن متغير بيئة تم استدعاؤهINSTANA_AGENT_PORTواستخدم ما تم تعريفه في متغير بيئة التشغيل هذا للاتصال مع agent. اذا لم يكن هناك متغير بيئة تشغيل ، فانه سيعود الى المنفذ المفترض 42699.
Kubernetes & OpenShift
اذا تم تشغيل تطبيق Node.js الخاص بك ووكيل In-agent في مجموعة تجميع Kubernies ، برجاء التحقق من المطبوعات الفنية الموجودة في الوصول إلى شبكة (Kubernies) للحصول على معلومات عن التوصيف المطلوب في هذا الاعداد.
تتبع 
يتم اتاحة خاصية التتبع افتراضيا. لالغاء اتاحته ، قم بتمرير الاختيار التالي لوظيفة الاعداد للبدء :
require('@instana/collector')({
tracing: {
enabled: false
}
});
يمكنك أيضا الغاء اتاحة التتبع عن طريق تحديد متغير بيئة التشغيلINSTANA_DISABLE_TRACING=true.
عند عدم اتاحة التتبع ، لا يمكنك استخدام تتبع SDK أو OpenTracking API ، وسيتم أيضا الغاء اتاحة التتبع الآلي. سيتم تجاهل الاستدعاءات التي تستخدم SDK أو OpenTracking بشكل غير مباشر.
عدم اتاحة التتبع الآلي
يتم اتاحة التتبع الآلي أيضا افتراضيا. لالغاء اتاحة التتبع الآلي فقط (ترك التتبع اليدوي بواسطة اتاحة SDK أو openTracking) ، قم بتمرير الاختيار التالي لوظيفة الاعداد للبدء :
require('@instana/collector')({
tracing: {
automaticTracingEnabled: false
}
});
أخيرا ، يمكنك الغاء اتاحة التتبع الآلي من خلال تحديد متغير بيئة التشغيلINSTANA_DISABLE_AUTO_INSTR=true.
عند الغاء اتاحة التتبع الآلي ، فانه يمكنك استخدام SDK أو OpenTracking API لتكوين spans يدويا.
Capactea Stack Traces
وبصفة مفترضة ، تقوم أداة التجميع بالتقاط آخر عشرة مواقع استدعاء لكل فترة خروج تم التقاطها. يمكن زيادة هذه القيمة وتقليلها عند الضرورة. (لاحظ أنه لم يتم تجميع تتبعات مجموعة تتبع ادخال HTTP-فانها ستقوم بعرض كود Node.js الأساسي فقط.) استخدام قيمة من0لالغاء اتاحة التقاط تتبع المجموعة.
require('@instana/collector')({
tracing: {
stackTraceLength: 10
}
});
يمكنك أيضا توصيف htgnel ecart kcats عن طريق تحديد متغير بيئة التشغيلINSTANA_STACK_TRACE_LENGTH.
الغاء اتاحة وحدات التتبع المنفردة
منذ : 1.80.0
يمكنك الغاء اتاحة امكانية التتبع المفردة. هذا يجب أن يتم استخدامه في ظروف خاصة أو لتصحيح الأخطاء.
require('@instana/collector')({
tracing: {
disabledTracers: ['graphql', 'grpc']
}
});
بدلا من ذلك ، يمكن تخزين هذا عن طريق تحديد متغير بيئة التشغيلINSTANA_DISABLED_TRACERSللحصول على كشف مفصول بفاصلات لوحدات التتبع التي تريد الغاء اتاحتها :
INSTANA_DISABLED_TRACERS=graphql,grpc
القيم الممكنة (حالة الحروف غير حساسة) :
amqp: عدم اتاحة الأجهزة الخاصة بكamqplibمجموعة برامج لتتبع RabbitMQ/amqp.bunyan: عدم اتاحة الأجهزة الخاصة بكbunyanمجموعة البرامج لمجموعة رسائل تحذير / خطأ Bunian.db2: عدم اتاحة الأجهزة الخاصة بكibm_dbمجموعة برامج لتتبع IBM DB2 .elasticsearchLegacy: عدم اتاحة الأجهزة الخاصة بكelasticsearchمجموعة برامج تتبع Elasticsearch (الوحدة التابعة legacy client).elasticsearchModern: عدم اتاحة الأجهزة الخاصة بك@elastic/elasticsearchمجموعة برامج تتبع Easticksearch (وحدة تابعة حديثة).express: عدم اتاحة الأجهزة الخاصة بكexpressمجموعة برامج Express path template.fastify: عدم اتاحة الأجهزة الخاصة بكfastifyمجموعة البرامج لتجميع قالب المسار.graphql: عدم اتاحة أدوات مجموعات البرامجgraphqlو@apollo\/gatewayبالنسبة لتتبع LOQSQ.grpc: عدم اتاحة الأجهزة الخاصة بكgrpcمجموعة لتتبع gRPC.grpcjs: عدم اتاحة الأجهزة الخاصة بك@grpc/grpc-jsمجموعة برامج لتتبع JavaScript gRPC.hapi: عدم اتاحة الأجهزة الخاصة بك@hapi/callمجموعة لمجموعة قالب المسار الى Hapi.httpClient: تفكيك الأدوات الأساسيةhttpوhttpsوحدات البرامج لتتبع اتصالات HTTP (S) الصادرة (خروج).httpServer: تفكيك الأدوات الأساسيةhttpوhttpsوحدات البرامج لتتبع استدعاءات HTTP (S) الواردة (ادخالات).ioredis: عدم اتاحة الأجهزة الخاصة بكioredisمجموعة البرامج الخاصة بتتبع Redis (ارجع الى الاختيار أيضاredis).kafkaJs: عدم اتاحة الأجهزة الخاصة بكkafkajsمجموعة البرامج الخاصة بتتبع Kafka (ارجع الى الاختيار أيضاkafkaNode).kafkaNode: عدم اتاحة الأجهزة الخاصة بكkafka-nodeمجموعة البرامج الخاصة بتتبع Kafka (ارجع الى الاختيار أيضاkafaJs).koa: عدم اتاحة الأجهزة الخاصة بكkoa-routerمجموعة البرامج لمجموعة قالب مسار Ka.log4js: عدم اتاحة الأجهزة الخاصة بكlog4jsمجموعة لتجميع رسائل سجل التحذير / الخطأ.mongodb: عدم اتاحة الأجهزة الخاصة بكmongodb/mongodb-coreمجموعة البرامج الخاصة بتتبع MongoDB .mssql: عدم اتاحة الأجهزة الخاصة بكmssqlمجموعة لتتبع MSSQL.mysql: عدم اتاحة الأجهزة الخاصة بكmysqlومجموعات برامج `mysql2الخاصة بتتبع MySQL .natsStreaming: عدم اتاحة الأجهزة الخاصة بكnode-nats-streamingمجموعة البرامج الخاصة بتتبع NATS (ولكن ليس NATS) (ارجع الى الاختيار أيضاnats).nats: عدم اتاحة الأجهزة الخاصة بكnatsمجموعة البرامج الخاصة بتتبع NATS (لكن ليس NATS Gasting) (ارجع أيضا الى الاختيارnatsStreaming).pgNative: عدم اتاحة الأجهزة الخاصة بكpg-nativepackage for PostgreSQL تتبع (أنظر أيضا الى الاختيار (pg).pg: عدم اتاحة الأجهزة الخاصة بكpgمجموعة البرامج الخاصة بتتبع PostgreSQL (ارجع الى الاختيار أيضاpgNative).pino: عدم اتاحة الأجهزة الخاصة بكpinoمجموعة لتجميع رسائل سجل التحذير / الخطأ.redis: عدم اتاحة الأجهزة الخاصة بكredisمجموعة البرامج الخاصة بتتبع Redis (ارجع الى الاختيار أيضاioredis).winston: عدم اتاحة الأجهزة الخاصة بكwinstonمجموعة لتجميع رسائل سجل التحذير / الخطأ.
تسمية خدمة 
وتشكل الخدمات مفهوما محوريا داخل نظام "Intana". وترتبط المكالمات والتشنجات والآثار ارتباطا وثيقا بالخدمات. افتراضيا ، ستقوم أداة تجميع Node.js باستخدامnameوversionالخاصية المميزة من الرئيسيpackage.jsonملف. لتعديل اسم الخدمة ، يمكنك توصيفserviceNameالملكية.
require('@instana/collector')({
serviceName: 'shop'
});
يمكنك أيضا توصيف اسم خدمة مهيأ من خلال تحديد متغير بيئة التشغيلINSTANA_SERVICE_NAME.
تحديد اسم العملية
استخدام متغير بيئة التشغيلINSTANA_PROCESS_NAMEلتحديد تسمية مهيأة لكيان البنية التحتية الذي يمثل عملية Node.js .
تقارير
التي لم يتم التعامل معها بدون معالجة
يمكن أن تقوم وحدة تجميع Intana Node.js بتسجيل رفض وعد لم يتم معالجته كموضوعات الى Intana. يعد رفض وعد لم يتم التعامل معه عبارة عن وعد تم رفضه ولكن لم يتم تعريف أي معالج للرفض له (أي أن سلسلة الوعد لا تحتوي على أي وعد)..catch(...)).
لا يتم اتاحة هذه الامكانية بصفة مفترضة. اذا تم اتاحته وتم اكتشاف رفض وعد لم يتم معالجته ، يتم الابلاغ عن ذلك على أنه اصدار لدرجة الخطورة "تحذير" الى Incettana.
لاحظ أن الاستدعاء الذي يتم تنفيذه أثناء رفض الوعد لا يتم تعليمه على أنه خطأ بسبب الرفض الذي لم يتم التعامل معه. ويرجع السبب في ذلك إلى شقين :
- حالات الرفض التي لم يتم التعامل معها لا تؤدي الى حدوث خطأ في وقت تشغيل Node.js . حتى اذا حدثت عمليات رفض لم يتم معالجتها أثناء تشغيل طلب ، فانه يمكن الاستمرار في تشغيل الطلب بنجاح.
- لا يكون لوقت تشغيل Node.js طريقة لاكتشاف حالات الرفض التي لم يتم معالجتها في سياق اتصالات محددة. في الواقع ، يتم اكتشاف حالات الرفض التي لم يتم معالجتها فيما بعد ، وذلك عندما يكون الوعد المرتبط بها على وشك أن يتم تجميعه. بحلول ذلك الوقت ، تم بالفعل الانتهاء من الطلب الذي قام باطلاق الرفض الذي لم يتم معالجته وتم الرد عليه.
يمكن اتاحة هذه الامكانية باستخدام الاختيارreportUnhandledPromiseRejections، كما يلي :
require('@instana/collector')({
reportUnhandledPromiseRejections: true
});
بدء باستخدام Node.js 12.0.0 ، يوجد شارة سطر الأمر --unhandled-rejections التي تتحكم في كيفية التعامل مع عمليات رفض الوعد التي لم يتم معالجتها. لا يتم دعم عملية اصدار التقارير التي لم يتم معالجتها مع--unhandled-rejections=strict، لأنه في هذا النمط ، سيقوم Node.js بتحويل عمليات الرفض التي لم يتم معالجتها الى استثناءات لم يتم اكتشافها.
تسجيل 
توصيف مستوى سجل 
اذا كنت ترغب في تغيير مستوى السجل المفترض ، يمكنك توصيف ذلك من خلال :
require('@instana/collector')({
level: 'debug'
});
يمكنك أيضا توصيف مستوى السجل عن طريق تحديد متغير بيئة التشغيلINSTANA_LOG_LEVELاما الىdebug,info,warnأوerror. أخيرا ، تحديدINSTANA_DEBUGالى أي مجموعة حروف غير خالية سيتم تحديد مستوى السجل الىdebug.
برجاء ملاحظة أن مستوى السجل المفترض هوinfo. اذا كنت ترى سجلات تصحيح أخطاء غير متوقعة متعلقة بالنظام (خطوط الاتصال ، بما فيها"name":"@instana/collector"و"level":20) برجاء التحقق مما اذا كنت قد قمت بتحديد مستوى التسجيل لتصحيح الأخطاء في التوصيف الخاص بك كما هو موضح بأعلى أو اذاINSTANA_LOG_LEVEL=debugأوINSTANA_DEBUGيتم تحديده. اذا قمت باتاحة أداة التسجيل الخاصة بك (أنظر أدناه) ، فانك تكون مسئولا عن تحديد مستوى السجل به كما تريد.
Custom (Parent) Logger
ارجع الى تحديد أداة التسجيل.
ملف مواصفات آلي™
منذ : 1.98.1. يتطلب على الأقل Node.js 6.4.0
وهذه الميزة هي حاليا في مرحلة اختبار بيتا.
لاتاحة اضافة ملف مواصفات آلي™autoProfile: trueعند بدء أداة التجميع للبدء.
require('@instana/collector')({
autoProfile: true
});
يمكنك أيضا اتاحة ملف مواصفات آلي™ عن طريق تحديد متغير بيئة التشغيلINSTANA_AUTO_PROFILEالىtrue
التجميع الآلي لمكالمات Exit Exit
منذ : 1.108.0.
The Node.js tracer supports تجميع آلي of very short (< 10 ms), high frequency database calls. وهذا يساعد في الحفاظ على مستوى الأداء لعملية التتبع عند الحد الأدنى في السيناريوهات التي يتم فيها تنفيذ مثل هذه الاستدعاءات بالتتابع السريع. في الوقت الحالي ، هذه الامكانية هي التطبيق ويجب اتاحتها بوضوح. وسيصبح هذا هو السلوك الافتراضي في واحدة من الاصدارات التالية.
لاتاحتها في الحال ، يمكن استخدام أي من الطرق الثلاثة التالية :
- تحديد متغير بيئة التشغيل
INSTANA_SPANBATCHING_ENABLED=true. - استخدام توصيف in-code :
require('@instana/collector')({ tracing: { spanBatchingEnabled: true } }); - اضافة هذا الى agent
configuration.yaml:com.instana.plugin.nodejs: span-batching-enabled: true
لاحظ أنه سيتم تجاهل اختيارات التوصيف هذه بمجرد أن يصبح التصرف كاختيار مفترض.
وبسبب الطريقة التي تعمل بها هذه الخاصية ، من الممكن أن يكون لاتاحة هذا الاختيار تأثير على استخراج النقاط الطرفية endpoint ، وتغيير عدد الاستدعاءات لبعض نقاط نهاية قاعدة بيانات latency المنخفضة.
عدم اتاحة السقوط مرة أخرى الى Native Add-Os Built-Built
اذا كان ارتباطات البرامج المساعدة الأصلية مثلgcstats.jsوevent-loop-statsلم يتم تركيبها بنجاح عند تنفيذ الأمرnpm installتشغيل ، مجموعة البرامج@instana/collectorسيقوم آليا بمحاولة استخدام الملفات الثنائية التي تم تكوينها مسبقا التي تطابق نظام التشغيل ، نسخة Node.js وlibcالاختلاف. تكون هذه الخاصية متاحة فقط على x64 Linux. يمكن الغاء اتاحته بواسطة تحديدINSTANA_COPY_PRECOMPILED_NATIVE_ADDONS=false.
مرجع توصيف كامل
فيما يلي كل قيم التوصيف الممكنة ، مع القيم المفترضة لها :
{
agentHost: '127.0.0.1',
agentPort: 42699,
serviceName: null,
// the log level:
level: 'info',
tracing: {
enabled: true,
automaticTracingEnabled: true,
// Spans are batched and sent to the agent once every second, or if ${forceTransmissionStartingAt} spans have been collected (whichever happens earlier)
forceTransmissionStartingAt: 500,
// If more than ${maxBufferedSpans} have been buffered and the collector has not been able to send them to the agent, it will start to drop spans to avoid causing memory issues.
maxBufferedSpans: 1000,
http: {
// This is usually configured at the agent level (configuration.yaml).
extraHttpHeadersToCapture: []
},
// How many stack trace frames are to be captured. Can also be 0 to disable collecting stack traces.
stackTraceLength: 10,
// To disable individual tracing plug-ins.
disabledTracers: [],
// Can also be configured at the agent level (configuration.yaml).
spanBatchingEnabled: false
},
metrics: {
timeBetweenHealthcheckCalls: 3000
},
// This is usually configured at the agent level (configuration.yaml).
secrets: {
matcherMode: 'contains-ignore-case',
keywords: ['key', 'pass', 'secret']
},
autoProfile: false
}
فيما يلي كشف بكل متغيرات بيئة التشغيل التي تقوم أداة تجميع Node.js بدعمها :
| متغير بيئة التشغيل | اختيار توصيف مساوي |
|---|---|
INSTANA_AGENT_HOST |
config.agentHost |
INSTANA_AGENT_PORT |
config.agentPort |
INSTANA_SERVICE_NAME |
config.serviceName |
INSTANA_PROCESS_NAME |
– |
INSTANA_DISABLE_TRACING=true |
config.tracing.enabled = false |
INSTANA_DISABLE_AUTO_INSTR=true |
config.tracing.automaticTracingEnabled = false |
INSTANA_DISABLED_TRACERS |
config.tracing.disabledTracers |
INSTANA_STACK_TRACE_LENGTH |
config.tracing.stackTraceLength |
INSTANA_LOG_LEVEL |
config.level |
INSTANA_DEBUG |
config.level = debug |
INSTANA_AUTO_PROFILE=true |
config.autoProfile = true |
INSTANA_SPANBATCHING_ENABLED=true |
config.tracing.spanBatchingEnabled = true |
INSTANA_TRACE_IMMEDIATELY=true |
config.tracing.activateImmediately = true |
INSTANA_COPY_PRECOMPILED_NATIVE_ADDONS |
– |