tutorial

Uptime monitoring for Glance self-hosted dashboard

Glance is a self-hosted dashboard built in Go that aggregates live data from RSS feeds, GitHub, Reddit, weather APIs, and dozens of other sources into a sing...

Glance is a self-hosted dashboard built in Go that aggregates live data from RSS feeds, GitHub, Reddit, weather APIs, and dozens of other sources into a single configurable page. It is the kind of tool people open first thing every morning — so when it is down or feeds are broken, users notice immediately. Because Glance pulls from many external APIs, failures can come from the web server itself, a single widget's data source, or the configuration reload service.

This tutorial covers production-grade uptime monitoring for Glance using Vigilmon. We will walk through:

  • Monitoring Glance web server uptime on port 8080
  • Monitoring widget feed fetch health
  • Monitoring external API connectivity for each data source
  • Monitoring configuration reload service
  • Monitoring dashboard page load performance

Prerequisites

  • Glance running on port 8080 (Docker or bare metal)
  • A free account at vigilmon.online

Part 1: Monitor the Glance web server

Glance serves its dashboard on port 8080. Monitoring the root URL confirms the Go HTTP server is running and the dashboard page renders correctly.

Deploy Glance with Docker Compose

# docker-compose.yml
version: "3.8"

services:
  glance:
    image: glanceapp/glance:latest
    ports:
      - "8080:8080"
    volumes:
      - ./glance.yml:/app/glance.yml:ro
    restart: unless-stopped

Verify the web server

curl -s -o /dev/null -w "%{http_code}" http://localhost:8080/
# Expected: 200

Vigilmon setup for the Glance web server

  1. Log in to vigilmon.online and click Add Monitor.
  2. Choose HTTP(S) monitor.
  3. Enter: http://your-glance-host:8080/
  4. Set interval to 1 minute.
  5. Add a keyword check: must contain Glance (or a known title from your dashboard HTML).
  6. Name it Glance Dashboard.
  7. Click Save.

The keyword check confirms the Go template rendered the actual dashboard page, not a generic 200 from an error handler or load balancer.


Part 2: Monitor widget feed health

Glance fetches data from RSS, Reddit, GitHub, and other sources on a configurable schedule. If a widget feed fetch fails repeatedly, the dashboard shows stale or empty data. While Glance degrades gracefully per widget, a systematic feed failure is worth alerting on.

Sample Glance configuration

# glance.yml
pages:
  - name: Home
    columns:
      - size: small
        widgets:
          - type: rss
            title: Tech News
            feeds:
              - url: https://hnrss.org/frontpage
              - url: https://lobste.rs/rss
          - type: weather
            location: New York, NY
          - type: reddit
            subreddit: selfhosted
      - size: full
        widgets:
          - type: github-releases
            repositories:
              - glanceapp/glance
              - immich-app/immich

Monitor feed sources directly

The most reliable approach is to monitor the upstream feed URLs directly, in addition to the Glance web server. This lets you distinguish "Glance is down" from "one feed source is down":

| Widget type | Monitor URL | Keyword | |-------------|-------------|---------| | RSS (HN) | https://hnrss.org/frontpage | <rss | | Reddit | https://www.reddit.com/r/selfhosted/.rss | <feed | | Weather API | https://wttr.in/New+York?format=j1 | current_condition |

Create one HTTP monitor per critical feed in Vigilmon, labeled clearly (Glance RSS Source — HN, Glance Reddit Feed, etc.).


Part 3: Monitor external API connectivity

Glance integrates with GitHub, Twitch, and other external APIs that require authentication tokens. Token expiry, rate limiting, or API outages cause silent widget failures that are hard to diagnose from the dashboard alone.

GitHub API connectivity

# Test GitHub API reachability (no auth — checks connectivity only)
curl -s -o /dev/null -w "%{http_code}" https://api.github.com/repos/glanceapp/glance
# Expected: 200

Set up API connectivity monitors in Vigilmon

  1. Click Add Monitor.
  2. Choose HTTP(S) monitor.
  3. Enter: https://api.github.com/
  4. Set interval to 5 minutes (GitHub API rate limits apply to unauthenticated checks).
  5. Set expected status code to 200.
  6. Name it Glance — GitHub API.
  7. Click Save.

