توصيف Node.js Collector

بالنسبة لمعظم الحالات التي يتم استخدامها ، يكون كافيا لبدء تشغيل أداة تجميع Intana Node.js بطريقة غير صحيحة معrequire('@instana/collector')();وأترك اختيارات التوصيف المفترضة في مكانها. يمكنك أيضا تمرير عنصر توصيف عند بدء أداة تجميع Intana Node.js :

require('@instana/collector')({
  // configuration options, see below
});

بالاضافة الى ذلك ، يمكنك توصيف وحدة تجميع Node.js بواسطة متغيرات بيئة التشغيل.

اتصال 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

القيم الممكنة (حالة الحروف غير حساسة) :

تسمية خدمة

وتشكل الخدمات مفهوما محوريا داخل نظام "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.

لاحظ أن الاستدعاء الذي يتم تنفيذه أثناء رفض الوعد لا يتم تعليمه على أنه خطأ بسبب الرفض الذي لم يتم التعامل معه. ويرجع السبب في ذلك إلى شقين :

  1. حالات الرفض التي لم يتم التعامل معها لا تؤدي الى حدوث خطأ في وقت تشغيل Node.js . حتى اذا حدثت عمليات رفض لم يتم معالجتها أثناء تشغيل طلب ، فانه يمكن الاستمرار في تشغيل الطلب بنجاح.
  2. لا يكون لوقت تشغيل 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. وهذا يساعد في الحفاظ على مستوى الأداء لعملية التتبع عند الحد الأدنى في السيناريوهات التي يتم فيها تنفيذ مثل هذه الاستدعاءات بالتتابع السريع. في الوقت الحالي ، هذه الامكانية هي التطبيق ويجب اتاحتها بوضوح. وسيصبح هذا هو السلوك الافتراضي في واحدة من الاصدارات التالية.

لاتاحتها في الحال ، يمكن استخدام أي من الطرق الثلاثة التالية :

لاحظ أنه سيتم تجاهل اختيارات التوصيف هذه بمجرد أن يصبح التصرف كاختيار مفترض.

وبسبب الطريقة التي تعمل بها هذه الخاصية ، من الممكن أن يكون لاتاحة هذا الاختيار تأثير على استخراج النقاط الطرفية 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

أنظر أيضا