ما هو PM2؟
PM2 (Process Manager 2) هو مدير عمليات قوي لتطبيقات Node.js. فهو لا يقوم فقط بتشغيل وإعادة تشغيل التطبيقات، بل يوفر أيضًا أدوات مدمجة لمراقبة الأداء وإدارة التجميع (clustering) وجمع المقاييس في الوقت الفعلي.
لماذا نحتاج PM2؟
عند نشر تطبيقات الإنتاج (production) على Node.js، تظهر مهام مثل: إعادة التشغيل التلقائي عند حدوث عطل، موازنة الحمل بين أنوية CPU، عرض السجلات (logs) وتتبع استخدام الذاكرة/CPU. يحل PM2 كل هذه المهام بشكل جاهز، مستبدلاً بذلك عدة أدوات (مثل nodemon, forever, cluster).
التثبيت
npm install -g pm2يسمح التثبيت العام (global) بتشغيل PM2 من أي مكان في النظام.
وظائف المراقبة الأساسية
- pm2 list — يعرض جميع العمليات الجارية مع PID والحالة واستهلاك الذاكرة و CPU.
- pm2 monit — شاشة تفاعلية في الطرفية (terminal) تعرض مقاييس كل عملية في الوقت الفعلي.
- pm2 show <id> — معلومات تفصيلية عن عملية معينة: مدة التشغيل (uptime)، عدد مرات إعادة التشغيل، إصدار Node.js، متغيرات البيئة.
- pm2 logs — عرض السجلات المجمعة لجميع التطبيقات أو لعملية معينة.
- pm2 status — حالة مختصرة لجميع التطبيقات.
مثال كود (Node.js)
قم بإنشاء ملف app.js:
const http = require('http');const server = http.createServer((req, res) => { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello from monitored app!');});server.listen(3000, () => { console.log('Server running on port 3000');});قم بتشغيله مع المراقبة:
pm2 start app.js --name my-app --watchpm2 monitالعلامة --watch تعيد تشغيل التطبيق تلقائياً عند تغيير الملفات. الأمر pm2 monit سيفتح لوحة حيث سترى تحميل CPU، الذاكرة، عدد الطلبات، ومدة التشغيل (uptime).
متى يتم الاستخدام
PM2 مثالي لبيئات الإنتاج: خوادم الويب (Express, Koa)، خدمات API، البوتات، الخدمات المصغرة (microservices). لا غنى عنه عندما تحتاج إلى:
- ضمان عمل التطبيق 24/7
- إعادة التشغيل التلقائي بعد العطل
- توسيع نطاق التطبيق لاستخدام جميع أنوية المعالج
- جمع المقاييس للتحليل المستقبلي
- إدارة السجلات بشكل مركزي
PM2 غير مناسب للنصوص البرمجية لمرة واحدة أو التطوير المحلي (لهذا فإن nodemon أفضل).
الخلاصة
PM2 هو المعيار الفعلي (de-facto) لمراقبة تطبيقات Node.js. فهو سهل التثبيت، ويوفر مجموعة غنية من المقاييس، ويتكامل بسهولة مع أنظمة التنبيه (عبر الإضافات). ابدأ بـ pm2 monit لترى صحة تطبيقك في الوقت الفعلي.