- Bạn đã bao giờ rơi vào tình huống không có bất kỳ dấu hiệu nào để giải quyết sự cố ứng dụng chưa?
- Khách hàng của bạn đã từng thông báo về việc dịch vụ đột nhiên ngừng hoạt động không?
Với những trường hợp này, bạn cần phải sử dụng một hệ thống quản lý (monitoring system) máy chủ NodeJS. Trong bài viết này, bạn sẽ được giới thiệu về các framework phổ biến để theo dõi hệ thống NodeJS của bạn một cách hiệu quả hơn.
Mục lục
PM2
PM2 là công cụ được sử dụng phổ biến bởi các lập trình biên để đảm bảo các ứng dụng hoạt động được hiệu quả. PM2 có thể chạy trực tiếp trên môi trường Production và theo dõi chúng từ CLI hoặc giao diện web. Bạn có thể cài đặt tool này dưới dạng mô-đun NPM.
PM2 là một giải pháp có sẵn cho doanh nghiệp, cung cấp các tính năng sau:
- Quản lý nhiều ứng dụng NodeJS trên một máy chủ duy nhất.
- Quản lý error log và ứng dụng.
- Tích hợp giao diện web để theo dõi tình trạng và chỉ số sức khỏe của ứng dụng.
- Tự động tạo nhóm cho các ứng dụng NodeJS.
- Tải lại ứng dụng một cách nhanh chóng.
- Hỗ trợ cho các tập lệnh khởi động.
- Truyền log đến giao diện web.

PM2
Để cài đặt PM2, đảm bảo rằng bạn đã cài đặt NPM. Để validate cài đặt và phiên bản của NPM, hãy sử dụng lệnh bên dưới.
npm --version
Lệnh này sẽ hiển thị cho bạn phiên bản NPM nếu nó được cài đặt.
Hơn nữa, cài đặt PM2 bằng lệnh dưới đây:
npm install -g pm2
Global flag -g sẽ cài đặt và cung cấp module trên global dưới dạng lệnh. Để bắt đầu bất kỳ ứng dụng nào bằng PM2, hãy chuyển đến thư mục chứa dự án NodeJS và chạy lệnh bên dưới:
pm2 start <start-filename> --name myapp
Lệnh trên khởi chạy một ứng dụng NodeJS bằng tệp được chỉ định trong argument đầu tiên. Nó cũng đặt tên cho ứng dụng với tên là myapp. Khi thực thi ứng dụng NodeJS bằng pm2, nó đảm bảo rằng dịch vụ không bị gián đoạn và nếu có, nó sẽ cố gắng khởi động lại ứng dụng tự động.
Sematext – Monitoring Tools full-stack
Sematext chức năng monitor full-stack. Việc giám sát full-stack cho phép bạn có cái nhìn toàn diện về sự hiệu quả và khả dụng của hệ thống cơ sở hạ tầng và ứng dụng, log, trải nghiệm người dùng, sức khỏe và các chỉ số hiệu suất của API, chứng chỉ SSL, v.v.
Sematext tích hợp hơn 100 công nghệ, bao gồm cả NodeJS. Dưới đây là một số ví dụ:
- Máy chủ web – Nginx, Apache
- Cơ sở dữ liệu – MySQL, MariaDB, PostgreSQL, Redis
- Container – Kubernetes, Docker, Rancher
- Ngôn ngữ khác – PHP, Scala, Python, Go, Java
- AWS – EC2, ELB, S3, Aurora
Và còn nhiều nữa…
NodeJS monitoring giúp theo dõi độ trễ, tỷ lệ yêu cầu, garbage collection, sự bất thường, workers, sự kiện, khả năng hoạt động của website,… Bạn có thể trực quan hóa dữ liệu trên dashboard đẹp, có sẵn hoặc tạo một dashboard tùy chỉnh nếu cần.
Bên cạnh đó, bạn có thể nhận thông báo khi mọi thứ không ổn thông qua Slack, WebHooks, PagerDuty, MS Teams, v.v. Sematext cung cấp một giải pháp giám sát toàn diện và phân tích log. Bạn có thể kiểm tra phiên bản demo để trải nghiệm nền tảng này.
Better Uptime – Monitor tool dùng để quản lý và giám sát toàn diện
Better Uptime là một monitor tool dùng để quản lý và giám sát toàn diện. Cho phép bạn kiểm soát và duy trì khả dụng của ứng dụng và dịch vụ của mình một cách hiệu quả và chuyên nghiệp. Ứng dụng này cung cấp một nền tảng cho phép bạn theo dõi Uptime của ứng dụng hoặc dịch vụ của mình, quản lý và giải quyết các sự cố nhanh chóng và tạo ra trang trạng thái (status page) công khai để cung cấp thông tin về trạng thái hoạt động cho người dùng.

