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
- 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 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
Group | Check | Description | Interval |
---|---|---|---|
Microservices | APIs | REST, GraphQL, SOAP | 1 minute(s)+ |
Sites | Websites Availability | HTTP, HTTPS | 1 minute(s)+ |
Page Speed Test (planned) | |||
Events | Push Based (planned) | Job Completion Status | 1 minute(s)+ |
Domains | SSL Certificate Expiry | 1 week(s)+ | |
Domain Expiry | 1 week(s)+ | ||
DNS Lookup | 1 week(s)+ | ||
Databases | Database Connection | Postgres, Redis, ... | 5 minute(s)+ |
Websockets | (planned) | ||
Servers | Remote Servers (planned) | SSH, RDP | |
Email (planned) | SMTP, POP3, IMAP | ||
File Servers (planned) | FTP, SFTP | ||
Message Queues | (planned) | RabbitMQ, Kafka, SQS |
- Teams
- 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/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