Welcome to WatchTower GUI! This project provides a user-friendly interface for visualizing data collected by the WatchTower Python application. It allows you to monitor and analyze the performance of multiple machines running WatchTower Python by plotting beautiful graphs generated from the data they send to a common master server.
WatchTower GUI serves as a visualization tool for WatchTower, a Python application that collects data from multiple machines and sends it to a central master server. This graphical user interface (GUI) helps you make sense of the data by plotting insightful graphs and checking the status of configured websites.
- Graphical Data Visualization: View beautiful graphs generated from data collected by WatchTower Python.
- Website Status Checker: Monitor the status of websites configured in the
website.json
file. - Easy Configuration: Simple setup with configuration files for server endpoints and websites to monitor.
- Dynamic Server API Calls (To-Do): Configure server API calls dynamically with a
config.json
file. - Email Alerts (To-Do): Implement email alerts for websites that are down.
Before getting started, ensure you have the following prerequisites installed on your system:
- Node.js (for the frontend)
- WatchTower Python installed on target machines (for data collection)
git clone https://github.com/DefineX-Studios/WatchTower.git
-
Clone this repository to your local machine.
git clone https://github.com/DefineX-Studios/WatchTower-GUI.git
-
Navigate to the project's root directory.
cd watchtower-gui
-
Install the required Node.js dependencies.
npm install
To configure the server endpoints where WatchTower Python backend servers are sending data, create a config.json
file in the root directory and define the location
parameter as the path where the data is stored on the master server.
Example config.json
:
{
"location": "/home/server_info"
}
To monitor website statuses, create a website.json
file in the root directory with the following structure:
{
"website_name": "website_url"
}
For example:
{
"My Website": "https://example.com",
"Another Website": "https://example.org"
}
-
Start the backend server in the root directory. This will initiate the server.js file, and all API calls will be available at port 5000.
node server.js
-
In the
frontend
folder, initiate React at port 3000.npm start
-
Open a web browser and navigate to
http://localhost:3000
to access the WatchTower GUI. -
Explore the graphs generated from WatchTower Python data and monitor the status of configured websites.
The project structure is organized as follows:
Node.js
(server backend)frontend
(React frontend).gitignore
package.json
server.js
- Make server API calls dynamic and implement a
config.json
to store server configuration. - Maybe add an emailing system for websites that are down.
Contributions are welcome! If you have any ideas, bug fixes, or improvements, please feel free to open an issue or submit a pull request.
This project is licensed under the MIT License. You are free to use, modify, and distribute the code as per the terms of the license.