tutorial

Monitoring Lubelogger with Vigilmon

Lubelogger tracks vehicle maintenance and fuel logs on your own server — but a crashed web app means lost access to service history you rely on. Here's how to monitor Lubelogger's availability, SQLite backend, and reminder service with Vigilmon.

Lubelogger is a self-hosted vehicle maintenance and fuel log tracker built on C#/.NET, running on port 8080. It stores your full service history — oil changes, tire rotations, fuel economy trends, maintenance reminders — in a local SQLite database with no cloud dependency. When the web app goes down or the database file becomes inaccessible, you lose access to records you may need urgently (recall your last brake service date, find your oil change mileage). Vigilmon keeps watch on every layer of Lubelogger so you know the moment something needs attention.

What You'll Set Up

  • Web application availability monitor (port 8080)
  • SQLite database connectivity health check
  • Fuel log entry API probe
  • Maintenance reminder service check
  • Mileage tracking endpoint monitor
  • Export job service heartbeat

Prerequisites

  • Lubelogger running and accessible on port 8080
  • At least one vehicle configured in the system
  • A free Vigilmon account

Step 1: Monitor the Lubelogger Web Application

The web UI is the primary health signal — a 200 from the root path means the .NET host is up, Razor is rendering, and the app's startup initialization completed successfully:

  1. Log in to vigilmon.online and click Add Monitor.
  2. Set Type to HTTP / HTTPS.
  3. Enter your Lubelogger URL: http://YOUR_SERVER_IP:8080.
  4. Set Check interval to 1 minute.
  5. Set Expected HTTP status to 200.
  6. Click Save.

If Lubelogger is running behind a reverse proxy (nginx, Caddy, Traefik), monitor the proxied domain instead. Enable Monitor SSL certificate and set an expiry alert at 21 days if you're serving Lubelogger over HTTPS.


Step 2: Probe the Vehicle API for Database Connectivity

Lubelogger's API endpoints query the SQLite database on every request. Monitoring the vehicles list endpoint confirms both the application layer and database connectivity are healthy:

  1. Click Add MonitorHTTP / HTTPS.
  2. Enter: http://YOUR_SERVER_IP:8080/api/vehicles.
  3. Set Expected HTTP status to 200.
  4. Under Response body contains, enter "id" to confirm a non-empty JSON response is returned.
  5. Set Check interval to 2 minutes.
  6. Click Save.

A failure on this endpoint with the web UI still returning 200 indicates a SQLite issue — likely a locked database file, full disk, or a corrupted .db file. Check the Lubelogger container logs:

docker logs lubelogger --tail 50
# Look for: "database is locked" or "unable to open database file"

Verify SQLite database file integrity:

sqlite3 /path/to/lubelogger/data/lubelogger.db "PRAGMA integrity_check;"
# Should return: ok

Step 3: Monitor the Fuel Log API

The fuel log is one of Lubelogger's most frequently used features — daily or weekly entries tracking fuel economy trends over time. Monitor the fuel records endpoint for a specific vehicle to verify write-path health:

  1. In Lubelogger, note the numeric ID of one of your vehicles (visible in the URL when viewing vehicle details).
  2. Click Add MonitorHTTP / HTTPS.
  3. Enter: http://YOUR_SERVER_IP:8080/api/vehicle/fuelrecords?vehicleId=YOUR_VEHICLE_ID.
  4. Set Expected HTTP status to 200.
  5. Set Check interval to 5 minutes.
  6. Click Save.

A successful response confirms the fuel records table is readable. If you want to also verify write health, add a lightweight canary script that posts a test fuel record and immediately deletes it, pinging Vigilmon's heartbeat endpoint on success:

#!/bin/bash
# Post a test fuel record
RECORD_ID=$(curl -s -X POST http://YOUR_SERVER_IP:8080/api/vehicle/fuelrecords \
  -H "Content-Type: application/json" \
  -d '{"vehicleId": YOUR_VEHICLE_ID, "date": "2026-01-01", "mileage": 0, "gallons": 0.1, "cost": 0.10}' \
  | jq -r '.id')

