40 lines
947 B
Python
40 lines
947 B
Python
#!/usr/bin/env python3
|
|
import json
|
|
import os
|
|
import time
|
|
import subprocess
|
|
from pathlib import Path
|
|
|
|
# Allegro Failover Monitor
|
|
# Health-checking the VPS fleet for Timmy's resilience.
|
|
|
|
FLEET = {
|
|
"ezra": "143.198.27.163", # Placeholder
|
|
"bezalel": "167.99.126.228"
|
|
}
|
|
|
|
STATUS_FILE = Path.home() / ".timmy" / "failover_status.json"
|
|
|
|
def check_health(host):
|
|
try:
|
|
subprocess.check_call(["ping", "-c", "1", "-W", "2", host], stdout=subprocess.DEVNULL)
|
|
return "ONLINE"
|
|
except:
|
|
return "OFFLINE"
|
|
|
|
def main():
|
|
print("--- Allegro Failover Monitor ---")
|
|
status = {}
|
|
for name, host in FLEET.items():
|
|
status[name] = check_health(host)
|
|
print(f"{name.upper()}: {status[name]}")
|
|
|
|
STATUS_FILE.parent.mkdir(parents=True, exist_ok=True)
|
|
STATUS_FILE.write_text(json.dumps({
|
|
"timestamp": time.time(),
|
|
"fleet": status
|
|
}, indent=2))
|
|
|
|
if __name__ == "__main__":
|
|
main()
|