diff --git a/asf-cloud-server/monitor/main.py b/asf-cloud-server/monitor/main.py index 2c5e8b3..105f7e8 100644 --- a/asf-cloud-server/monitor/main.py +++ b/asf-cloud-server/monitor/main.py @@ -1,4 +1,5 @@ from fastapi import FastAPI +from fastapi.responses import FileResponse from fastapi.middleware.cors import CORSMiddleware import os from dotenv import load_dotenv @@ -36,6 +37,10 @@ WEB_SERVICES = [ {"name": "Board", "url": "https://board.nabd-co.com/"}, ] +@app.get("/") +async def read_index(): + return FileResponse("monitor.html") + @app.get("/api/status") async def get_status(): # Run SSH checks in parallel diff --git a/asf-cloud-server/monitor/monitor.html b/asf-cloud-server/monitor/monitor.html index a2d5774..1e661bf 100644 --- a/asf-cloud-server/monitor/monitor.html +++ b/asf-cloud-server/monitor/monitor.html @@ -40,19 +40,6 @@ animation: fadeInDown 0.8s ease-out; } - h1 { - font-size: 2.5rem; - font-weight: 700; - margin-bottom: 10px; - background: linear-gradient(to right, var(--accent-blue), var(--accent-purple)); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - display: flex; - align-items: center; - justify-content: center; - gap: 15px; - } - header p { color: var(--text-dim); font-size: 1.1rem; diff --git a/asf-cloud-server/monitor/readme.md b/asf-cloud-server/monitor/readme.md new file mode 100644 index 0000000..1dad9b4 --- /dev/null +++ b/asf-cloud-server/monitor/readme.md @@ -0,0 +1,45 @@ +Infrastructure Monitor Dashboard Walkthrough +I have successfully created a real-time infrastructure monitor dashboard. + +Features +Real-time Monitoring: Pings local servers (PC and Raspberry Pi) via SSH and web services via HTTP. +System Metrics: Displays CPU usage, RAM usage, Temperature, and Disk space for servers. +Premium UI: Modern, dark-themed dashboard with glassmorphism effects and dynamic charts. +Dockerized: Easy deployment using Docker Compose. +Components +Backend (FastAPI) +main.py +: Handles API requests and orchestrates monitoring tasks. +monitor_logic.py +: Contains the logic for SSH commands and web pings. +requirements.txt +: Python dependencies. +Frontend (HTML/JS) +monitor.html +: A single-page application that fetches data from the backend and updates the UI every minute. +Deployment +Dockerfile +: Build instructions for the container. +docker-compose.yml +: Service definition. +.env +: Environment variables for SSH passwords. +How to Deploy +Copy files to your cloud server: Copy the contents of the monitor directory to your server. + +Run with Docker Compose: + +docker-compose up -d --build +Update Caddyfile: Add the following to your Caddyfile: + +asf.monitor.nabd-co.com { + reverse_proxy monitor-app:8000 +} +Then reload Caddy: + +docker exec caddy caddy reload --config /etc/caddy/Caddyfile +Verification +Access asf.monitor.nabd-co.com in your browser. +You should see the dashboard with real-time stats. +The "Web Services" section will show the status and latency of your services. +The PC and Raspberry Pi sections will show their health metrics. \ No newline at end of file