[ 'conferences' => ['label' => 'Current conferences', 'link' => 'conferences'], 'participants' => ['label' => 'Current participants', 'link' => 'participants'], 'total_conferences_created' => ['label' => 'Total conferences created'], 'total_participants' => ['label' => 'Total participants'] ], 'Bridge stats' => [ 'bridge_selector.bridge_count' => ['label' => 'Bridge count'], 'bridge_selector.operational_bridge_count' => ['label' => 'Operational bridges'], 'bridge_selector.in_shutdown_bridge_count' => ['label' => 'Bridges in shutdown'] ], 'Jibri stats' => [ 'jibri_detector.count' => ['label' => 'Jibri count'], 'jibri_detector.available' => ['label' => 'Jibri idle'], 'jibri.live_streaming_active' => ['label' => 'Jibri active streaming'], 'jibri.recording_active' => ['label' => 'Jibri active recording'], ], 'System stats' => [ 'threads' => ['label' => 'Threads'], 'stress_level' => ['label' => 'Stress level'], 'version' => ['label' => 'Version'] ] ]; // Get all hosts for this platform $hosts = $hostObject->getHostDetails($platform_id); $hostsData = []; // For each host, get its agents and their metrics foreach ($hosts as $host) { $hostData = [ 'id' => $host['id'], 'name' => $host['name'] ?: $host['address'], 'address' => $host['address'], 'agents' => [] ]; // Get agents for this host $hostAgents = $agentObject->getAgentDetails($host['id']); foreach ($hostAgents as $agent) { $agentData = [ 'id' => $agent['id'], 'type' => $agent['agent_description'], 'name' => strtoupper($agent['agent_description']), 'metrics' => [], 'timestamp' => null ]; // Fetch all metrics for this agent foreach ($metrics as $section => $section_metrics) { foreach ($section_metrics as $metric => $metricConfig) { // Get latest data $latestData = $agentObject->getLatestData($host['id'], $agent['agent_description'], $metric); if ($latestData !== null) { // Get the previous record $previousData = $agentObject->getPreviousRecord( $host['id'], $agent['agent_description'], $metric, $latestData['timestamp'] ); $agentData['metrics'][$section][$metric] = [ 'latest' => [ 'value' => $latestData['value'], 'timestamp' => $latestData['timestamp'] ], 'previous' => $previousData, 'label' => $metricConfig['label'], 'link' => isset($metricConfig['link']) ? $metricConfig['link'] : null ]; // Use the most recent timestamp for the agent if ($agentData['timestamp'] === null || strtotime($latestData['timestamp']) > strtotime($agentData['timestamp'])) { $agentData['timestamp'] = $latestData['timestamp']; } } } } if (!empty($agentData['metrics'])) { $hostData['agents'][] = $agentData; } } if (!empty($hostData['agents'])) { $hostsData[] = $hostData; } } // Get any new messages include '../app/includes/messages.php'; include '../app/includes/messages-show.php'; // Load the template include '../app/templates/latest.php'; ?>