Better Uptime – Monitor tool dùng để quản lý và giám sát toàn diện
Việc thiết lập mất 3 phút. Sau đó, bạn sẽ nhận được cuộc gọi, email hoặc cảnh báo Slack bất cứ khi nào ứng dụng Node.js của bạn không hoạt động bình thường hoặc ngừng hoạt động hoàn toàn. Các tính năng chính của framework này là:
- Kiểm tra HTTP(s), Ping, API, SSL & TLD expiration, và Cron jobs
- Cảnh báo qua cuộc gọi điện thoại không giới hạn
- Dễ dàng lên lịch gọi báo động
- Chụp màn hình và ghi log lỗi của sự cố
- Tích hợp với Slack, Teams, Heroku, AWS và hơn 100 tích hợp khác
Appmetrics
Appmetrics là một dự án mã nguồn mở được quản lý và duy trì bởi IBM. Dự án này cung cấp những thành phần cơ bản để bạn có thể thu thập, theo dõi và phân tích các chỉ số quan trọng về hoạt động của ứng dụng như tốc độ giao dịch dữ liệu, hiệu suất truy vấn cơ sở dữ liệu, sử dụng tài nguyên máy tính như CPU và bộ nhớ cũng như các thông số khác liên quan đến hiệu suất, hoạt động của ứng dụng.
Ngoài ra, bạn cũng có thể kết hợp nó với plugin khác như appmetrics-dash hay sử dụng nó như một middleware để xây dựng ứng dụng monitor cho các dự án của mình.
Raygun
Raygun là một nền tảng để quản lý và giám sát hiệu suất ứng dụng cho nhiều ngôn ngữ lập trình, bao gồm cả NodeJS. Nó giúp bạn gỡ lỗi các vấn đề trong thời gian thực với crash logs, phân tích mã ứng dụng và tìm điểm lỗi chính xác từ mã nguồn.
Dưới đây là một số tính năng của Raygun:
- Cung cấp báo cáo lỗi trực tiếp và chính xác
- Hỗ trợ báo cáo lỗi toàn diện trên tất cả các tầng ứng dụng
- Giám sát phiên người dùng theo thời gian thực
- Giám sát hiệu suất máy chủ và phát hiện các hạn chế thời gian thực
Với các tính năng mạnh mẽ này, Raygun là một công cụ quan trọng cho việc quản lý và giám sát hiệu suất ứng dụng. Nó giúp bạn nhanh chóng xác định và sửa chữa các lỗi, tối ưu hóa hiệu suất và đảm bảo ứng dụng của bạn hoạt động một cách ổn định và hiệu quả.
Express Status Monitor
ExpressJS được biết đến như là monitor tool phổ biến nhất được sử dụng trong NodeJS. Đây là một công cụ mã nguồn mở dành riêng cho việc monitoring ExpressJS.
Như bạn có thể thấy trong hình ảnh trên, bạn có thể giám sát thời gian phản hồi, tần suất yêu cầu, mã trạng thái, sử dụng CPU/bộ nhớ và tải trung bình.

