annator-command-center / scripts /production /monitor_services.py
techprotrade's picture
Deploy ATOM FastAPI command center runtime (part 6)
383cb38 verified
Raw
History Blame Contribute Delete
1.88 kB
#!/usr/bin/env python3
"""
Simple Service Monitoring Script
Checks health endpoints and logs status.
Usage:
python monitor_services.py
"""
from datetime import datetime
import json
import time
import requests
BASE_URL = "http://localhost:5058"
ENDPOINTS = [
"/healthz",
"/api/services/status",
"/api/auth/oauth-status"
]
def check_endpoint(endpoint):
"""Check a single endpoint"""
try:
start = time.time()
response = requests.get(f"{BASE_URL}{endpoint}", timeout=5)
response_time = (time.time() - start) * 1000
return {
"endpoint": endpoint,
"status_code": response.status_code,
"response_time": response_time,
"success": response.status_code == 200,
"timestamp": datetime.now().isoformat()
}
except Exception as e:
return {
"endpoint": endpoint,
"status_code": None,
"response_time": None,
"success": False,
"error": str(e),
"timestamp": datetime.now().isoformat()
}
def main():
"""Main monitoring function"""
print("🔍 Atom AI Assistant Service Monitor")
print("=" * 40)
results = []
for endpoint in ENDPOINTS:
result = check_endpoint(endpoint)
results.append(result)
if result["success"]:
print(f"✅ {endpoint}: {result['response_time']:.1f}ms")
else:
print(f"❌ {endpoint}: {result.get('error', 'Unknown error')}")
# Save results
with open("monitoring_results.json", "w") as f:
json.dump({
"timestamp": datetime.now().isoformat(),
"results": results
}, f, indent=2)
print(f"📊 Monitoring completed: {sum(1 for r in results if r['success'])}/{len(results)} endpoints OK")
if __name__ == "__main__":
main()