feat: Implement network metrics integration and UI updates for real-time data display

This commit is contained in:
Juergen Kunz
2025-06-20 10:56:53 +00:00
parent b81bda6ce8
commit 92fde9d0d7
5 changed files with 377 additions and 48 deletions

View File

@ -944,4 +944,73 @@ Fixed the UI metrics display to show accurate CPU and memory data from SmartMetr
### Result
- CPU now shows accurate usage percentage
- Memory shows percentage of actual constraints (Docker/system/V8 limits)
- Better monitoring for containerized environments
- Better monitoring for containerized environments
## Network UI Implementation (2025-06-20) - COMPLETED
### Overview
Revamped the Network UI to display real network data from SmartProxy instead of mock data.
### Architecture
1. **MetricsManager Integration:**
- Already integrates with SmartProxy via `dcRouter.smartProxy.getStats()`
- Extended with `getNetworkStats()` method to expose unused metrics:
- `getConnectionsByIP()` - Connection counts by IP address
- `getThroughputRate()` - Real-time bandwidth rates (bytes/second)
- `getTopIPs()` - Top connecting IPs sorted by connection count
- Note: SmartProxy base interface doesn't include all methods, manual implementation required
2. **Existing Infrastructure Leveraged:**
- `getActiveConnections` endpoint already exists in security.handler.ts
- Enhanced to include real SmartProxy data via MetricsManager
- IConnectionInfo interface already supports network data structures
3. **State Management:**
- Added `INetworkState` interface following existing patterns
- Created `networkStatePart` with connections, throughput, and IP data
- Integrated with existing auto-refresh mechanism
4. **UI Changes (Minimal):**
- Removed `generateMockData()` method and all mock generation
- Connected to real `networkStatePart` state
- Added `renderTopIPs()` section to display top connected IPs
- Updated traffic chart to show real request data
- Kept all existing UI components (DeesTable, DeesChartArea)
### Implementation Details
1. **Data Transformation:**
- Converts IConnectionInfo[] to INetworkRequest[] for table display
- Calculates traffic buckets based on selected time range
- Maps connection data to chart-compatible format
2. **Real Metrics Displayed:**
- Active connections count (from server stats)
- Requests per second (calculated from recent connections)
- Throughput rates (currently showing 0 until SmartProxy exposes rates)
- Top IPs with connection counts and percentages
3. **TypeScript Fixes:**
- SmartProxy methods like `getThroughputRate()` not in base interface
- Implemented manual fallbacks for missing methods
- Fixed `publicIpv4` → `publicIp` property name
### Result
- Network view now shows real connection activity
- Auto-refreshes with other stats every second
- Displays actual IPs and connection counts
- No more mock/demo data
- Minimal code changes (streamlined approach)
### Throughput Data Fix (2025-06-20)
The throughput was showing 0 because:
1. MetricsManager was hardcoding throughputRate to 0, assuming the method didn't exist
2. SmartProxy's `getStats()` returns `IProxyStats` interface, but the actual object (`MetricsCollector`) implements `IProxyStatsExtended`
3. `getThroughputRate()` only exists in the extended interface
**Solution implemented:**
1. Updated MetricsManager to check if methods exist at runtime and call them
2. Added property name mapping (`bytesInPerSec` → `bytesInPerSecond`)
3. Created new `getNetworkStats` endpoint in security.handler.ts
4. Updated frontend to call the new endpoint for complete network metrics
The throughput data now flows correctly from SmartProxy → MetricsManager → API → UI.