Giới thiệu
Trong thế giới phát triển ứng dụng Node.js, quản lý quy trình là một yếu tố quan trọng giúp đảm bảo ứng dụng của bạn luôn hoạt động trơn tru. PM2 là một trong những trình quản lý quy trình phổ biến nhất, cho phép bạn theo dõi và khởi động lại các ứng dụng Node.js một cách dễ dàng. Tuy nhiên, phiên bản miễn phí của dịch vụ giám sát PM2 chính thức, Keymetrics, chỉ cho phép bạn theo dõi tối đa 4 quy trình.
Bài viết này sẽ giới thiệu một giải pháp thay thế miễn phí và mã nguồn mở mang tên pm2.web. Bạn có thể tự triển khai hệ thống này mà không gặp giới hạn về số lượng quy trình cần theo dõi. Chúng ta sẽ cùng tìm hiểu cách triển khai pm2.web bằng cách sử dụng Vercel và MongoDB Atlas.
Nội dung bài viết
- Kiến trúc tổng quan
- Bước 1: Cài đặt MongoDB Atlas
- Bước 2: Triển khai Dashboard trên Vercel
- Bước 3: Cài đặt Backend Agent
- Trình bày hiệu quả
- Tổng kết
- Tài nguyên tham khảo
Kiến trúc tổng quan
pm2.web được chia thành hai phần chính:
Dashboard
Phần giao diện người dùng được xây dựng bằng Next.js, bao gồm cả phần frontend và API. Chúng ta sẽ triển khai phần này trên nền tảng Vercel.
Backend
Phần này được gọi là Backend trong tài liệu chính thức, thực tế là một Agent chạy trên máy chủ mà bạn muốn giám sát. Agent sẽ kết nối với PM2 BUS API để đọc trạng thái của các quy trình và gửi dữ liệu tới MongoDB.
Dashboard và Backend giao tiếp với nhau thông qua MongoDB Atlas, điều này có nghĩa là bạn không cần mở firewall hay lộ địa chỉ IP nội bộ của mình.
Bước 1: Cài đặt MongoDB Atlas
Trước tiên, bạn cần đăng nhập vào MongoDB Atlas và tạo một cluster miễn phí. Sau khi đã tạo xong, hãy sao chép chuỗi kết nối mà bạn sẽ sử dụng sau này.
Cấu hình truy cập mạng
Trong phần Network Access, hãy thêm địa chỉ 0.0.0.0/0 để cho phép kết nối từ Vercel (do IP của Vercel có thể thay đổi).
Bước 2: Triển khai Dashboard trên Vercel
Truy cập vào tài liệu chính thức và nhấn nút “Deploy”.
Cài đặt biến môi trường
Bạn cần cấu hình các biến môi trường như sau:
MONGODB_URI= chuỗi kết nối MongoDB Atlas của bạnNEXTAUTH_SECRET= chuỗi ngẫu nhiên mà bạn tự tạo (có thể sử dụngopenssl rand -base64 32hoặc truy cập generate-secret.vercel.app).
Lưu ý rằng lần đầu tiên triển khai, có thể sẽ gặp phải lỗi. Điều này không có gì đáng lo, bạn chỉ cần vào phần Settings → Build & Development Settings → Framework Preset và chọn Next.js, sau đó thực hiện lại việc Redeploy.
Khi quá trình triển khai hoàn tất, bạn sẽ được chuyển đến trang đăng ký.
⚠️ Lưu ý quan trọng: Tài khoản đầu tiên bạn đăng ký sẽ tự động trở thành owner và bạn có thể quản lý quyền truy cập trong giao diện người dùng.
Bước 3: Cài đặt Backend Agent
Tài liệu chính thức
Bạn có thể tham khảo tài liệu cài đặt Backend tại pm2.web - Backend.
Giả sử máy chủ nội bộ của bạn có IP là 192.168.1.2, hãy truy cập vào máy chủ đó.
Tải xuống và cài đặt
Sử dụng lệnh sau để tải về và cài đặt:
bash
git clone https://github.com/oxdev03/pm2.web.git
cd pm2.web
# Cài đặt tại thư mục gốc để tránh lỗi pm2
npm install
# Vào thư mục backend
cd apps/backend
npm install
# Sao chép mẫu biến môi trường
cp .env.example .env
Cấu hình biến môi trường
Mở tệp .env và thêm:
bash
MONGODB_URI=chuỗi kết nối MongoDB Atlas của bạn
Khởi động Agent
Quay lại thư mục gốc của dự án và thực hiện lệnh sau:
bash
pm2 start npm --name "pm2.web" -- run "start:apps:backend"
pm2 save
pm2 startup # Để khởi động tự động sau khi reboot
Giờ đây, bạn có thể mở trình duyệt và truy cập vào URL mà Vercel cung cấp, bạn sẽ thấy dữ liệu trên Dashboard.
Backend sẽ tự động gửi trạng thái PM2 tới MongoDB, và Dashboard sẽ tự động cập nhật.
Trình bày hiệu quả
Trên Dashboard, bạn có thể:
- Theo dõi trạng thái của tất cả các quy trình (Running, CPU, Memory sử dụng)
- Khởi động lại hoặc dừng quy trình từ xa
- Giám sát trạng thái PM2 trên nhiều máy chủ khác nhau
Tổng kết
Sau khi thực hiện theo các bước hướng dẫn, bạn sẽ có một hệ thống giám sát PM2 hoàn chỉnh, bao gồm:
- ✅ Hoàn toàn miễn phí
- ✅ Giao diện đẹp và hỗ trợ chế độ tối
- ✅ Quản lý quyền sử dụng người dùng
- ✅ Quản lý nhiều máy chủ qua giao diện web
Với hệ thống này, bạn không cần phải lo lắng về giới hạn 4 quy trình của Keymetrics nữa.