24 lines
1.5 KiB
Python
24 lines
1.5 KiB
Python
import json,os,subprocess,collections,datetime
|
|
base='/www/backup/txiaw-mysql-fix-20260831'
|
|
p=base+'/verification-result.json'
|
|
result={'time':datetime.datetime.now().isoformat(),'full_verification_saved':os.path.exists(p)}
|
|
if os.path.exists(p):
|
|
d=json.load(open(p));result['saved_time']=d['time'];result['mysql_status']=d['mysql_status'];result['burst_statuses']=d['burst_statuses'];result['recent_access_status_sample']=d['recent_access_status_sample']
|
|
vm=subprocess.check_output(['vmstat','1','3'],universal_newlines=True).splitlines()
|
|
rows=[r.split() for r in vm[-2:]]
|
|
result['cpu_sample']={'idle_pct':sum(int(r[14]) for r in rows)/len(rows),'io_wait_pct':sum(int(r[15]) for r in rows)/len(rows)}
|
|
result['uptime']=subprocess.check_output(['uptime'],universal_newlines=True).strip()
|
|
test=subprocess.run(['/www/server/nginx/sbin/nginx','-t'],stdout=subprocess.PIPE,stderr=subprocess.PIPE,universal_newlines=True,timeout=10)
|
|
result['nginx_config_ok']=test.returncode==0
|
|
result['index_record_saved']=os.path.exists(base+'/index-result.json')
|
|
result['cache_record_saved']=os.path.exists(base+'/cache-result.json')
|
|
result['backup_bytes']=os.path.getsize(base+'/gxl_news-before.sql.gz')
|
|
lines=subprocess.check_output(['tail','-n','1000','/www/wwwlogs/www.txiaw.com.log']).decode('utf-8','replace').splitlines()
|
|
c=collections.Counter()
|
|
for l in lines:
|
|
a=l.split('"')
|
|
if len(a)>2 and a[2].split():c[a[2].split()[0]]+=1
|
|
result['last_1000_statuses']=dict(c)
|
|
json.dump(result,open(base+'/final-summary.json','w'),indent=2)
|
|
print(json.dumps(result),flush=True)
|