import React, { useState, useEffect } from 'react'; const ServerMonitoring = () => { const [servers, setServers] = useState([]); const [monitoringData, setMonitoringData] = useState({}); const [autoRefresh, setAutoRefresh] = useState(true); useEffect(() => { loadServers(); }, []); useEffect(() => { if (autoRefresh) { const interval = setInterval(() => { servers.forEach(server => { checkServerStatus(server); }); }, 30000); return () => clearInterval(interval); } }, [autoRefresh, servers]); const loadServers = async () => { if (window.electronAPI) { const result = await window.electronAPI.loadServers(); if (result.success) { setServers(result.servers); result.servers.forEach(server => checkServerStatus(server)); } } }; const checkServerStatus = async (server) => { if (!window.electronAPI) return; // Ping проверка const pingResult = await window.electronAPI.pingServer(server); // SNMP мониторинг (если доступен) let snmpData = null; try { const snmpResult = await window.electronAPI.getSnmpData(server, 'public'); if (snmpResult.success) snmpData = snmpResult.data; } catch (error) {} // SSH мониторинг (если есть учетные данные) let sshStats = null; if (server.username && server.password) { try { const sshResult = await window.electronAPI.getSshStats(server); if (sshResult.success) sshStats = sshResult.stats; } catch (error) {} } setMonitoringData(prev => ({ ...prev, [server.id]: { ping: pingResult, snmp: snmpData, ssh: sshStats, lastUpdate: new Date() } })); }; const getStatusColor = (online) => { return online ? 'bg-green-500' : 'bg-red-500'; }; const getUsageColor = (percent) => { if (percent < 70) return 'bg-green-500'; if (percent < 90) return 'bg-yellow-500'; return 'bg-red-500'; }; return (
Реальное время состояние серверов
{server.ip}
Добавьте серверы в разделе "Серверы"