ChiefOnboarding is a self-hosted open-source employee onboarding platform that automates everything from pre-boarding tasks to Slack introductions. It's the kind of tool that only matters once — on a new hire's first day. If it goes down that morning, the automated buddy messages don't send, the task checklists don't load, and the new employee's first impression of your company is a broken web page. Vigilmon monitors every layer of ChiefOnboarding so you catch failures before they become first-day disasters.
What You'll Set Up
- HTTP uptime monitor for the ChiefOnboarding web server at port 8000
- API health endpoint check to verify the Django application layer
- Database connectivity monitoring (PostgreSQL)
- Slack and Teams integration webhook health check
- SSL certificate expiry alerts
Prerequisites
- ChiefOnboarding running via Docker Compose (default port:
8000) - PostgreSQL database (Docker or external)
- Slack and/or Microsoft Teams app integration configured
- A free Vigilmon account
Step 1: Monitor the Web Server at Port 8000
ChiefOnboarding's Django application serves on port 8000 by default. Add a Vigilmon HTTP monitor:
- Log in to vigilmon.online and click Add Monitor.
- Set Type to
HTTP / HTTPS. - Enter your ChiefOnboarding URL. If accessed directly:
http://your-server-ip:8000. If proxied via nginx:https://onboarding.yourdomain.com. - Set Check interval to
1 minute. - Set Expected HTTP status to
200or302(the root may redirect to/login). - Click Save.
To confirm the full Django stack (not just nginx), add a response body check:
- Under Response body check, enter
ChiefOnboardingorLoginto verify the application rendered, not a generic error page.
Step 2: Health Check the API Endpoint
ChiefOnboarding exposes a Django REST Framework API. The /api/ root endpoint returns a browsable API index and is a good proxy for application health:
- In Vigilmon, add a second HTTP / HTTPS monitor.
- Enter:
https://onboarding.yourdomain.com/api/ - Set Expected HTTP status to
200. - Set Check interval to
5 minutes. - Click Save.
If you want a custom health endpoint, add one to ChiefOnboarding's urls.py:
# chiefonboarding/urls.py
from django.http import JsonResponse
def health(request):
return JsonResponse({"status": "ok"})
urlpatterns = [
path("health/", health),
# ... existing patterns
]
Rebuild and restart the Docker container after the change:
docker compose build
docker compose up -d
Use https://onboarding.yourdomain.com/health/ as the Vigilmon target for a clean, unambiguous health signal.
Step 3: Monitor PostgreSQL Database Connectivity
ChiefOnboarding stores all employee data, tasks, and onboarding flows in PostgreSQL. A database failure means new hires see errors on every page. Add TCP port monitoring:
- In Vigilmon, click Add Monitor → TCP Port.
- Enter your PostgreSQL host and port
5432. - Set Check interval to
1 minute. - Click Save.
For Docker Compose setups where the database is internal, run a probe script on the host:
#!/bin/bash
# /usr/local/bin/check-chiefonboarding-db.sh
if docker compose exec -T db pg_isready -U postgres 2>/dev/null; then
curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi
Create a Cron Heartbeat in Vigilmon with a 5-minute expected interval, then schedule the script with cron:
*/5 * * * * /usr/local/bin/check-chiefonboarding-db.sh
If the database container crashes or the volume runs out of space, the heartbeat stops arriving and Vigilmon alerts within 5 minutes.
Step 4: Monitor Slack and Teams Webhook Health
ChiefOnboarding's Slack integration sends new hire introductions, buddy messages, and task reminders automatically. If the Slack app token expires or the webhook URL changes, those messages silently stop — and no error appears in the UI.
Test your Slack integration from the command line:
# Replace with your actual webhook URL from ChiefOnboarding Slack app settings
curl -X POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
-H 'Content-type: application/json' \
-d '{"text": "ChiefOnboarding health check"}'
# Expected response: "ok"
Wrap this in a heartbeat probe:
#!/bin/bash
RESPONSE=$(curl -s -X POST https://hooks.slack.com/services/YOUR/WEBHOOK/URL \
-H 'Content-type: application/json' \
-d '{"text": "ChiefOnboarding heartbeat"}')
if [ "$RESPONSE" = "ok" ]; then
curl -s https://vigilmon.online/heartbeat/YOUR_SLACK_HEARTBEAT_ID
fi
Schedule every 30 minutes. For Teams, replace the Slack webhook with your Teams incoming webhook URL — the curl syntax is similar.
Step 5: SSL Certificate Alerts
If you reverse-proxy ChiefOnboarding through nginx, add certificate monitoring:
- Open the HTTPS monitor created in Step 1.
- Enable Monitor SSL certificate under the SSL section.
- Set Alert when certificate expires in less than
21 days. - Click Save.
A sample nginx proxy config for ChiefOnboarding:
server {
listen 443 ssl;
server_name onboarding.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/onboarding.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/onboarding.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto https;
}
}
The X-Forwarded-Proto header is important — Django's SECURE_PROXY_SSL_HEADER setting uses it to detect HTTPS and avoid redirect loops.
Step 6: Configure Alert Channels
- Go to Alert Channels in Vigilmon and add Slack (ironic, but reliable), email, or PagerDuty for your on-call team.
- Set Consecutive failures before alert to
2for HTTP monitors — Django startup takes a few seconds after container restarts. - Set TCP (database) and heartbeat (Slack probe) monitors to alert after
1failure. - Create a Maintenance window during ChiefOnboarding upgrades to suppress expected restart alerts.
Summary
| Monitor | Target | What It Catches |
|---|---|---|
| HTTP uptime | https://onboarding.yourdomain.com | Django crash, container down |
| API health | /api/ or /health/ | Application layer error |
| TCP: PostgreSQL | :5432 | Database down, volume full |
| Cron heartbeat | Slack webhook probe | Integration token expired, Slack API outage |
| SSL certificate | Your onboarding domain | Certificate expiry |
New hire day-one is already stressful — a broken onboarding portal makes it worse. With Vigilmon watching ChiefOnboarding's web server, API, database, Slack integration, and SSL certificate, your HR team gets alerts before new employees notice anything is wrong.