tutorial

Emby Monitoring with Vigilmon: Server Uptime, API Health & Library Scan Alerts

Monitor your self-hosted Emby media server with Vigilmon — track server availability on port 8096, API health, transcoding session status, SSL certificate expiry, and library scan heartbeats.

Your Emby server stopped responding at midnight. Your family's movie night is ruined, your entire media library is unavailable, and you had no warning. For self-hosted media servers, silent failures are the most frustrating kind — and the most avoidable.

Emby is a self-hosted media server for organizing and streaming video, music, photos, and live TV to clients across all platforms. It serves its web UI and comprehensive REST API on port 8096 (HTTP) or 8920 (HTTPS), with dedicated client apps for every device. Vigilmon gives you the external monitoring that catches Emby failures before they ruin someone's evening — covering the public server info endpoint, authenticated API health, session manager status, SSL certificates, and library scan heartbeats.

This tutorial walks you through monitoring Emby end-to-end with Vigilmon.

What You'll Build

  • A Vigilmon HTTP monitor on Emby's public /emby/System/Info/Public endpoint
  • An authenticated system info monitor for full operational health
  • A sessions endpoint monitor verifying the session manager and database
  • SSL certificate expiry alerts for HTTPS deployments
  • A heartbeat monitor for Emby library scan health
  • Alert channels for immediate notification

Prerequisites

  • A running Emby server (default HTTP on port 8096)
  • An Emby API key (generate one in Emby Dashboard → Advanced → API Keys)
  • A free account at vigilmon.online

Step 1: Monitor Emby Server Availability (Public Endpoint)

Emby exposes a public, unauthenticated endpoint at /emby/System/Info/Public that returns basic server information — server name, version, and OS. No API key is required, making it ideal as a liveness probe.

Test it from your terminal:

curl http://emby.yourdomain.com:8096/emby/System/Info/Public

Expected response:

{
  "LocalAddress": "http://192.168.1.100:8096",
  "ServerName": "My Emby Server",
  "Version": "4.8.0.0",
  "OperatingSystem": "Linux"
}

A 200 response confirms the Emby .NET server process is running and the API layer is accessible. If Emby crashes or its process stops, this endpoint becomes unreachable.

Set up the Vigilmon monitor:

  1. Log in to Vigilmon and click New Monitor → HTTP.
  2. Set URL to http://emby.yourdomain.com:8096/emby/System/Info/Public.
  3. Set Check interval to 60 seconds.
  4. Set Expected status code to 200.
  5. Under Advanced → Keyword check, configure:
    • Keyword present: ServerName
  6. Save the monitor.

Vigilmon now polls your Emby server every minute. If the .NET process crashes or the server becomes unreachable, the keyword check fails and you receive an alert.


Step 2: Monitor Emby System Health (Authenticated)

The public endpoint confirms Emby is running, but it doesn't verify that the server is fully operational — startup wizard completion, pending restart status, and internal health are only visible via the authenticated /emby/System/Info endpoint.

Test the authenticated endpoint:

curl -H "X-Emby-Token: YOUR_API_KEY" \
  http://emby.yourdomain.com:8096/emby/System/Info

Expected response excerpt:

{
  "ServerName": "My Emby Server",
  "Version": "4.8.0.0",
  "HasPendingRestart": false,
  "IsShuttingDown": false
}

Set up the authenticated monitor in Vigilmon:

  1. Click New Monitor → HTTP.
  2. Set URL to http://emby.yourdomain.com:8096/emby/System/Info.
  3. Set Expected status code to 200.
  4. Under Advanced → Request headers, add:
    • Header: X-Emby-Token
    • Value: YOUR_API_KEY
  5. Under Advanced → Keyword check:
    • Keyword present: ServerName
  6. Save.

This separates process liveness from full application health. If Emby is mid-startup, awaiting a pending restart, or the startup wizard is blocking normal operation, the authenticated endpoint will surface it while the public endpoint appears healthy.


Step 3: Monitor Emby Session Manager and Database

Emby's session manager tracks all active streaming sessions and confirms the database layer is functioning. The /emby/Sessions endpoint returns the active sessions list — an empty array is a valid healthy response when no one is streaming.

Test the sessions endpoint:

curl -H "X-Emby-Token: YOUR_API_KEY" \
  http://emby.yourdomain.com:8096/emby/Sessions

Expected response (no active sessions):

[]

Expected response (active sessions):

[
  {
    "Id": "abc123",
    "UserName": "User",
    "NowPlayingItem": { ... }
  }
]

Both responses are valid — what matters is a 200 status code. If the database is unavailable or the session manager has crashed, this endpoint returns an error.

