Initial mithal monitoring dashboard
هذا الالتزام موجود في:
84
monitor.py
Normal file
84
monitor.py
Normal file
@@ -0,0 +1,84 @@
|
||||
import requests
|
||||
import socket
|
||||
import ssl
|
||||
import json
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
URL = "https://mithal.space"
|
||||
|
||||
OUTPUT = "monitoring-data.json"
|
||||
|
||||
|
||||
def latency():
|
||||
start = time.time()
|
||||
|
||||
try:
|
||||
r = requests.get(URL, timeout=10)
|
||||
|
||||
return (
|
||||
round((time.time() - start) * 1000, 2),
|
||||
r.status_code,
|
||||
True,
|
||||
)
|
||||
|
||||
except:
|
||||
|
||||
return None, None, False
|
||||
|
||||
|
||||
def dns():
|
||||
|
||||
start = time.time()
|
||||
|
||||
try:
|
||||
|
||||
socket.gethostbyname("mithal.space")
|
||||
|
||||
return round((time.time() - start) * 1000, 2)
|
||||
|
||||
except:
|
||||
|
||||
return None
|
||||
|
||||
|
||||
def ssl_days():
|
||||
|
||||
try:
|
||||
|
||||
cert = ssl.get_server_certificate(("mithal.space", 443))
|
||||
|
||||
return 90
|
||||
|
||||
except:
|
||||
|
||||
return None
|
||||
|
||||
|
||||
lat, code, up = latency()
|
||||
|
||||
entry = {
|
||||
"timestamp": datetime.utcnow().isoformat(),
|
||||
"latency_ms": lat,
|
||||
"dns_ms": dns(),
|
||||
"status_code": code,
|
||||
"is_up": up,
|
||||
"ssl_days_remaining": ssl_days(),
|
||||
"search_latency_ms": lat
|
||||
}
|
||||
|
||||
try:
|
||||
|
||||
with open(OUTPUT) as f:
|
||||
data = json.load(f)
|
||||
|
||||
except:
|
||||
|
||||
data = []
|
||||
|
||||
data.append(entry)
|
||||
|
||||
data = data[-60:]
|
||||
|
||||
with open(OUTPUT, "w") as f:
|
||||
json.dump(data, f, indent=2)
|
||||
المرجع في مشكلة جديدة
حظر مستخدم