Concrete CMS (formerly concrete5) is an open-source PHP content management system focused on ease of use for non-technical editors — featuring in-context editing, a block-based content model, and an intuitive dashboard. It is widely deployed by universities, government agencies, and enterprises that need a manageable, self-hosted web presence. When Concrete CMS goes down, editors lose access to content management and visitors see errors. Vigilmon monitors your Concrete CMS homepage, built-in health endpoint, dashboard, SSL certificates, and background job queue — alerting you the moment a problem occurs.
What You'll Set Up
- HTTP uptime monitor for the Concrete CMS homepage (frontend health check)
- Built-in
/ccm/system/healthAPI endpoint monitor - Dashboard panel availability monitor (
/index.php/dashboard) - SSL certificate expiry alerts for HTTPS Concrete CMS deployments
- Cron heartbeat monitors for Concrete CMS scheduled jobs (backups, thumbnail generation, job queue)
Prerequisites
- Concrete CMS 9.x running on PHP 8.1+ with nginx or Apache
- Concrete CMS reachable over HTTP or HTTPS
- A free Vigilmon account
Step 1: Monitor the Concrete CMS Homepage
The homepage provides a reliable health signal for the full Concrete CMS stack: PHP must be running, the database must be accessible, and the CMS routing and block rendering pipeline must all function correctly to serve the page.
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your site's homepage URL:
https://yoursite.com/ - Set Check interval to
1 minute. - Set Expected HTTP status to
200. - In Keyword check, enter a phrase that should always appear on your homepage — for example, your organisation name or a navigation element. This catches PHP fatal errors that return HTTP 200 with a blank or exception page.
- Click Save.
Step 2: Monitor the Built-in Health Endpoint
Concrete CMS ships with a dedicated health check endpoint at /ccm/system/health. This endpoint is specifically designed for monitoring tools — it checks internal application state and returns a JSON response with a clear pass/fail status.
- Click Add Monitor → HTTP / HTTPS.
- Enter the Concrete CMS health endpoint:
https://yoursite.com/ccm/system/health - Set Check interval to
5 minutes. - Set Expected HTTP status to
200. - In Keyword check, enter
ok— a healthy Concrete CMS instance returns a JSON body containing this status indicator. - Click Save.
This is the most reliable programmatic health check available in Concrete CMS because it is purpose-built for monitoring — unlike the homepage, it skips block rendering and tests only the application's internal health.
Step 3: Monitor the Dashboard Panel
The Concrete CMS dashboard is where site administrators manage content, install packages, and configure settings. Dashboard availability depends on the same PHP and database stack as the frontend, but authentication issues, package conflicts, or filesystem permission errors can take the dashboard offline while the frontend continues serving cached content.
- Click Add Monitor → HTTP / HTTPS.
- Enter the dashboard URL:
Or, if you use pretty URLs:https://yoursite.com/index.php/dashboardhttps://yoursite.com/dashboard - Set Check interval to
5 minutes. - Set Expected HTTP status to
200(Concrete CMS redirects unauthenticated requests to the login page, which also returns 200). - In Keyword check, enter
LoginorDashboard— a string present on the dashboard login page. - Click Save.
Step 4: SSL Certificate Alerts
Concrete CMS sites served over HTTPS require valid SSL certificates. Certification renewal failures using Let's Encrypt or another CA can go unnoticed until browsers reject connections outright.
- Open any of your HTTPS monitors.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
Check your certificate's current expiry from the command line:
echo | openssl s_client -servername yoursite.com \
-connect yoursite.com:443 2>/dev/null \
| openssl x509 -noout -dates
Repeat for every domain your Concrete CMS site responds to. A 21-day window gives you three weekly auto-renewal attempts before visitors see security warnings.
Step 5: Heartbeat Monitoring for Concrete CMS Scheduled Jobs
Concrete CMS relies on a job queue for background operations: automated backups, image thumbnail generation, sitemap rebuilds, and custom site-specific tasks. These are triggered by a cron entry that calls the Concrete CMS job runner. If that cron entry disappears or PHP crashes during job processing, background tasks stop silently — no HTTP error, no log alert by default.
Use Vigilmon's cron heartbeat to confirm background jobs are actually completing.
Automated Backups
Concrete CMS can schedule automated database and file backups through the Dashboard (System & Settings → Backup & Restore). If the backup job fails, you may discover it only after you need a backup.
- In Vigilmon, click Add Monitor → Cron Heartbeat.
- Set the name to
Concrete CMS Backup Job. - Set Expected ping interval to match your backup schedule (e.g.,
1440 minutesfor daily backups). - Copy the heartbeat URL (e.g.,
https://vigilmon.online/heartbeat/abc123). - Create a custom job class that extends Concrete CMS's
Joband pings Vigilmon on completion:
<?php
namespace Application\Job;
use Concrete\Core\Job\Job;
class BackupAndPingJob extends Job
{
public function getJobName()
{
return t('Backup and Heartbeat');
}
public function run()
{
// Your backup logic here
// ...
// Signal success to Vigilmon
$ch = curl_init('https://vigilmon.online/heartbeat/abc123');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_exec($ch);
curl_close($ch);
return t('Backup complete.');
}
}
Image Thumbnail Generation
Concrete CMS generates multiple thumbnail sizes for uploaded images. On high-traffic sites, the thumbnail queue can build up. Monitor the thumbnail generation job:
- Click Add Monitor → Cron Heartbeat.
- Set the name to
Concrete CMS Thumbnail Generation. - Set Expected ping interval to
60 minutes. - Add a heartbeat ping at the end of your thumbnail generation job using the same
curlpattern above, with your thumbnail heartbeat URL.
Job Queue Runner (General)
Concrete CMS's cron-triggered job runner dispatches all queued jobs. Monitor that the job runner itself is being invoked:
# /etc/cron.d/concrete-cms
*/5 * * * * www-data cd /var/www/yoursite && php concrete/bin/concrete5 c5:job \
&& curl -s https://vigilmon.online/heartbeat/ghi789
- Create a Cron Heartbeat monitor named
Concrete CMS Job Runner. - Set Expected ping interval to
10 minutes(the cron runs every 5 minutes; a 10-minute window catches one missed execution). - Add the
curlping to your cron entry as shown above.
If the job runner is skipped or crashes mid-run, Vigilmon alerts you after the expected interval passes — before your backup and thumbnail queues back up.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack, email, or a webhook.
- Set Consecutive failures before alert to
2on the homepage monitor — a single slow response during a full-page cache rebuild can cause one probe to time out without indicating a real outage. - Use Maintenance windows during Concrete CMS version upgrades or major package installs:
# Suppress alerts for 20 minutes during a CMS upgrade
curl -X POST https://vigilmon.online/api/maintenance \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"monitor_id": "YOUR_MONITOR_ID", "duration_minutes": 20}'
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| Homepage | https://yoursite.com/ | PHP crash, DB down, render failure |
| Health endpoint | /ccm/system/health | Internal application state failure |
| Dashboard | /index.php/dashboard | Dashboard-specific failure |
| SSL certificate | Each HTTPS domain | Certificate expiry |
| Backup job heartbeat | Heartbeat URL | Failed automated backups |
| Thumbnail generation heartbeat | Heartbeat URL | Image processing queue backup |
| Job runner heartbeat | Heartbeat URL | Cron missing, job queue stalled |
Concrete CMS makes self-hosted content management accessible to non-technical teams — but the responsibility for uptime is yours. With Vigilmon covering the homepage, health endpoint, dashboard, SSL certificates, and background job queue, you have complete visibility into your Concrete CMS instance and can act before editors or visitors notice a problem.