Implement all vendor integrations, WAN graphs, and FortiGate health panel

- Wire up 26 vendor providers: Atlassian Statuspage API, Status.io, Instatus,
  AWS RSS feeds, Apple/Google JSON feeds, M365 Graph API, and synthetic checks
- Add 11 new providers: AWS, Cloudflare, SmartPass, School Dismissal Manager,
  SherpaDesk, Classkick, ClassDojo, Savvas, Study Island, Promethean, RAZ-Kids
- Rename Local Infrastructure → Internet (TCP check to 8.8.8.8:53)
- Add WAN throughput graph section: dual-link canvas graphs (Crown Castle +
  Comcast) polling FortiGate REST API every 30s with 30-min rolling history
- Add FortiGate health card: uptime, CPU %, memory % from FortiOS API
- Add /api/throughput and /api/fortigate-health endpoints
- Add README with setup instructions

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Klein
2026-02-20 13:46:13 -05:00
parent 7d8cde8f92
commit 51eb3bf7c8
39 changed files with 1776 additions and 59 deletions
+52
View File
@@ -21,6 +21,58 @@
</div>
</header>
<div id="summary-bar"></div>
<section id="wan-section">
<div id="wan-graphs">
<div class="wan-panel">
<div class="wan-panel-header">
<span class="wan-name" id="wan1-name">Crown Castle</span>
<div class="wan-legend">
<span class="wan-legend-item"><span class="wan-legend-dot rx"></span><span id="wan1-rx">— Mbps ↓</span></span>
<span class="wan-legend-item"><span class="wan-legend-dot tx"></span><span id="wan1-tx">— Mbps ↑</span></span>
</div>
</div>
<canvas id="wan1-canvas" class="wan-canvas"></canvas>
</div>
<div class="wan-panel">
<div class="wan-panel-header">
<span class="wan-name" id="wan2-name">Comcast</span>
<div class="wan-legend">
<span class="wan-legend-item"><span class="wan-legend-dot rx"></span><span id="wan2-rx">— Mbps ↓</span></span>
<span class="wan-legend-item"><span class="wan-legend-dot tx"></span><span id="wan2-tx">— Mbps ↑</span></span>
</div>
</div>
<canvas id="wan2-canvas" class="wan-canvas"></canvas>
</div>
</div>
<div id="fg-health-card">
<div class="fg-identity">
<span class="status-indicator operational" id="fg-status-dot"></span>
<span class="fg-model" id="fg-model">FortiGate 1800F</span>
</div>
<div class="fg-metrics">
<div class="fg-metric">
<span class="fg-metric-label">Hostname</span>
<span class="fg-metric-value" id="fg-hostname"></span>
</div>
<div class="fg-metric">
<span class="fg-metric-label">Version</span>
<span class="fg-metric-value" id="fg-version"></span>
</div>
<div class="fg-metric">
<span class="fg-metric-label">Uptime</span>
<span class="fg-metric-value" id="fg-uptime"></span>
</div>
<div class="fg-metric">
<span class="fg-metric-label">CPU</span>
<span class="fg-metric-value" id="fg-cpu"></span>
</div>
<div class="fg-metric">
<span class="fg-metric-label">Memory</span>
<span class="fg-metric-value" id="fg-mem"></span>
</div>
</div>
</div>
</section>
<main id="vendor-grid"></main>
<script src="js/app.js"></script>
</body>