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 --secretto 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:
- Log in to Vigilmon and click New Monitor → HTTP.
- Set URL to
https://bbb.yourdomain.com/. - Set Check interval to 60 seconds.
- Set Expected status code to
200. - 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:
- Click New Monitor → HTTP.
- Set URL to
https://bbb.yourdomain.com/bigbluebutton/api/. - Set Expected status code to
200. - Under Advanced → Keyword check, configure:
- Keyword present:
SUCCESS - Keyword absent:
FAILED
- Keyword present:
- 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}"
- Click New Monitor → HTTP in Vigilmon.
- Set URL to the full URL with checksum from above.
- Set Expected status code to
200. - Under Advanced → Keyword check:
- Keyword present:
SUCCESS - Keyword absent:
checksumError
- Keyword present:
- 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:
- Click New Monitor → Heartbeat.
- Set Expected interval to
5 minutes. - Set Grace period to
10 minutes. - Copy the ping URL and add it to your cron job.
- 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:
- Open the HTTP monitor from Step 1.
- Go to Advanced → SSL certificate monitoring.
- Enable Alert when certificate expires within and set it to
30 days. - 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.