The Problem: The “Agent Installation” Nightmare
Early in my career, I struggled when my boss assigned me to monitor 30 virtual machines along with a scattered mess of databases. My first thought was Prometheus or Zabbix. But reality was far from ideal. To monitor a single MySQL instance, I had to SSH into that server and install the MySQL Exporter. Want to see RAM/CPU metrics? I had to install Node Exporter as well.
As a result, I wasted five days just copy-pasting installation commands and opening firewall ports. Not to mention, every time the OS updated, these agents would crash. That’s when I truly understood the value of an Agentless system: no intrusion, no installation, and no clutter on the target servers.
Why Traditional Tools Can Be Overkill
Zabbix and Prometheus are legends in the DevOps world, no doubt. However, they often come with two major hurdles:
- Overly Complex Configuration: You have to wrestle with long YAML files, manage dozens of exporter ports, and deal with the headache of setting up firewalls for every connection.
- Maintenance Burden: Maintaining hundreds of agents across various environments (Linux, Windows, Cloud) consumes significant system resources and technician time.
If you just need an intuitive dashboard that supports everything from Websites (HTTP) and Databases (JDBC) to Servers (SSH) without deep internal intervention, you need a cleaner approach.
Agent vs. Agentless: Which One to Choose?
Currently, there are two main approaches:
- Using Agents: Install software on the destination server. The advantage is extremely detailed data, but the downside is the nightmare of installation and periodic maintenance.
- Agentless: The monitoring system stays remote, using standard protocols like SSH, SNMP, or JDBC to “check in” on the server’s health.
After trying many tools, I settled on HertzBeat. This is a very lightweight open-source project that supports multi-tier monitoring without requiring complex installations on the target objects.
Deploying HertzBeat: All-in-One Monitoring
HertzBeat provides extensive support for Websites, Databases, OS, and Middleware. Its biggest plus is the user-friendly interface and support for multiple languages. Best of all, it only takes 5 minutes to get the system up and running thanks to Docker.
Step 1: Environment Preparation
You need a Linux server (Ubuntu/CentOS) with Docker pre-installed. If you don’t have it yet, quickly run the following command:
sudo apt update && sudo apt install docker-compose -y
Step 2: Install via Docker Compose
Docker Compose makes container management much cleaner. First, create a working directory:
mkdir hertzbeat && cd hertzbeat
nano docker-compose.yml
Paste this configuration content into the 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"
Start the system with the command: docker-compose up -d. Then, access http://Your-IP:1157 with the default account: admin/hertzbeat.
Step 3: Monitor Website (Uptime & Latency)
Go to Monitor -> Website, select Add Website. Enter the URL (e.g., https://itfromzero.com) and set the Interval to 60s. For a similar approach, you can check out Automated Endpoint, Website, and API Monitoring. After just a few seconds, charts for latency and web status will clearly appear.
Step 4: Monitor MySQL Without Exporters
Instead of complex installations, HertzBeat uses JDBC to connect directly. This is a common strategy when Monitoring Business Metrics Directly from the Database. You only need to create a MySQL user with basic access rights:
CREATE USER 'hertzbeat'@'%' IDENTIFIED BY 'YourPassword';
GRANT SELECT ON *.* TO 'hertzbeat'@'%';
FLUSH PRIVILEGES;
On the HertzBeat interface, fill in the IP and the user you just created. Metrics like Query Rate, Cache Hit Rate, and the number of Connections will automatically flow into the Dashboard.
Step 5: Manage Linux Servers via SSH
To track CPU/RAM, you only need to provide SSH information. If you prefer a different stack, you might consider Lightweight Linux Server Monitoring. HertzBeat will automatically log in, run commands like top and free -m to collect data, and then exit. This method is extremely secure and leaves no “traces” of foreign software on the server.
Real-world Experience: Avoiding the “Alert Fatigue” Trap
Alert fatigue is the most common mistake when starting out with monitoring. Back then, I set a threshold of CPU > 80% to trigger a Telegram alert immediately. As a result, at 2 AM every night, my phone would vibrate uncontrollably because the scheduled server backup caused the CPU to spike for a few minutes.
My solution:
- Use Trigger Times: Only trigger an alert if the CPU exceeds the threshold continuously for 3 consecutive checks (about 3-5 minutes).
- Prioritize Levels: If a service goes down, call via Telegram/SMS. If the web is just slightly slow, an email for the next morning is sufficient.
Conclusion
HertzBeat is an excellent choice if you need a deployment that is fast, compact, yet feature-rich. It fills the gap between the simplicity of Uptime Kuma and the massiveness of Zabbix. For medium-scale systems, HertzBeat is a powerful “weapon” to help you manage infrastructure without excessive operational effort.

