File size: 1,875 Bytes
383cb38 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | #!/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()
|