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;