jilo-web/app/pages/status.php

69 lines
2.5 KiB
PHP
Raw Normal View History

2024-10-19 13:09:16 +00:00
<?php
2024-11-26 14:22:27 +00:00
/**
2024-11-29 16:08:56 +00:00
* Jilo components status checks
2024-11-26 14:22:27 +00:00
*
* This page ("status") checks the status of various Jilo platform components
* by fetching data from agents and determining their availability.
* It generates output for each platform and agent.
*/
2024-10-19 13:09:16 +00:00
2024-10-22 15:03:34 +00:00
require '../app/classes/agent.php';
$agentObject = new Agent($dbWeb);
2024-10-19 13:09:16 +00:00
include '../app/templates/status-server.php';
2024-11-26 14:22:27 +00:00
// loop through all platforms to check their agents
2024-10-22 15:03:34 +00:00
foreach ($platformsAll as $platform) {
2024-12-04 14:18:15 +00:00
// check if we can connect to the jilo database
$response = connectDB($config, 'jilo', $platform['jilo_database'], $platform['id']);
if ($response['error'] !== null) {
$jilo_database_status = '<span class="text-danger">' . htmlspecialchars($response['error']) . '</span>';
} else {
$jilo_database_status = '<span class="text-success">OK</span>';
}
2024-10-22 15:03:34 +00:00
include '../app/templates/status-platform.php';
2024-11-26 14:22:27 +00:00
// fetch agent details for the current platform
2024-10-22 15:03:34 +00:00
$agentDetails = $agentObject->getAgentDetails($platform['id']);
foreach ($agentDetails as $agent) {
$agent_url = parse_url($agent['url']);
$agent_protocol = isset($agent_url['scheme']) ? $agent_url['scheme']: '';
$agent_host = isset($agent_url['host']) ? $agent_url['host']: '';
$agent_port = isset($agent_url['port']) ? $agent_url['port']: '';
// we get agent data to check availability
$agent_response = $agentObject->fetchAgent($agent['id'], true);
$agent_data = json_decode($agent_response);
2024-11-26 14:22:27 +00:00
// determine agent availability based on response data
if (json_last_error() === JSON_ERROR_NONE) {
$agent_availability = '<span class="text-warning">unknown</span>';
foreach ($agent_data as $key => $value) {
if ($key === 'error') {
$agent_availability = '<span class="text-danger">' . htmlspecialchars($value) . '</span>';
break;
}
if (preg_match('/_state$/', $key)) {
if ($value === 'error') {
$agent_availability = '<span class="text-danger">not running</span>';
break;
}
if ($value === 'running') {
$agent_availability = '<span class="text-success">running</span>';
break;
}
}
}
} else {
$agent_availability = 'json error';
}
2024-10-22 15:03:34 +00:00
include '../app/templates/status-agent.php';
}
}
2024-10-19 13:09:16 +00:00
?>