import React, { useState } from 'react'; import { useMonitoring } from '../hooks/useMonitoring'; import { logger } from '../utils/logger'; const SystemMonitor: React.FC = () => { const { metrics, performanceMetrics } = useMonitoring(); const [showDetails, setShowDetails] = useState(false); const [logStats] = useState(() => logger.getLogStats()); const getStatusColor = (status: string) => { switch (status) { case 'connected': return 'text-green-600'; case 'connecting': return 'text-yellow-600'; case 'disconnected': return 'text-red-600'; default: return 'text-gray-600'; } }; const getQualityColor = (score: number) => { if (score >= 90) return 'text-green-600'; if (score >= 70) return 'text-yellow-600'; return 'text-red-600'; }; return (

시스템 모니터링

{/* 메모리 사용량 */}
{metrics.memoryUsage}%
메모리
{/* 네트워크 지연 */}
{metrics.networkLatency}ms
네트워크
{/* WebSocket 상태 */}
{metrics.websocketStatus === 'connected' ? '연결됨' : metrics.websocketStatus === 'connecting' ? '연결중' : '끊어짐'}
WebSocket
{/* 데이터 품질 */}
{metrics.dataQuality.qualityScore}%
데이터 품질
{showDetails && (
{/* 센서 상태 */}

센서 상태

전체: {metrics.sensorStatus.totalSensors}
활성: {metrics.sensorStatus.activeSensors}
비활성: {metrics.sensorStatus.inactiveSensors}
{/* 성능 메트릭 */}

성능 메트릭

API 응답: {performanceMetrics.apiCallTime}ms
렌더링: {performanceMetrics.componentRenderTime}ms
처리: {performanceMetrics.dataProcessingTime}ms
{/* 로그 통계 */}

로그 통계

전체: {logStats.total}
Debug: {logStats.byLevel.debug}
Info: {logStats.byLevel.info}
Warn: {logStats.byLevel.warn}
Error: {logStats.byLevel.error}
{/* 데이터 품질 상세 */}

데이터 품질 상세

전체 레코드: {metrics.dataQuality.totalRecords}
유효 레코드: {metrics.dataQuality.validRecords}
무효 레코드: {metrics.dataQuality.invalidRecords}
)}
); }; export default SystemMonitor;