وحدة مراقبة عملية NodeJS
يتم اختبار هذه الحزمة فقط باستخدام إصدارات Node.js LTS.
ملاحظة: تعمل هذه الوحدة حاليًا فقط على أنظمة تشغيل Linux .
تبدأ هذه الوحدة خيط منفصل داخل وقت تشغيل NodeJS الذي يراقب ويجمع إحصائيات حول عملية NodeJS قيد التشغيل. ثم يتم إرسال هذه الإحصائيات كرسائل JSON عبر بيانات بيانات UDP عبر مأخذ توصيل مجال محلي.
فيما يلي قائمة البيانات تقارير الوحدة بشكل دوري:
{ status:
{ pid: <pid of the node process>,
ts: <current time stamp>,
cluster: <process group id>,
reqstotal: <total requests processed by this node process server>,
utcstart: <when the process was started>,
events: <number of new reports being processed since last stats reporting>,,
cpu: <cpu usage>,
mem: <memory usage>,
cpuperreq: <cpu usage per request>,
oreqs: <current open requests count>,
sys_cpu: <system cpu load>,
oconns: <current open connections count>,
user_cpu: <user cpu load>,
rps: <requests per second>,
kbs_out: <kbs of data transferred since last stats reporting>,
elapsed: <time elapsed since last event>,
kb_trans: <total kbs of data transferred>,
jiffyperreq: <cpu usage in terms of ticks per request>,
gc: {
scavenge: { count: <number>, elapsed_ms: <number>, max_ms: <number> },
marksweep: { count: <number>, elapsed_ms: <number>, max_ms: <number> }
}
}
}
يوفر تطبيق Nodejs قيد التشغيل القدرة على إدخال نشاط جمع القمامة من خلال إنشاء خصائص للقراءة فقط في process.monitor.gc التي تقارير:
count : حدث عدد من أحداث توقف GC في العالمelapsed : الوقت التراكمي (بالميلي ثانية) التي قضاها في GCمع NPM تفعل:
npm install monitr
var monitor = require ( 'monitr' ) ; monitor . start ( ) ;يولد خيط ويراقب العملية. يكتب إحصائيات العملية كل ثانية إلى مسار المقبس.
monitor . stop ( ) ;ينتهي الخيط ويغلق المقبس.
monitor . setIpcMonitorPath ( '/tmp/my-process-stats.mon' ) ;يعين اسم مقبس البيانات لكتابة الإحصائيات. الإعدادات الافتراضية إلى /tmp/nodejs.mon
يدعم Monitr الوظائف الصحية المخصصة حيث يمكن للتطبيق الإبلاغ عن صحته. تتم إضافة الأساليب التالية إلى Process.monitor لتعيين المعلومات الصحية والحصول عليها.
setHealthStatus ( isDown , statusCode )
isDown ( )
getStatusCode ( )
getStatusTimestamp ( ) - Return seconds when setHealthStatus was last called
getStatusDate ( ) - Return Date objectبمجرد استدعاء Sethealthstatus ، فإن حالة JSON ، الموصوفة أعلاه ، سيكون لها حقول إضافية.
health_status_timestamp : < timestamp when the setHealthStatus was invoked , in sec > ,
health_is_down : < app is down or up , boolean > ,
health_status_code: < health status code > يقوم Monitr بتثبيت معالج SIGHUP المخصص والذي سيطبع اختياريًا من Nodejs Stack Backtrace من JavaScript الذي يتم تنفيذه حاليًا. قد يكون هذا مفيدًا لتصحيح الأخطاء حيث قد تكون عملية NodeJS عالقة .
يبحث عن ملفات /proc /* على النظام للإبلاغ عن استخدام وحدة المعالجة المركزية. إنه يبحث عن ملفات/proc/pid/* على النظام للإبلاغ عن إحصائياتها الخاصة. process.monitor.* يتم تعيين الأساليب بواسطة lib/monitor.js .
إنه يدعو Process.monitor.* طرق للإبلاغ عن إجمالي الطلبات منذ بدء المراقبة ( reqstotal ) ، والطلبات الحالية في الطيران ( oreqs ) ، والاتصالات المفتوحة الحالية ( oconns ) وإجمالي البيانات التي تم إرجاعها منذ بدء المراقبة ( kb_trans ). ملاحظة: قد تكون oreqs أكبر من oconns عند تمكين Keepalive .
يعلق على خطافات مجموعة V8 Garbage إلى أداة (لكل نوع GC) الإحصائيات التالية لكل فاصل الإبلاغ.
count : عدد مرات استدعاء نوع GCelapsed_ms : تم حظر سلسلة Time Time Elapsed Nodejsmax_ms : الحد الأقصى لقضاء الوقت الذي تم حظره بواسطة أي حدث GC واحديرجى الرجوع إلى أمثلة/readMe.md للحصول على أمثلة توضح استخدام هذه الوظائف.