tutorial

How to Monitor Ghost CMS with Vigilmon (Admin API, Content Checks, and SSL Alerts)

Ghost is a powerful headless CMS and blogging platform used by developers, newsletters, and media teams worldwide. Whether you're running it for a high-traff...

Ghost is a powerful headless CMS and blogging platform used by developers, newsletters, and media teams worldwide. Whether you're running it for a high-traffic publication or a member-supported newsletter, downtime means missed readers, failed email sends, and lost revenue.

This tutorial walks you through setting up comprehensive monitoring for a self-hosted Ghost instance using Vigilmon — free tier, no credit card.


Why Ghost needs dedicated monitoring

Ghost's architecture has several independently-failing layers:

  • Web UI goes down — readers can't access your content; existing members get a 502 or blank page
  • Admin panel unavailable — writers and editors can't publish posts, manage members, or send newsletters
  • Content API broken — if you use Ghost headlessly (feeding a Next.js or Gatsby frontend), the Content API failing means your entire frontend returns empty content
  • SSL certificate expires — Ghost requires HTTPS; an expired cert blocks all member logins and purchase flows
  • Ghost process crashes silently — Node.js processes can crash and leave a zombie port; the TCP port appears open but HTTP requests hang

External monitoring from Vigilmon catches all of these before your readers or team members report them.


What you'll need

  • A running Ghost instance (self-hosted via Ghost CLI or Docker)
  • A free Vigilmon account

Step 1: Verify the Ghost admin site health endpoint

Ghost exposes an admin health endpoint that returns the site's operational status. Check it from your terminal:

curl https://yourdomain.com/ghost/api/v4/admin/site/
# Expect: {"site":{"title":"Your Blog","description":"...","url":"https://yourdomain.com",...}}

This endpoint returns 200 with site metadata when Ghost is running correctly. It doesn't require authentication and exercises the Node.js application layer, making it ideal for health monitoring.


Step 2: Monitor the admin health endpoint

  1. Log in to vigilmon.online and go to Monitors → New Monitor
  2. Choose HTTP / HTTPS
  3. URL: https://yourdomain.com/ghost/api/v4/admin/site/
  4. Check interval: 1 minute
  5. Expected status code: 200
  6. Response body contains: "title" (present in all valid Ghost admin/site responses)
  7. Save the monitor

This is your primary health signal — if Ghost's Node.js process crashes, is restarting, or can't connect to its MySQL database, this endpoint will return a non-200 status or fail to respond.


Step 3: Monitor web UI availability for readers

The admin endpoint confirms the backend is alive. A separate check on the public homepage confirms that readers can actually access your content.

  1. Monitors → New Monitor → HTTP / HTTPS
  2. URL: https://yourdomain.com
  3. Check interval: 1 minute
  4. Expected status code: 200
  5. (Optional) Response body contains: a keyword from your homepage — your blog name or a navigation link like Subscribe
  6. Save the monitor

Keeping this separate from the admin check lets you pinpoint the failure layer: if the admin endpoint is up but the homepage is down, the issue is likely in your theme rendering or nginx config — not the Ghost process itself.


Step 4: Add a Content API keyword check

If you use Ghost as a headless CMS feeding a frontend, the Content API is critical. A keyword check confirms the API returns your actual content — not an empty response or error payload.

  1. Monitors → New Monitor → HTTP / HTTPS
  2. URL: https://yourdomain.com/ghost/api/content/posts/?key=YOUR_CONTENT_API_KEY&limit=1
  3. Check interval: 5 minutes (Content API calls count against your API limits)
  4. Expected status code: 200
  5. Response body contains: "posts" (the key in every valid Ghost Content API response)
  6. Save the monitor

Replace YOUR_CONTENT_API_KEY with a key from Ghost Admin → Integrations → Custom Integrations. The limit=1 parameter keeps the response small and the check lightweight.


Step 5: Monitor SSL certificate expiry

Ghost requires HTTPS for member logins, subscription flows, and secure email links. An expired certificate immediately breaks all of these.

  1. Monitors → New Monitor → SSL Certificate
  2. Domain: yourdomain.com
  3. Alert when expiring in fewer than: 14 days
  4. Save the monitor

Ghost CLI manages Let's Encrypt certificates automatically, but renewal can fail if your server's cron jobs are disrupted or if Ghost is running behind a misconfigured proxy. A 14-day window gives you time to renew manually before users are affected.


Step 6: Configure alert channels

When Ghost goes down, every minute costs readers and potential subscribers.

  1. Alert Channels → Add Channel
  2. Choose Slack, email, Discord, or webhook
  3. Assign the channel to all Ghost monitors

For a newsletter publication, routing alerts to both the technical operator and the editorial team means no one publishes a promotional campaign while the site is down.

Sample alert:

[DOWN] Ghost Admin API
https://yourdomain.com/ghost/api/v4/admin/site/
Status: 502 Bad Gateway
Down for: 4 minutes

Step 7: Build a public status page

A status page gives your audience a reliable answer to "is the site down?" instead of social media complaints.

  1. Status Pages → New Status Page
  2. Name: "Publication Status"
  3. Add monitors: Admin endpoint, Homepage, Content API, SSL
  4. Publish and link from your site footer or status.yourdomain.com

Monitoring summary

| Monitor | Type | What it catches | |---------|------|-----------------| | https://yourdomain.com/ghost/api/v4/admin/site/ | HTTP | Ghost process crash, DB failure, 5xx errors | | https://yourdomain.com | HTTP | Public site down, theme error, nginx failure | | https://yourdomain.com/ghost/api/content/posts/?key=... | HTTP | Content API broken, headless frontend empty | | yourdomain.com | SSL | Certificate expiry before member logins break |


What's next

  • Heartbeat monitoring — Ghost sends scheduled newsletters via its email system; a heartbeat monitor can verify your newsletter cron jobs are firing on schedule
  • Response time history — Ghost sites with large post archives can slow significantly as the database grows; Vigilmon tracks response time trends so you can optimize before readers notice

Get started free at vigilmon.online — no credit card, your first monitor is live in under two minutes.

Monitor your app with Vigilmon

Free plan — 5 monitors, no credit card required. Up and running in 60 seconds.

Start free →