# Delete the test record
if [ -n "$RECORD_ID" ] && [ "$RECORD_ID" != "null" ]; then
  curl -s -X DELETE "http://YOUR_SERVER_IP:8080/api/vehicle/fuelrecords?id=$RECORD_ID"
  curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi

Step 4: Monitor the Maintenance Reminder Service

Lubelogger sends maintenance reminders based on mileage thresholds or date intervals. The reminders API confirms the reminder calculation engine is running against your service records:

  1. Click Add MonitorHTTP / HTTPS.
  2. Enter: http://YOUR_SERVER_IP:8080/api/vehicle/reminders?vehicleId=YOUR_VEHICLE_ID.
  3. Set Expected HTTP status to 200.
  4. Set Check interval to 10 minutes.
  5. Click Save.

A healthy response returns a JSON array (possibly empty if no reminders are due). An error response from this endpoint while other API endpoints work correctly can indicate a corrupted service record entry that's causing the reminder calculation to throw an exception.


Step 5: Heartbeat for Export Jobs

Lubelogger can export your vehicle records as CSV or PDF. If you have automated export scripts (for backups, sharing with a mechanic, or insurance records), use a Vigilmon heartbeat to confirm they're completing successfully:

  1. Click Add MonitorCron Heartbeat.
  2. Set the expected ping interval to match your export schedule (e.g., 10080 minutes for weekly exports).
  3. Copy the heartbeat URL.
  4. Add the ping to your export script:
#!/bin/bash
# Export vehicle records to CSV
curl -s "http://YOUR_SERVER_IP:8080/api/vehicle/export?vehicleId=YOUR_VEHICLE_ID&exportFormat=CSV" \
  -o /backup/vehicle_$(date +%Y%m%d).csv

if [ $? -eq 0 ]; then
  curl -s https://vigilmon.online/heartbeat/YOUR_HEARTBEAT_ID
fi
  1. Click Save in Vigilmon.

If the export job fails (disk full, application error, network issue) and never pings, Vigilmon alerts after the interval passes. This is especially important for backups — a silent export failure can leave you without a recent backup when you need to recover data.


Step 6: Configure Alerts

Lubelogger is a personal productivity tool, so you want alerts that are actionable without being noisy:

  1. Go to Alert Channels in Vigilmon and configure email as your primary channel. Lubelogger doesn't need 24/7 on-call coverage, but you want to know within a few minutes if it goes down.
  2. Set Consecutive failures before alert to 2 for web UI and API monitors — a single probe failure during a container restart is normal.
  3. For the database API monitor, set to 1 — database connectivity failures need immediate investigation to prevent data loss.
  4. Tag all Lubelogger monitors in a Monitor group so you can silence the whole group during planned maintenance:
# Open a 5-minute maintenance window before updating
curl -X POST https://vigilmon.online/api/maintenance \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -d '{"monitor_id": "YOUR_MONITOR_ID", "duration_minutes": 5}'

docker compose pull lubelogger && docker compose up -d lubelogger

Summary

| Monitor | Target | What It Catches | |---|---|---| | Web UI | http://HOST:8080 | .NET host crash, startup failure | | Vehicles API | /api/vehicles | SQLite connectivity, DB corruption | | Fuel records API | /api/vehicle/fuelrecords | Fuel log table read failure | | Reminders API | /api/vehicle/reminders | Reminder calculation exception | | Export heartbeat | Heartbeat URL | Export/backup job failure |

Your vehicle service history and fuel economy data are more valuable when you can actually access them. Lubelogger keeps that data on your own server — Vigilmon makes sure the server stays accessible and the database stays healthy, so your records are there when you need them.

Monitor your app with Vigilmon

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

Start free →