Skip to content

sahasourav123/watchtower

Repository files navigation

The Watchtower

watchtower.jpeg 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

Why The Watchtower?

  1. Simple - Clutter-free design. Minimal input required.
  2. Effective - Developer friendly
  3. Open Source - You can contribute and make it better
  4. Versatile - You can use it for i.e. APIs, websites, servers and databases.
  5. Manageable - You can manage configs through UI, API and Config as Code.
  6. Cloud Agnostic - Run it on your own server or any cloud
  7. Extensible - You can add plugins & connector for different services
  8. Status Page (Backlog) - Public & Private status page
  9. Enterprise Ready (Backlog)
    1. You can use it for your business with multi-tenancy support
    2. Support Configuration as Code
    3. Private Status Page
    4. Proxy & IP Whitelisting

Basic Features

  1. Create monitor
  2. View & Manage monitors
  3. View Uptime History
  4. View history & connection statistics
  5. Public / Private status page
  6. Create Alert Rules
  7. Send alerts in different channel
  8. Organisation & User management
  9. Manage configs through API
  10. Manage configs through CLI / CI Pipeline

Supported Checks (Developed: 6 | Planned: 7)

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

Supported Alerting Channels (Developed: 0 | Planned: 4)

  1. Email
  2. Teams
  3. Slack
  4. Webhook

Your contribution is appreciated

  1. Scaling the system with container orchestration for public use
  2. Adding more connectors for different services
  3. Adding more alerting channels
  4. Some money or infra support for hosting the system in cloud across the globe

Development Setup

  1. Clone the repository
git clone https://github.com/sahasourav123/the-watchtower.git
  1. Setup a virtual environment
python3 -m venv venv
source venv/bin/activate
pip install --upgrade pip
  1. Install the dependencies
pip install -r backend/requirements.txt
pip install -r frontend/requirements.txt
  1. Run backend application (fastapi app)
cd backend
export PYTHONPATH=$(pwd)/src
uvicorn src.main:app --reload --host 0.0.0.0 --port 8001
  1. Run frontend application (streamlit app)
cd frontend
export PYTHONPATH=$(pwd)/src
streamlit run src/Dashboard.py --server.runOnSave true
  1. Build the docker image
docker compose build

Run the system in docker

  • Run the docker container
docker compose up -d
  • Clean up (without data)
docker compose down
  • Clean up (with data)
docker compose down -v