tutorial

BigBlueButton Monitoring with Vigilmon: Web, API, Media Server & Recording Uptime

Monitor your self-hosted BigBlueButton server with Vigilmon — check web availability, validate the API endpoint with your shared secret, detect media server failures, and confirm recording processing with a cron heartbeat.

Your BigBlueButton server went down during a live class. Students saw a spinner for thirty seconds, then a connection error. The instructor couldn't share their screen. The session was lost. The Kurento media server had run out of file descriptors and exited silently — and nothing told you until the support tickets arrived.

BigBlueButton is a self-hosted, open-source web conferencing platform built specifically for education. It powers virtual classrooms, live sessions, and recorded lectures at institutions around the world. Its architecture is complex: a web server, an API layer, a media server (Kurento or mediasoup), a recording processing pipeline, and mandatory SSL for WebRTC. Every layer is a potential failure point. Vigilmon gives you visibility across all of them with external checks that don't require agents on your server.

This tutorial sets up comprehensive monitoring for a BigBlueButton server.

What You'll Build

  • A Vigilmon HTTP monitor on the BigBlueButton web interface
  • An API endpoint check with shared secret validation
  • A media server connectivity monitor
  • A heartbeat monitor for the recording processing service
  • SSL certificate alerts (mandatory for WebRTC)

Prerequisites

  • A running BigBlueButton server (v2.6+ recommended)
  • Your BBB shared secret (run bbb-conf --secret to retrieve it)
  • A free account at vigilmon.online

Step 1: Monitor the BigBlueButton Web Interface

The BigBlueButton web interface is served at the root of your domain. When the web server is up and BBB is running, a GET to the root returns a 200 with the Greenlight or BBB HTML.

Test it:

curl -I https://bbb.yourdomain.com/

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to https://bbb.yourdomain.com/.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Save the monitor.

This is your baseline check — if Nginx is down or the server is unreachable, this fires first.


Step 2: Monitor the BigBlueButton API Endpoint

The BigBlueButton API is accessed at /bigbluebutton/api/. A call to the root of the API endpoint without parameters should return a SUCCESS response with version information, without requiring a shared secret signature.

Test it:

curl "https://bbb.yourdomain.com/bigbluebutton/api/"

Expected response:

<response>
  <returncode>SUCCESS</returncode>
  <version>2.0</version>
  <apiVersion>2.0</apiVersion>
  ...
</response>

Set up the API monitor in Vigilmon:

  1. Click New Monitor → HTTP.
  2. Set URL to https://bbb.yourdomain.com/bigbluebutton/api/.
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check, configure:
    • Keyword present: SUCCESS
    • Keyword absent: FAILED
  5. Save.

This confirms that the BBB application layer is responding — not just Nginx. If the BBB Java application has crashed or failed to start, Nginx will return a 502 or the API will return a FAILED response.


Step 3: Validate the Shared Secret with an API Call

For a deeper check that validates your BBB configuration is intact (shared secret, API routing), you can monitor the getMeetings API call, which requires a valid checksum.

Generate the checksum:

BBB_SECRET=$(bbb-conf --secret | grep "Secret:" | awk '{print $2}')
CALL="getMeetings"
PARAMS=""
CHECKSUM=$(echo -n "${CALL}${PARAMS}${BBB_SECRET}" | sha256sum | awk '{print $1}')
echo "https://bbb.yourdomain.com/bigbluebutton/api/getMeetings?checksum=${CHECKSUM}"
  1. Click New Monitor → HTTP in Vigilmon.
  2. Set URL to the full URL with checksum from above.
  3. Set Expected status code to 200.
  4. Under Advanced → Keyword check:
    • Keyword present: SUCCESS
    • Keyword absent: checksumError
  5. Save.

A checksumError response means your shared secret has changed or the API routing is broken — a common failure after BBB upgrades.


Step 4: Heartbeat for the Recording Processing Service

BigBlueButton's recording pipeline (bbb-rap-starter, bbb-record-core) processes raw session recordings into publishable videos asynchronously. This service can fail silently: sessions get recorded but never processed, and your users see an indefinitely spinning "Processing" status.

Add a cron heartbeat on the BBB server:

# crontab -e (as root or the bbb user)
*/5 * * * * systemctl is-active --quiet bbb-rap-starter && curl -fsS https://vigilmon.online/api/heartbeat/<your-heartbeat-id> > /dev/null 2>&1

This only pings Vigilmon when the recording service is active. If the service is stopped or failed, the ping doesn't fire.

Set up the heartbeat in Vigilmon:

  1. Click New Monitor → Heartbeat.
  2. Set Expected interval to 5 minutes.
  3. Set Grace period to 10 minutes.
  4. Copy the ping URL and add it to your cron job.
  5. Save.

Step 5: SSL Certificate Monitoring

WebRTC requires TLS. If your SSL certificate expires, browsers refuse to connect to BigBlueButton and sessions cannot start. This is a hard failure with no graceful fallback.

Your HTTPS monitors in Steps 1 and 2 already go through TLS. Configure expiry alerts:

  1. Open the HTTP monitor from Step 1.
  2. Go to Advanced → SSL certificate monitoring.
  3. Enable Alert when certificate expires within and set it to 30 days.
  4. Save.

Repeat for the API monitor. BigBlueButton often uses Let's Encrypt — a 30-day alert gives you two full renewal windows to fix any Certbot issues.


Step 6: Alert Channels

Go to Notifications → New Channel in Vigilmon:

  • Email — alert your system administrators immediately
  • Webhook — post to Slack or a PagerDuty integration for on-call routing

A BBB downtime alert looks like:

🔴 DOWN: bbb.yourdomain.com/bigbluebutton/api/
Keyword "SUCCESS" not found in response
Region: US-East
Triggered: 2026-01-15 09:03 UTC

What You've Built

| Scenario | How Vigilmon catches it | |---|---| | Nginx/web server down | HTTP monitor on root URL fires | | BBB Java application crashed | API endpoint returns non-200 or missing "SUCCESS" | | Shared secret mismatch after upgrade | getMeetings checksum monitor returns checksumError | | Kurento/mediasoup media server failure | API monitor detects degraded responses | | Recording pipeline stopped | Heartbeat ping stops arriving | | SSL certificate expired (WebRTC blocked) | Certificate expiry alert fires 30 days before | | Server host offline | All monitors and heartbeat fire simultaneously |


BigBlueButton's power comes from its architecture — but that architecture has many moving parts. Vigilmon lets you watch all of them from the outside, so a failed media server or a stalled recording pipeline triggers an alert, not a student support ticket.

Start monitoring your BigBlueButton server today — register free at vigilmon.online.

Monitor your app with Vigilmon

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

Start free →