Set up the monitor in Vigilmon:

  1. Click New Monitor → HTTP.
  2. Set URL to http://emby.yourdomain.com:8096/emby/Sessions.
  3. Set Expected status code to 200.
  4. Under Advanced → Request headers, add:
    • Header: X-Emby-Token
    • Value: YOUR_API_KEY
  5. Save.

Step 4: SSL Certificate Monitoring

If you're running Emby behind a reverse proxy (Nginx, Caddy, Traefik) or using Emby's native HTTPS on port 8920, SSL certificate expiry silently locks out all clients. Emby's client apps, browsers, and mobile apps all reject expired certificates.

Vigilmon monitors SSL certificate validity automatically for HTTPS monitors. To configure dedicated expiry alerts:

  1. Open your HTTPS Emby monitor in Vigilmon.
  2. Go to Settings → SSL.
  3. Enable Alert when certificate expires within 14 days.
  4. Optionally enable Alert when certificate expires within 30 days for early warning.

You'll receive alerts like:

⚠️  SSL Warning: emby.yourdomain.com
Certificate expires in 9 days (2026-07-22)

Auto-renewal via Certbot, Caddy, or Traefik can silently fail after config changes or IP migrations. Vigilmon's certificate monitor catches this before your family's movie night is broken by a TLS handshake error.


Step 5: Heartbeat Monitor for Emby Library Scan Health

Emby's media library requires periodic scanning to pick up new files, update metadata, and maintain the catalog. The library management subsystem can fail silently — Emby's main server process stays healthy while the library becomes stale or misconfigured.

Use a scheduled GET to /emby/Library/MediaFolders as a heartbeat:

curl -H "X-Emby-Token: YOUR_API_KEY" \
  http://emby.yourdomain.com:8096/emby/Library/MediaFolders

Expected response excerpt:

{
  "Items": [
    {
      "Name": "Movies",
      "Path": "/media/movies"
    },
    {
      "Name": "Music",
      "Path": "/media/music"
    }
  ],
  "TotalRecordCount": 2
}

A successful response confirms Emby's library management subsystem is running and the media folder configuration is intact. If Emby has stopped or the library configuration was lost (e.g., after a Docker volume remount), the response will fail or return an empty Items array.

Set up the heartbeat monitor in Vigilmon:

  1. Click New Monitor → HTTP.
  2. Set URL to http://emby.yourdomain.com:8096/emby/Library/MediaFolders.
  3. Set Expected status code to 200.
  4. Under Advanced → Request headers, add:
    • Header: X-Emby-Token
    • Value: YOUR_API_KEY
  5. Under Advanced → JSON body assertion, add:
    • Path: TotalRecordCount
    • Operator: greater than
    • Value: 0
  6. Save.

The TotalRecordCount > 0 assertion ensures Emby has at least one configured library — a count of zero indicates the library configuration was lost.


Step 6: Alert Channels

Go to Notifications → New Channel in Vigilmon and configure your preferred alert delivery:

  • Email — immediate alerts to your inbox
  • Webhook — forward to Discord, Slack, or ntfy.sh for push notifications on mobile

For Discord, paste your server webhook URL. An Emby downtime alert looks like:

🔴 DOWN: emby.yourdomain.com:8096/emby/System/Info/Public (HTTP timeout)
Emby server availability check failed
Region: NA-East
Triggered: 2026-01-15 22:14 UTC

Recovery notification:

✅ RECOVERED: emby.yourdomain.com:8096/emby/System/Info/Public
Downtime: 23 minutes

Step 7: Status Page

Go to Status Pages → New Status Page in Vigilmon. Add your Emby monitors and publish. Share with household members so they can check server status themselves instead of interrupting you.


What You've Built

| Scenario | How Vigilmon catches it | |---|---| | Emby .NET server process crash | Public /System/Info/Public returns non-200 | | Server awaiting restart or mid-startup | Authenticated /System/Info surfaces HasPendingRestart: true | | Database unavailable | /emby/Sessions returns non-200 error | | Reverse proxy (Nginx/Caddy) down | HTTPS monitor detects 502 or TLS error | | SSL certificate expired or expiring | SSL expiry alert triggers at threshold | | Library configuration lost | MediaFolders heartbeat returns TotalRecordCount: 0 | | DNS misconfiguration | HTTP monitor detects DNS resolution failure |


Self-hosting your media library means you control your content — but without external monitoring, you're the last to know when it stops working. Vigilmon watches from outside your network, from multiple regions, with no agents to install.

Start monitoring your Emby 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 →