20 lines
1.5 KiB
Python
20 lines
1.5 KiB
Python
#!/usr/bin/env python3
|
|
"""Classic host readings only; never runs Wrath maintenance SQL."""
|
|
import argparse,json,pathlib,shutil,subprocess,time,urllib.request
|
|
p=argparse.ArgumentParser();p.add_argument('--root',type=pathlib.Path,required=True);p.add_argument('--url',default='http://127.0.0.1:8787');a=p.parse_args()
|
|
v={}
|
|
for line in (a.root/'app-staging/.dev.vars').read_text().splitlines():
|
|
if '=' in line:
|
|
k,value=line.split('=',1);v[k]=value.strip().strip('"\'')
|
|
def cpu():
|
|
values=list(map(int,pathlib.Path('/proc/stat').read_text().splitlines()[0].split()[1:]));return sum(values[:8]),sum(values[3:5])
|
|
x=cpu();time.sleep(1);y=cpu()
|
|
m={l.split(':')[0]:int(l.split()[1])/1024 for l in pathlib.Path('/proc/meminfo').read_text().splitlines()}
|
|
model=False
|
|
try:
|
|
with urllib.request.urlopen(v['LLM_URL'].rstrip('/')+'/api/tags',timeout=5) as response:model=response.status==200
|
|
except Exception:pass
|
|
body=dict(host='ubuntu',at=time.time(),cpuPercent=max(0,min(100,100*(1-(y[1]-x[1])/max(1,y[0]-x[0])))),memoryTotalMB=m['MemTotal'],memoryAvailableMB=m['MemAvailable'],diskFreeGB=shutil.disk_usage(a.root).free/1024**3,modelAvailable=model,runtimeService=subprocess.check_output(['systemctl','--user','is-active','azerothai-classic-runtime'],text=True).strip(),maintenance='Classic telemetry active; Wrath maintenance disabled')
|
|
req=urllib.request.Request(a.url+'/api/operations',data=json.dumps(body).encode(),headers={'Content-Type':'application/json','Authorization':'Bearer '+v['AUTONOMY_TOKEN']})
|
|
with urllib.request.urlopen(req,timeout=15) as response:assert response.status==200
|