This Project is about an Uptime Monitoring system with Alerting and Status Page.
This can be used for Web & Infrastructure uptime monitoring. It is built using Streamlit as frontend and FastAPI+Postgres as backend. All Open Source.
Project is live for Public use at The Watchtower
- Simple - Clutter-free design. Minimal input required.
- Effective - Developer friendly
- Open Source - You can contribute and make it better
- Versatile - You can use it for i.e. APIs, websites, servers, databases & Events
- Manageable - You can manage configs through UI, API and Config as Code.
- Cloud Agnostic - Run it on your own server or any cloud
- Extensible - You can add plugins & connector for different services
- Status Page (Backlog) - Public & Private status page
- Enterprise Ready (Backlog)
- You can use it for your business with multi-tenancy support
- Support Configuration as Code
- Private Status Page
- Proxy & IP Whitelisting
- Create monitor
- View & Manage monitors
- View Uptime History
- View Response statistics
- Public / Private status page
- Create Alert Rules
- Send alerts in different channel
- Organisation & User management
- Manage configs through API
- Manage configs through CLI / CI Pipeline
# | Group | Monitoring | Intervals |
---|---|---|---|
1 | Microservices | APIs | 1 minute or above |
2 | Sites | Websites Availability | 1 minute or above |
3 | **Page Speed Test | 1 day or above | |
4 | Domains | SSL Certificate Expiry | 1 day or above |
5 | Domain Expiry | 1 day or above | |
6 | DNS Lookup | 1 day or above | |
7 | Events & Jobs | **Periodic Job (Cron) | Push Based |
8 | Asynchronous Event | Push Based | |
9 | Databases | Postgres | 5 minute or above |
10 | **ElasticSearch | 5 minute or above | |
11 | **Redis | 5 minute or above | |
12 | Servers | **Remote Servers | |
13 | **Email Servers | ||
14 | **File Servers |
- Slack
- Webhook
- Scaling the system with container orchestration for public use
- Adding more connectors for different services
- Adding more alerting channels
- Some money or infra support for hosting the system in cloud across the globe
- Clone the repository
git clone https://github.com/sahasourav123/watchtower.git
- Setup a virtual environment
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
- Install the dependencies
pip install -r backend/requirements.txt
pip install -r frontend/requirements.txt
- Run backend application (fastapi app)
cd backend
export PYTHONPATH=$(pwd)/src
uvicorn src.main:app --reload --host 0.0.0.0 --port 8001
- Run frontend application (streamlit app)
cd frontend
export PYTHONPATH=$(pwd)/src
streamlit run src/Dashboard.py --server.runOnSave true
- Build the docker image
docker compose build
- Run the docker container
docker compose up -d
- Clean up (without data)
docker compose down
- Clean up (with data)
docker compose down -v