الملفات
2026-07-29 20:39:34 +00:00

143 أسطر
2.3 KiB
Python

import requests
import socket
import ssl
import time
import csv
import os
from datetime import datetime
HOST = "mithal.space"
URL = f"https://{HOST}"
SEARCH_URL = f"{URL}/?q=test"
CSV_FILE = "metrics.csv"
def check_latency():
start = time.time()
response = requests.get(URL, timeout=10)
latency = round((time.time() - start) * 1000, 2)
return latency, response.status_code
def check_dns():
start = time.time()
socket.gethostbyname(HOST)
dns_time = round((time.time() - start) * 1000, 2)
return dns_time
def check_ssl():
context = ssl.create_default_context()
with context.wrap_socket(
socket.socket(),
server_hostname=HOST
) as s:
s.settimeout(10)
s.connect((HOST, 443))
cert = s.getpeercert()
expire = cert["notAfter"]
expire_date = datetime.strptime(
expire,
"%b %d %H:%M:%S %Y %Z"
)
remaining = (expire_date - datetime.utcnow()).days
return expire_date.strftime("%Y-%m-%d"), remaining
def check_search():
start = time.time()
requests.get(SEARCH_URL, timeout=10)
search_latency = round(
(time.time() - start) * 1000,
2
)
return search_latency
def save_csv(data):
file_exists = os.path.isfile(CSV_FILE)
with open(CSV_FILE, "a", newline="") as file:
writer = csv.writer(file)
if not file_exists:
writer.writerow([
"Timestamp",
"Latency(ms)",
"Status",
"DNS(ms)",
"SSL Expiry",
"Days Left",
"Search(ms)"
])
writer.writerow(data)
def monitor():
while True:
try:
latency, status = check_latency()
dns = check_dns()
ssl_date, ssl_days = check_ssl()
search = check_search()
now = datetime.now().strftime("%Y-%m-%d %H:%M:%S")
row = [
now,
latency,
status,
dns,
ssl_date,
ssl_days,
search
]
save_csv(row)
print(row)
except Exception as e:
print("Monitoring Error:", e)
print("Waiting 60 seconds...\n")
time.sleep(60)
if __name__ == "__main__":
monitor()