2025-01-04 01:42:16 -05:00
|
|
|
{
|
feat: terminal aesthetic rewrite + link debug page
- Full dark terminal aesthetic (Pulse/TinkerTickets style):
- #0a0a0a background, #00ff41 green, #ffb000 amber, #00ffff cyan
- CRT scanline overlay, phosphor glow, ASCII corner pseudoelements
- Bracket-notation badges [CRITICAL], monospace font throughout
- style.css, base.html, index.html, suppressions.html all rewritten
- New Link Debug page (/links, /api/links):
- Per-host, per-interface cards with speed/duplex/port type/auto-neg
- Traffic bars (TX cyan, RX green) with rate labels
- Error/drop counters, carrier change history
- SFP/DOM optical panel: vendor, temp, voltage, bias, TX/RX power dBm bars
- RX-TX delta shown; color-coded warn/crit thresholds
- Auto-refresh every 60s, anchor-jump to #hostname
- LinkStatsCollector in monitor.py:
- SSHes to each host (one connection, all ifaces batched)
- Parses ethtool + ethtool -m (SFP DOM) output
- Merges with Prometheus traffic/error/carrier metrics
- Stores as link_stats in monitor_state table
- config.json: added ssh section for ethtool collection
- app.js: terminal chip style consistency (uppercase, ● bullet)
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-02 12:43:11 -05:00
|
|
|
"ssh": {
|
|
|
|
|
"user": "root",
|
|
|
|
|
"password": "Server#980000Panda",
|
|
|
|
|
"connect_timeout": 5,
|
|
|
|
|
"timeout": 20
|
|
|
|
|
},
|
2025-02-07 20:55:38 -05:00
|
|
|
"unifi": {
|
|
|
|
|
"controller": "https://10.10.10.1",
|
|
|
|
|
"api_key": "kyPfIsAVie3hwMD4Bc1MjAu8N7HVPIb8",
|
|
|
|
|
"site_id": "default"
|
|
|
|
|
},
|
2026-03-01 23:03:18 -05:00
|
|
|
"prometheus": {
|
|
|
|
|
"url": "http://10.10.10.48:9090"
|
|
|
|
|
},
|
|
|
|
|
"database": {
|
|
|
|
|
"host": "10.10.10.50",
|
|
|
|
|
"port": 3306,
|
|
|
|
|
"user": "gandalf",
|
|
|
|
|
"password": "Gandalf2026Lotus",
|
|
|
|
|
"name": "gandalf"
|
|
|
|
|
},
|
|
|
|
|
"ticket_api": {
|
|
|
|
|
"url": "http://10.10.10.45/create_ticket_api.php",
|
|
|
|
|
"api_key": "5acc5d3c647b84f7c6f59082ce4450ee772e2d1633238b960136f653d20c93af"
|
|
|
|
|
},
|
|
|
|
|
"auth": {
|
|
|
|
|
"allowed_groups": ["admin"]
|
|
|
|
|
},
|
|
|
|
|
"monitor": {
|
|
|
|
|
"poll_interval": 120,
|
|
|
|
|
"failure_threshold": 2,
|
|
|
|
|
"cluster_threshold": 3,
|
|
|
|
|
"ping_hosts": [
|
|
|
|
|
{"name": "pbs", "ip": "10.10.10.3"}
|
|
|
|
|
]
|
|
|
|
|
},
|
|
|
|
|
"hosts": [
|
|
|
|
|
{
|
|
|
|
|
"name": "large1",
|
|
|
|
|
"ip": "10.10.10.2",
|
|
|
|
|
"prometheus_instance": "10.10.10.2:9100"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "compute-storage-01",
|
|
|
|
|
"ip": "10.10.10.4",
|
|
|
|
|
"prometheus_instance": "10.10.10.4:9100"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "micro1",
|
|
|
|
|
"ip": "10.10.10.8",
|
|
|
|
|
"prometheus_instance": "10.10.10.8:9100"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "monitor-02",
|
|
|
|
|
"ip": "10.10.10.9",
|
|
|
|
|
"prometheus_instance": "10.10.10.9:9100"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "compute-storage-gpu-01",
|
|
|
|
|
"ip": "10.10.10.10",
|
|
|
|
|
"prometheus_instance": "10.10.10.10:9100"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"name": "storage-01",
|
|
|
|
|
"ip": "10.10.10.11",
|
|
|
|
|
"prometheus_instance": "10.10.10.11:9100"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|