Express Status Monitor – Monitor tools
ClinicJS
Clinic.js là một thư viện được sử dụng để tích hợp vào các ứng dụng NodeJS để giám sát và thu thập các thông số hiệu suất quan trọng. Nó kết hợp ba công cụ chính là Doctor, Bubbleprof và Flame. Mỗi công cụ này được sử dụng để giám sát các thông số khác nhau.
ClinicJS Doctor:
- Thu thập các thông số sức khỏe và heuristics
- Tự động chèn các probes vào ứng dụng
- Cung cấp giao diện đồ họa để xem hiệu suất ứng dụng và các thông số thời gian thực
- Tạo ra các đề xuất để tối ưu hóa ứng dụng
ClinicJS Bubbleprof:
- Vẽ biểu đồ bubble mô tả quá trình thực thi ứng dụng nội bộ
- Giúp bạn xác định lỗi bằng cách hiển thị biểu đồ thực thi hàm
- Thu thập các thông số sử dụng các hooks bất đồng bộ
- Cung cấp thông tin về độ trễ giữa các lời gọi hàm
ClinicJS Flame:
- Giám sát các thông số CPU đặc biệt
- Giao diện đồ họa cho việc giám sát thời gian thực hiệu suất CPU của ứng dụng
- Tạo ra các frame graph giúp xác định các giá trị tối đa của các thông số
- Cung cấp cái nhìn về các hoạt động tiêu thụ CPU của ứng dụng của bạn
AppSignal
AppSignal là một sản phẩm thương mại cung cấp tự động instrument cho Node.js HTTP call, Express, Next.js và Postgres.
Để bắt đầu sử dụng, bạn cần cài đặt một agent nhẹ của AppSignal trên máy chủ, nơi nó thu thập các thông số cần thiết. Ở mức cao, nó thực hiện các công việc sau đây:
- Monitor Performance: tìm và sửa lỗi trong mã hoặc cơ sở hạ tầng khiến ứng dụng hoạt động chậm hoặc không hiệu quả.
- Đo lường: hiển thị những thông số quan trọng trên bảng điều khiển.
- Phát hiện bất thường: nhận thông báo khi có sự cố không như mong đợi xảy ra.
- Monitor Server: không cần sử dụng phần mềm giám sát máy chủ khác. Bạn có tất cả các thông số tiêu chuẩn về tài nguyên như CPU, Ổ đĩa, Bộ nhớ, Mạng, v.v.
Prometheus + Grafana
Đây là sự kết hợp của Prometheus và Grafana – hai phần mềm phổ biến nhất hiện nay. Prometheus có một phiên bản client dành cho Node.js được gọi là prom-client, được cài đặt trên máy chủ NodeJS để thu thập các thông số. Sau đó, bạn có thể cài đặt Grafana trên cùng máy chủ hoặc từ xa để lấy các thông số từ Prometheus để hiển thị đồ họa.
Bạn có thể tạo một bảng điều khiển Grafana từ đầu dựa trên yêu cầu của mình hoặc sử dụng hai dashboard sau đây:
- NodeJS application dashboard
- NodeJS Metrics
Tuy nhiên, với 2 Monitoring Tools này, bạn cần phải có kiến thức trong việc sử dụng Grafana và Prometheus. Nếu bạn cần sự trợ giúp trong việc học Prometheus, bạn có thể tham khảo khóa học trên Udemy để có thêm tài liệu và hướng dẫn chi tiết về việc sử dụng nền tảng này.
Đối với việc phát triển và duy trì ứng dụng, quản lý, giám sát hiệu suất và hoạt động của ứng dụng là rất quan trọng. Với 9 monitoring tools trên đây, bạn hoàn toàn có thể giải quyết các vấn đề như website đột nhiên ngừng hoạt động hay không tìm ra lỗi của dự án. Đây sẽ là những công cụ hiệu quả giúp bạn tối ưu thời gian làm việc đó.