Repeat for each external API your widgets depend on. Keep these on a longer interval (5–10 minutes) to avoid hitting external rate limits.


Part 4: Monitor the configuration reload service

Glance watches its configuration file for changes and reloads without restarting. If the config-reload watcher stalls (typically after a SIGHUP or a corrupt config write), the running dashboard may drift from the intended configuration.

Monitor Glance's response after a known configuration change by watching for a page title or widget that matches expectations:

# Check that the dashboard title is still set correctly
curl -s http://localhost:8080/ | grep -c "Home"
# Expected: 1 or more matches

Vigilmon keyword monitor for config integrity

  1. Click Add Monitor.
  2. Choose HTTP(S) monitor.
  3. Enter: http://your-glance-host:8080/
  4. Set interval to 5 minutes.
  5. Add a keyword check: must contain Home (or the name of your first page in glance.yml).
  6. Name it Glance Config Integrity.
  7. Click Save.

If the keyword disappears — because the config failed to reload or a page name changed unexpectedly — this monitor fires a DOWN alert.


Part 5: Monitor dashboard page load performance

Because Glance fetches external data on each page render (for uncached widgets), dashboard response time is a good proxy for the health of its external integrations. A slow dashboard usually means one or more upstream feeds are timing out.

Enable response time monitoring in Vigilmon

Vigilmon records response times for every HTTP monitor check. To surface performance regressions:

  1. Open the Glance Dashboard monitor you created in Part 1.
  2. Click Edit.
  3. Under Alerting, enable Response time alert.
  4. Set threshold to 5000 ms (Glance with external widgets can be slow on first load).
  5. Click Save.

You can view response time history in the Vigilmon dashboard for any monitor. If response times trend upward, check which widget feed is slowing down.


Part 6: SSL certificate monitoring

If Glance is exposed through a reverse proxy with TLS, monitor the certificate to catch renewal failures:

  1. In Vigilmon, click Add Monitor.
  2. Choose SSL monitor.
  3. Enter: glance.example.com
  4. Set alert threshold to 14 days before expiry.
  5. Add your alert channel.
  6. Click Save.

Part 7: Webhook alerts

Configure Vigilmon webhooks to notify your team when the Glance dashboard goes down:

// webhook-receiver.ts
import express from 'express';

const app = express();
app.use(express.json());

app.post('/webhook/vigilmon', (req, res) => {
  const { monitor_name, status, url, response_code, response_time_ms, checked_at } = req.body;

  if (status === 'down') {
    console.error('[VIGILMON] Glance monitor DOWN', {
      monitor: monitor_name,
      url,
      code: response_code,
      responseTime: response_time_ms,
      at: checked_at,
    });

    notifyTeam({ monitor: monitor_name, url });
  } else if (status === 'up') {
    console.info('[VIGILMON] Glance recovered', { monitor: monitor_name });
  }

  res.sendStatus(204);
});

Vigilmon sends this payload on DOWN and UP transitions:

{
  "monitor_id": "mon_def456",
  "monitor_name": "Glance Dashboard",
  "status": "down",
  "url": "http://your-glance-host:8080/",
  "checked_at": "2026-06-30T09:15:00Z",
  "response_code": 503,
  "response_time_ms": 30000
}

Summary

Your Glance deployment now has four layers of monitoring:

  1. Web server uptime — confirms Glance is serving the dashboard page on port 8080.
  2. Widget feed health — monitors each upstream RSS, Reddit, and external feed independently.
  3. External API connectivity — catches GitHub and other API outages before they silently break widgets.
  4. Performance monitoring — surfaces slow dashboard loads caused by upstream feed timeouts.

Vigilmon handles check scheduling, multi-region polling, alert routing, and uptime history. You get notified within 60 seconds of any failure in your Glance stack.


Monitor your Glance dashboard free at vigilmon.online

#glance #selfhosted #dashboard #devops #monitoring

Monitor your app with Vigilmon

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

Start free →