0
0
Lập trình
NM

Cách sử dụng pm2.web để xây dựng hệ thống giám sát PM2 miễn phí

Đăng vào 1 ngày trước

• 4 phút đọc

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

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ạn
  • NEXTAUTH_SECRET = chuỗi ngẫu nhiên mà bạn tự tạo (có thể sử dụng openssl rand -base64 32 hoặ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 Copy
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 Copy
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 Copy
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.

Tài nguyên tham khảo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào