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)