Website uptime checker with scheduled scans and Discord notifications
·
Report Bug
·
Request Feature
WEB UI EXAMPLE
Status Watcher is a lightweight website monitoring tool that periodically checks website availability and sends real-time notifications via Discord when downtime is detected. The project is built with Flask, SQLite, and APScheduler, and optionally integrates with Prometheus and Grafana for observability.
- Manage monitored websites via a Web UI
- One-click deployment with Docker
- Prometheus metrics collection and Grafana visualization
- Real-time alerts via Discord Webhook
- Periodic website availability checks
- Real-time Discord notifications
- Web UI for CRUD operations on monitored sites
- Prometheus metrics (status code, response time, status changes)
- Grafana dashboard integration
Before running the project, create a .env file in the project root directory and add your Discord webhook URL:
DISCORD_WEBHOOK_URL=https://discord.com/api/webhooks/your_webhook_id/your_webhook_token- Python 3.8+
- pip
- Docker & Docker Compose
- SQLite
# Clone the repository
git clone https://github.com/xfy0012/Status-Watcher-.git
cd Status-Watcher-
# Install dependencies
pip install -r requirements.txt
# Start the service
python run.pyVisit: http://localhost:5000
docker-compose up --build- Web UI: http://localhost:5050
- Prometheus: http://localhost:9090
- Grafana: http://localhost:3000
This project includes automated tests for API endpoints and core business logic.
To run all tests, make sure you have installed the dependencies, then run:
pytestTest coverage includes:
- API endpoints (CRUD for websites)
- Website status checking logic (with mocks)
- Error handling for invalid input and not found resources
Test files are located in the tests/ directory.
- Add/delete monitored websites via the Web UI
- The system automatically checks website status on a schedule
- Status changes trigger real-time Discord Webhook notifications
- Prometheus collects monitoring metrics, which can be visualized in Grafana
GET /api/websitesGet all monitored websitesPOST /api/websitesAdd a new websitePUT /api/websites/<id>Update a websiteDELETE /api/websites/<id>Delete a website
- Website monitoring and alerting
- Web UI management
- Prometheus & Grafana integration
- User system and permissions
- Email/Slack/Telegram notifications
- More advanced monitoring metrics and reports
- All data currently belongs to user_id=1; multi-user and permissions are not implemented
- Discord Webhook must be configured via environment variable
- No API authentication or authorization
- Only HTTP/HTTPS website monitoring is supported
Distributed under the MIT License. See LICENSE for more information.

