Làm quen với Mackerel: Công cụ giúp bạn giám sát hệ thống hiệu quả hơn
Giới thiệu
“Good engineers fix problems; great engineers prevent them.”
Tạm dịch: Kỹ sư giỏi biết sửa lỗi, nhưng kỹ sư xuất sắc là người ngăn chặn lỗi xảy ra.
Trong vận hành hệ thống, phòng ngừa luôn rẻ hơn khắc phục.
Một dòng code lỗi có thể sửa trong vài phút, nhưng chỉ cần hệ thống downtime vài phút thôi cũng đủ khiến doanh nghiệp thiệt hại nặng nề, thậm chí mất cả lòng tin của khách hàng.
Và để “phòng ngừa”, không có cách nào hiệu quả hơn là quan sát và giám sát hệ thống một cách chủ động.
Bạn có thể viết code tốt, test kỹ, deploy mượt, nhưng nếu không có công cụ theo dõi và cảnh báo, chỉ cần một lần CPU full hay ổ đĩa đầy là… toang ngay.
Ngược lại, nếu bạn có cơ chế giám sát tốt, bạn sẽ nhìn thấy vấn đề trước khi nó trở thành sự cố, chủ động xử lý và giữ cho hệ thống luôn ổn định.
Đó chính là sự khác biệt giữa việc “chữa cháy” và “phòng cháy” — và tin mình đi, phòng cháy bao giờ cũng dễ thở hơn.
Trong bài blog này mình sẽ giới thiệu đến các bạn một công cụ có tên là Mackerel - "Dịch vụ giám sát máy chủ SaaS với giao diện người dùng trực quan, được tối ưu hóa cho kỷ nguyên đám mây, thúc đẩy văn hóa giám sát/vận hành hệ thống theo nhóm." trích theo những gì dịch vụ này viết trên website của họ.
https://en.mackerel.io/
Cùng mình xem cách cài đặt và trải nghiệm Mackerel để theo dõi hệ thống nhé.
Cài đặt
Trước khi bắt tay vào cài đặt, mình sẽ giải thích một chút về hai khái niệm sau để tránh mọi người hiểu nhầm:
-
Mackerel
là dịch vụ giám sát SaaS (Software as a Service) chạy trên nền web. Đây là nơi bạn đăng nhập để xem dashboard, biểu đồ, cảnh báo, và tình trạng hệ thống. Tất cả dữ liệu hiển thị trong giao diện web Mackerel đều được thu thập từ các server của bạn. -
mackerel-agent
là chương trình nhỏ được cài trên từng server (ví dụ: EC2, on-premise hoặc container). Nhiệm vụ của nó là thu thập thông tin hệ thống như CPU, RAM, disk, network, load average… rồi gửi dữ liệu định kỳ về dịch vụ Mackerel qua Internet. Agent này chính là “đôi tai – đôi mắt” của Mackerel trong hệ thống của bạn.
Đăng ký tài khoản và lấy API Key Mackerel
Để sử dụng được Mackerel, bạn cần có tài khoản và API key. Việc này chỉ mất khoảng vài phút.
Bước 1: Đăng ký tài khoản Mackerel
- Truy cập https://mackerel.io
- Nhấn Sign up ở góc trên bên phải.
- Nhập email, password hoặc đăng ký bằng tài khoản Gmail, Github.
- Sau khi đăng ký, Mackerel sẽ gửi mail xác nhận. Vào email của bạn và bấm vào link để kích hoạt tài khoản.
Bước 2: Tạo Organization
Sau khi đăng nhập, Mackerel sẽ yêu cầu bạn tạo một Organization – hiểu đơn giản là “workspace” chứa tất cả server và agent của bạn.
- Đặt tên cho organization.
- Chọn gói miễn phí (Free Plan) để bắt đầu.
Sau khi tạo xong, bạn sẽ được chuyển đến trang dashboard chính của Mackerel.
Bước 3: Lấy API Key
- Trong dashboard, chọn Organization (góc trái trên màn hình)
- Trang thông tin về Organization của bạn hiện ra và kéo xuống dưới một chút bạn sẽ thấy có phần API Key.
- Sao chép API key này vì bạn sẽ cần dùng ở phần cài đặt agent.
Cài đặt Mackerel Agent lên EC2
Bước 1: SSH vào server EC2
Mở terminal trên máy tính của bạn, kết nối tới EC2 bằng ssh. Dưới đây là một ví dụ minh hoạ:
ssh aws-thaicpb-batch-server
Bước 2: Cài đặt chkconfig (nếu chưa có)
chkconfig là công cụ quản lý service giúp bật/tắt tự động dịch vụ khi khởi động hệ thống. Bạn chạy lệnh sau để cài đặt:
sudo dnf install -y chkconfig
Bước 3: Cài đặt mackerel-agent
Chạy lệnh sau để cài đặt:
sudo rpm -ivh https://mackerel.io/file/agent/rpm/mackerel-agent-latest.noarch.rpm
Tham khảo tài liệu chính thức của Mackerel: https://mackerel.io/docs/entry/howto/install-agent
Bước 4: Cấu hình mackerel-agent
Tạo hoặc chỉnh sửa file cấu hình /etc/mackerel-agent/mackerel-agent.conf, ví dụ:
apikey = "YOUR_MACKEREL_API_KEY"
Lưu ý YOUR_MACKEREL_API_KEY
là API key của Mackerel đã được đề cập ở phần trên.
Bước 5: Khởi động và kích hoạt mackerel-agent tự động chạy khi khởi động
sudo systemctl enable mackerel-agent
sudo systemctl start mackerel-agent
Trong đó:
- Lệnh đầu tiên là để kích hoạt mackerel và từ sau trở đi mỗi khi EC2 được khởi động (reboot) lại thì mackerel cũng sẽ được khởi động lại.
- Lệnh thứ hai để bật mackerel-agent.
Sau khi bật xong, chúng ta có thể kiểm tra trạng thái agent bằng lệnh sau:
sudo systemctl status mackerel-agent
Nếu kết quả hiển thị trông như thế này thì có nghĩa là bạn đã cài đặt thành công. 🚀
Mở lại trang Dashboard của Mackerel và chọn mục Host là bạn sẽ thấy máy chủ của mình đã được hiển thị trên màn hình.
Tuỳ Chỉnh Cấu Hình Cho Mackerel Agent
Sau khi cài đặt, mackerel-agent sẽ tự động thu thập các chỉ số cơ bản như CPU, Memory, Disk, Network, Load Average,… Tuy nhiên, bạn hoàn toàn có thể tùy chỉnh thêm để mở rộng khả năng giám sát.
Ví dụ:
- Theo dõi MySQL, PostgreSQL, Redis, hoặc Nginx, Apache.
- Giám sát container Docker hoặc các process cụ thể.
- Thu thập custom metrics riêng của ứng dụng (như số request, queue size, v.v.).
Chi tiết về các tùy chọn cấu hình có thể tham khảo tại tài liệu chính thức của Mackerel: https://mackerel.io/docs/entry/spec/agent
Kết luận
Vậy là bạn đã hoàn thành bước đầu tiên trong việc giám sát hệ thống bằng Mackerel: từ đăng ký, cài đặt đến khởi động agent thành công. Giờ đây, bạn đã có thể thấy dữ liệu hệ thống của mình xuất hiện trực quan trên dashboard Mackerel với CPU, Memory, Disk, Network và nhiều chỉ số khác được cập nhật theo thời gian thực. Nhưng đây mới chỉ là khởi đầu. Trong những phần tiếp theo, chúng ta sẽ cùng tìm hiểu cách:
- Xem và tùy chỉnh dashboard để hiển thị những thông số quan trọng nhất với hệ thống của bạn.
- Thêm custom metric hoặc plugin riêng, giúp agent thu thập dữ liệu đặc thù cho ứng dụng.
- Thiết lập cảnh báo (Alert Rules) để Mackerel tự động phát hiện khi hệ thống có dấu hiệu bất thường, tích hợp Mackerel với Slack để mọi cảnh báo được gửi trực tiếp đến kênh Slack của team, giúp bạn nắm bắt sự cố nhanh chóng mà không cần liên tục dán mắt vào dashboard.
Với Mackerel, bạn sẽ không chỉ biết khi hệ thống gặp vấn đề, bạn sẽ được thông báo nếu có bất thường xảy ra và đó chính là giá trị thật sự của một hệ thống giám sát tốt. 🚀
All rights reserved