tutorial

Monitoring ChiefOnboarding with Vigilmon

ChiefOnboarding automates employee onboarding — but if it goes down on a new hire's first day, the experience is ruined. Here's how to monitor its web server, API, database, and Slack integration with Vigilmon.

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:

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your ChiefOnboarding URL. If accessed directly: http://your-server-ip:8000. If proxied via nginx: https://onboarding.yourdomain.com.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200 or 302 (the root may redirect to /login).
  6. Click Save.

To confirm the full Django stack (not just nginx), add a response body check:

  • Under Response body check, enter ChiefOnboarding or Login to 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:

  1. In Vigilmon, add a second HTTP / HTTPS monitor.
  2. Enter: https://onboarding.yourdomain.com/api/
  3. Set Expected HTTP status to 200.
  4. Set Check interval to 5 minutes.
  5. 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:

  1. In Vigilmon, click Add MonitorTCP Port.
  2. Enter your PostgreSQL host and port 5432.
  3. Set Check interval to 1 minute.
  4. 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:

  1. Open the HTTPS monitor created in Step 1.
  2. Enable Monitor SSL certificate under the SSL section.
  3. Set Alert when certificate expires in less than 21 days.
  4. 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

  1. Go to Alert Channels in Vigilmon and add Slack (ironic, but reliable), email, or PagerDuty for your on-call team.
  2. Set Consecutive failures before alert to 2 for HTTP monitors — Django startup takes a few seconds after container restarts.
  3. Set TCP (database) and heartbeat (Slack probe) monitors to alert after 1 failure.
  4. 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.

Monitor your app with Vigilmon

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

Start free →