How to Monitor Your Strapi CMS API with Vigilmon
Strapi is the leading open-source headless CMS. If your frontend depends on Strapi's REST or GraphQL API, any downtime means your website stops rendering content. This guide shows how to monitor your Strapi deployment with Vigilmon.
Strapi Endpoints to Monitor
| Endpoint | Purpose |
|---|---|
https://your-strapi.com/_health |
Built-in health check |
https://your-strapi.com/api/ |
REST API root |
https://your-strapi.com/graphql |
GraphQL endpoint |
https://your-strapi.com/admin/ |
Admin panel |
Step 1: Use Strapi's Built-in Health Check
Strapi includes a /_health endpoint that returns 204 when the server is healthy:
GET https://your-strapi.com/_health
Expected response: 204 No Content
This is the best endpoint to monitor — it's designed for this purpose.
Step 2: Set Up Vigilmon
- Sign up at vigilmon.online (free, no credit card)
-
Add Monitor → enter
https://your-strapi.com/_health - Expected status: 204
- Check interval: 5 minutes (free) or 1 minute (paid)
- Enable multi-region consensus: 2+ regions must confirm failure
- Add email alerts
Step 3: Monitor the REST API Separately
The health endpoint confirms Strapi is running, but your REST API could have content-level issues. Add a second monitor for a public collection endpoint:
URL: https://your-strapi.com/api/articles?pagination[limit]=1
Expected: 200
This checks that the database connection is working and content is queryable.
Step 4: Strapi on Cloud Platforms
Render
If hosted on Render, also monitor your service URL. Render auto-deploys can occasionally leave a service in a bad state.
Railway
Railway deployments can occasionally fail silently. Monitor both /_health and a content endpoint.
DigitalOcean App Platform
App Platform scales to zero on free tiers — add a keep-warm monitor or upgrade to a paid plan.
Self-hosted (Ubuntu VPS)
Monitor /_health and set up a process monitor via a systemd watchdog or PM2:
# Ensure Strapi restarts on crash
pm2 start ecosystem.config.js
pm2 save
pm2 startup
Vigilmon will catch the downtime; PM2 will auto-restart.
Add a Custom Health Check for Database Connectivity
Strapi's /_health only checks if the Node.js process is running, not if the database is connected. Add a custom route:
// src/extensions/users-permissions/strapi-server.js
// OR create a custom route in src/api/health/routes/health.js
module.exports = {
routes: [
{
method: 'GET',
path: '/health/deep',
handler: async (ctx) => {
try {
await strapi.db.query('api::article.article').findMany({ limit: 1 })
ctx.body = { status: 'ok', db: 'connected' }
} catch (err) {
ctx.status = 503
ctx.body = { status: 'error' }
}
},
config: { auth: false }
}
]
}
Point Vigilmon at https://your-strapi.com/api/health/deep.
Failure Scenarios Vigilmon Catches
| Scenario | Caught? |
|---|---|
| Node.js process crash | ✅ Yes |
| Database connection failure | ✅ Yes (with deep check) |
| Strapi memory OOM | ✅ Yes |
| Port binding failure | ✅ Yes |
| SSL certificate expired | ✅ Yes |
Public Status Page
Share your Vigilmon status page with your content team:
https://vigilmon.online/status/your-strapi-app
Conclusion
Strapi's /_health endpoint makes monitoring straightforward. With Vigilmon:
- ✅ Monitors Strapi's built-in health endpoint
- ✅ Multi-region consensus prevents false alerts
- ✅ Free tier covers most projects
- ✅ Public status page for your team
Start monitoring at vigilmon.online.
Top comments (0)