Vấn đề: Cơn ác mộng mang tên “Cài Agent”
Hồi mới vào nghề, mình từng “ăn hành” khi sếp giao nhiệm vụ giám sát 30 máy ảo kèm một mớ Database nằm rải rác. Lựa chọn đầu tiên mình nghĩ tới là Prometheus hoặc Zabbix. Nhưng đời không như là mơ. Để giám sát một con MySQL, mình phải SSH vào server đó và cài MySQL Exporter. Muốn xem thông số RAM/CPU? Lại phải cài thêm Node Exporter.
Kết quả là mình mất trắng 5 ngày chỉ để copy-paste lệnh cài đặt và mở port firewall. Chưa kể, mỗi lần server cập nhật OS, đống Agent này lại lăn đùng ra lỗi. Lúc đó, mình mới thấu hiểu giá trị của một hệ thống không cần Agent (Agentless): Không xâm nhập, không cài cắm, không gây rác server mục tiêu.
Tại sao các công cụ truyền thống đôi khi là “dao mổ trâu”?
Zabbix hay Prometheus là những tượng đài trong giới DevOps, điều đó không cần bàn cãi. Tuy nhiên, chúng thường đi kèm hai rào cản lớn:
- Cấu hình quá rắc rối: Bạn phải vật lộn với file YAML dài dằng dặc, quản lý hàng chục port của exporter và đau đầu thiết lập firewall cho từng kết nối.
- Gánh nặng bảo trì: Duy trì hàng trăm Agent trên đủ loại môi trường (Linux, Windows, Cloud) tiêu tốn rất nhiều tài nguyên hệ thống và thời gian của kỹ thuật viên.
Nếu bạn chỉ cần một dashboard trực quan, hỗ trợ từ Website (HTTP), Database (JDBC) đến Server (SSH) mà không muốn can thiệp sâu vào bên trong, bạn cần một hướng đi khác gọn gàng hơn.
Agent vs Agentless: Chọn bên nào?
Thực tế hiện nay có 2 cách tiếp cận chính:
- Dùng Agent: Cài phần mềm lên server đích. Ưu điểm là dữ liệu cực kỳ chi tiết, nhưng cực hình ở khâu cài đặt và bảo trì định kỳ.
- Agentless: Hệ thống giám sát đứng từ xa, dùng các giao thức tiêu chuẩn như SSH, SNMP hoặc JDBC để “hỏi thăm” sức khỏe server.
Sau khi thử qua nhiều công cụ, mình dừng chân tại HertzBeat. Đây là dự án mã nguồn mở cực nhẹ, hỗ trợ giám sát đa tầng mà không đòi hỏi cài đặt phức tạp lên đối tượng mục tiêu.
Triển khai HertzBeat: Giám sát “tất cả trong một”
HertzBeat hỗ trợ tận răng từ Website, Database, OS đến Middleware. Điểm cộng lớn nhất là giao diện thân thiện và hỗ trợ tiếng Việt. Đặc biệt, bạn chỉ mất đúng 5 phút để đưa hệ thống vào hoạt động nhờ Docker.
Bước 1: Chuẩn bị môi trường
Bạn cần một server Linux (Ubuntu/CentOS) đã cài sẵn Docker. Nếu chưa có, hãy chạy nhanh lệnh sau:
sudo apt update && sudo apt install docker-compose -y
Bước 2: Cài đặt bằng Docker Compose
Docker Compose giúp việc quản lý container sạch sẽ hơn hẳn. Đầu tiên, hãy tạo thư mục làm việc:
mkdir hertzbeat && cd hertzbeat
nano docker-compose.yml
Dán nội dung cấu hình này vào file:
version: '3.8'
services:
hertzbeat:
image: tancloud/hertzbeat:latest
container_name: hertzbeat
restart: always
ports:
- "1157:1157"
volumes:
- ./data:/opt/hertzbeat/data
logging:
driver: "json-file"
options:
max-size: "10m"
max-file: "3"
Khởi động hệ thống bằng lệnh: docker-compose up -d. Sau đó, truy cập http://IP-Cua-Ban:1157 với tài khoản mặc định là admin/hertzbeat.
Bước 3: Giám sát Website (Uptime & Latency)
Vào mục Monitor -> Website, chọn Add Website. Nhập URL (ví dụ: https://itfromzero.com) và đặt Interval là 60s. Chỉ sau vài giây, biểu đồ độ trễ và trạng thái sống chết của web sẽ hiện ra rõ ràng.
Bước 4: Giám sát MySQL không cần Exporter
Thay vì cài cắm phức tạp, HertzBeat dùng JDBC kết nối trực tiếp. Bạn chỉ cần tạo một User MySQL có quyền truy cập cơ bản:
CREATE USER 'hertzbeat'@'%' IDENTIFIED BY 'MatKhauCuaBan';
GRANT SELECT ON *.* TO 'hertzbeat'@'%';
FLUSH PRIVILEGES;
Trên giao diện HertzBeat, điền IP và User vừa tạo. Các thông số như Query Rate, Cache Hit Rate hay số lượng Connection sẽ tự động đổ về Dashboard.
Bước 5: Quản lý Server Linux qua SSH
Để theo dõi CPU/RAM, bạn chỉ cần cung cấp thông tin SSH. HertzBeat sẽ tự đăng nhập, chạy các lệnh như top, free -m để lấy dữ liệu rồi thoát ra. Phương pháp này cực kỳ an toàn và không để lại “dấu vết” phần mềm lạ trên server.
Kinh nghiệm thực tế: Tránh bẫy “Cảnh báo rác”
Alert fatigue (mệt mỏi vì cảnh báo) là lỗi phổ biến nhất khi mới làm giám sát. Hồi đó, mình để ngưỡng CPU > 80% là bắn Telegram ngay. Kết quả là cứ 2 giờ sáng, điện thoại lại rung bần bật vì server chạy backup định kỳ làm CPU vọt lên trong vài phút.
Giải pháp của mình:
- Dùng Trigger Times: Chỉ báo động nếu CPU vượt ngưỡng liên tục trong 3 lần check (khoảng 3-5 phút).
- Phân cấp ưu tiên: Service sập thì gọi Telegram/SMS. Web hơi chậm thì chỉ cần gửi Email để xử lý vào sáng hôm sau.
Lời kết
HertzBeat là lựa chọn tuyệt vời nếu bạn cần triển khai nhanh, gọn nhẹ mà vẫn đủ tính năng. Nó lấp đầy khoảng trống giữa sự đơn giản của Uptime Kuma và sự đồ sộ của Zabbix. Với các hệ thống quy mô vừa, HertzBeat chính là “vũ khí” đắc lực giúp bạn quản lý hạ tầng mà không tốn quá nhiều công sức vận hành.

