How to Monitor cPanel and WHM Hosted Sites with Vigilmon
Millions of websites run on cPanel/WHM shared and VPS hosting. Unlike managed cloud platforms, cPanel environments typically lack built-in uptime monitoring — you find out about downtime when a client calls.
This guide shows how to monitor cPanel and WHM hosted sites with Vigilmon, requiring zero server access or code changes.
Why cPanel Sites Need External Monitoring
cPanel is a great hosting control panel but it doesn't tell you:
- When Apache/LiteSpeed goes down
- When PHP-FPM crashes
- When a database becomes unavailable
- When SSL certificates expire (especially with AutoSSL failures)
- When your shared hosting server gets overloaded
Your clients see errors. You find out 30 minutes later from a support ticket.
What Vigilmon Monitors on cPanel Sites
1. HTTP/HTTPS Uptime
Vigilmon sends an HTTP GET request to your site URL every minute. If it gets:
- A connection timeout → alert
- A 5xx server error → alert
- An unexpected response → alert
You're notified within 1-2 minutes of any downtime.
2. SSL Certificate Expiry
cPanel's AutoSSL (Let's Encrypt) is supposed to auto-renew SSL certificates. But renewal can fail if:
- Your domain has incorrect DNS
- The domain validation fails
- There's an AutoSSL bug
- Your hosting account is suspended
Vigilmon monitors SSL expiry and alerts you 30, 14, and 7 days before expiry — giving you time to fix it before the padlock disappears.
3. Domain and DNS Health
Vigilmon's HTTP checks require successful DNS resolution. If your DNS is broken, the monitor fails and you're alerted — even if your server is running.
Setting Up Vigilmon for a cPanel Site
Step 1: Add Your First Monitor
- Go to vigilmon.online and sign up
- Click Add Monitor → HTTP Monitor
- Enter your site URL (e.g.,
https://example.com) - Check interval: 1 minute
- Expected HTTP status: 200
- Timeout: 30 seconds (cPanel shared hosting can be slow)
- Click Save
Vigilmon starts monitoring immediately.
Step 2: Add SSL Monitoring
- Add Monitor → SSL Certificate Monitor
- Enter your domain name
- Alert threshold: 30 days before expiry
Set it and forget it — you'll get reminders before any SSL emergency.
Step 3: Set Up Alert Channels
For client sites, configure email alerts to yourself and your client (optional):
- Your email:
admin@youragency.com - Client email:
client@theirdomain.com(if they want direct alerts) - Or: Slack channel for your team
Monitoring Multiple cPanel Sites (Agency Setup)
If you manage 10, 50, or 100+ client sites on cPanel, Vigilmon's dashboard gives you a single pane of glass:
| Site | Status | SSL Expiry | Last Check |
|---|---|---|---|
| client1.com | ✅ Up | 45 days | 2 min ago |
| client2.com | 🔴 Down | 12 days | 1 min ago |
| client3.com | ✅ Up | 87 days | 2 min ago |
You see at a glance which sites need attention without logging into each cPanel.
Adding a Simple Health Check Page (Optional)
For more detailed monitoring, add a health check page to your cPanel site. In public_html/health.php:
<?php
header('Content-Type: application/json');
$checks = [];
// Check database
try {
$db_host = getenv('DB_HOST') ?: 'localhost';
$db_name = getenv('DB_NAME') ?: '';
$db_user = getenv('DB_USER') ?: '';
$db_pass = getenv('DB_PASS') ?: '';
if ($db_name) {
$pdo = new PDO("mysql:host=$db_host;dbname=$db_name", $db_user, $db_pass, [
PDO::ATTR_TIMEOUT => 3
]);
$pdo->query('SELECT 1');
$checks['database'] = 'ok';
} else {
$checks['database'] = 'skip';
}
} catch (Exception $e) {
$checks['database'] = 'error';
http_response_code(503);
}
// Check disk space
$free = disk_free_space('/');
$total = disk_total_space('/');
$pct_used = ($total - $free) / $total * 100;
$checks['disk_pct_used'] = round($pct_used, 1);
if ($pct_used > 90) {
$checks['disk'] = 'warning';
http_response_code(503);
} else {
$checks['disk'] = 'ok';
}
$status = http_response_code() === 200 ? 'healthy' : 'degraded';
echo json_encode(['status' => $status, 'checks' => $checks]);
Then monitor https://example.com/health.php in Vigilmon.
Note: Restrict access to this file by IP in .htaccess to prevent public exposure of server info:
# .htaccess in same directory as health.php
<Files health.php>
Order deny,allow
Deny from all
Allow from 0.0.0.0/0 # Or restrict to Vigilmon's probe IPs
</Files>
Or simply leave it public — the health endpoint reveals minimal information.
WordPress on cPanel
For WordPress sites, monitor:
-
https://yourdomain.com/— homepage -
https://yourdomain.com/wp-login.php— login page (often breaks separately) -
https://yourdomain.com/wp-json/wp/v2/— REST API (if in use)
WordPress on shared hosting is prone to memory exhaustion errors (503s) that an uptime monitor catches immediately.
WHM Server-Level Monitoring
If you manage a WHM VPS or dedicated server, add server-level monitoring too:
-
WHM Admin URL:
https://server.yourdomain.com:2087/ -
cPanel Port:
https://server.yourdomain.com:2083/ - Mail Server: check SMTP port 25 (or SMTPS 465/587)
- SSH: Vigilmon supports TCP port monitoring
If the WHM port stops responding, your entire server may be down — not just one site.
Realistic Alert Configuration for Agencies
Alert: email to admin@youragency.com
For: ALL monitors (any downtime)
Alert: email to client@theirdomain.com
For: THEIR monitor only
Delay: 5 minutes (avoid false alarm emails for blips)
Alert: Slack #hosting-alerts
For: ALL monitors
Delay: 0 minutes (instant internal notification)
Free Tier for Small Agencies
Vigilmon's free plan includes 5 monitors — enough for:
- 3 client site uptime checks
- 1 SSL monitor for your most critical domain
- 1 server-level check
Paid plans scale per monitor count without per-user pricing, making it affordable for agencies managing 50+ sites.
Summary
- Add HTTP monitors for each cPanel-hosted site (1-minute intervals)
- Add SSL monitors for all domains
- Optionally add a
health.phppage for deeper checks - Configure email/Slack alerts for your team
- Stop finding out about downtime from client support tickets
Start monitoring your cPanel sites free at vigilmon.online — no server access required.
Top comments (0)