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 and databases.
- 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
- Enterprise Ready (Upcoming)
- You can use it for your business with multi-tenancy support
- Support Configuration as Code
- Private Status Page
- Proxy & IP Whitelisting
Type | Target | Protocols |
---|---|---|
APIs | REST, GraphQL, SOAP | |
Websockets | (Upcoming) | |
Websites | Public / Private | HTTP, HTTPS |
Domain Expiry (Upcoming) | ||
Database | Postgres, MongoDB, Redis | (Extensible) |
Servers | Remote Servers | SSH, RDP |
Email (Upcoming) | SMTP, POP3, IMAP | |
DNS (Upcoming) | DNS, DNSSEC | |
File Servers (Upcoming) | FTP, SFTP | |
Certificates | (Upcoming) | SSL, TLS |
Message Queues | (Upcoming) | RabbitMQ, Kafka, SQS |
- Create monitor
- View & Manage monitors
- View status page
- View history & connection 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
- 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/the-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