55 lines
2.2 KiB
PHP
55 lines
2.2 KiB
PHP
<?php
|
|
// WEVIA Supervisor v2 — every 5 min via cron
|
|
$log = "/var/log/wevia-supervisor.log";
|
|
$ts = date("Y-m-d H:i:s");
|
|
|
|
function master($msg) {
|
|
$ch = curl_init("https://weval-consulting.com/api/wevia-master-api.php");
|
|
curl_setopt_array($ch, [CURLOPT_RETURNTRANSFER=>1, CURLOPT_POST=>1,
|
|
CURLOPT_POSTFIELDS=>json_encode(["message"=>$msg]),
|
|
CURLOPT_HTTPHEADER=>["Content-Type: application/json"],
|
|
CURLOPT_TIMEOUT=>20, CURLOPT_SSL_VERIFYPEER=>0]);
|
|
$r = json_decode(curl_exec($ch), true);
|
|
return $r["content"] ?? $r["response"] ?? "ERR";
|
|
}
|
|
|
|
$r = [];
|
|
|
|
// 1. Reconciliation
|
|
$rc = master("reconciliation");
|
|
$r["reconcile"] = (strpos($rc,"153/153")!==false||strpos($rc,"WAVE")!==false) ? "OK" : substr($rc,0,40);
|
|
|
|
// 2. NonReg
|
|
$nrc = master("nonreg run");
|
|
$r["nonreg"] = substr($nrc, 0, 30);
|
|
|
|
// 3. L99
|
|
$nr = json_decode(@file_get_contents("/var/www/html/api/l99-state.json"), true);
|
|
$r["l99"] = ($nr["pass"]??0) . "/" . ($nr["total"]??0);
|
|
|
|
// 4. Infra
|
|
$r["docker"] = intval(trim(shell_exec("docker ps -q|wc -l")));
|
|
$r["disk"] = intval(trim(shell_exec("df / --output=pcent|tail -1|tr -d ' %'")));
|
|
$r["hubs"] = intval(trim(shell_exec("ls /var/www/html/*-hub.html 2>/dev/null|wc -l")));
|
|
|
|
// 5. Git auto-push
|
|
$dirty = intval(trim(shell_exec("cd /var/www/html && git status --porcelain|wc -l")));
|
|
$r["dirty"] = $dirty;
|
|
if ($dirty > 0) {
|
|
shell_exec("cd /var/www/html && git add -A && git commit -m 'supervisor-".date("Hi")."' 2>/dev/null");
|
|
shell_exec("cd /var/www/html && git push origin main 2>/dev/null && git push github main 2>/dev/null");
|
|
$r["pushed"] = true;
|
|
}
|
|
|
|
// 6. Auto-heal
|
|
$alerts = [];
|
|
if ($r["disk"] > 88) { shell_exec("find /tmp -name 'playwright*' -mmin +30 -exec rm -rf {} + 2>/dev/null"); $alerts[] = "DISK_CLEAN"; }
|
|
if ($r["docker"] < 15) { master("auto heal"); $alerts[] = "DOCKER_HEAL"; }
|
|
$r["alerts"] = $alerts ?: ["CLEAR"];
|
|
|
|
// Log + state
|
|
$line = "$ts | L99:{$r['l99']} | NR:{$r['nonreg']} | D:{$r['docker']} | disk:{$r['disk']}% | hubs:{$r['hubs']} | " . implode(",", $r["alerts"]);
|
|
file_put_contents($log, $line . "\n", FILE_APPEND);
|
|
file_put_contents("/var/www/html/api/supervisor-state.json", json_encode(["ts"=>$ts,"r"=>$r], JSON_PRETTY_PRINT));
|
|
echo $line;
|