fix: NaN-Metriken, Chart-Zeitachse und erweiterte Gerätedetails
Backend: - AgentGrpcService: JSONB-Serialisierung auf camelCase umgestellt (JsonSerializer.SerializeToElement mit CamelCase-Options) → behebt NaN bei CPU, RAM, Disk-Anzeige in der Detailseite - AgentGrpcService: Result-JSONB explizit camelCase (exitCode, stdout, stderr, success) → behebt fehlende Befehlsergebnisse im Frontend - AgentGrpcService: SignalR-Payload enthält nun Disks und NetworkInterfaces - Program.cs: SignalR JsonProtocol auf CamelCase konfiguriert Agent (Go): - Heartbeat sendet nun NetworkInterfaces aus dem Collector → Netzwerkschnittstellen werden im Frontend angezeigt Frontend: - useAgentSignalR: onLiveMetrics-Callback für direktes Live-Update (kein API-Roundtrip mehr, < 50ms Latenz) - AgentDetailPage komplett überarbeitet: - Geräteinformationen-Karte (IP, MAC, OS, Version, Enrolled-At, Last-Seen) - Live-Indikator auf MetricCards (grüner Puls-Punkt bei SignalR-Verbindung) - NaN-Schutz für alle berechneten Werte (safePercent, memPercent) - Chart-Reihenfolge umgekehrt: älteste links, neueste rechts - X-Achse: adaptives Intervall verhindert Label-Überlappung - Netzwerkschnittstellen-Tabelle mit Traffic (RX/TX) - Festplatten mit Fortschrittsbalken + Filesystem-Typ - Strg+Enter für schnelle Befehlsausführung Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -208,6 +208,15 @@ func doHeartbeat(ctx context.Context, client *connection.GrpcClient, cfg *config
|
||||
Filesystem: d.Filesystem,
|
||||
})
|
||||
}
|
||||
for _, n := range metrics.Networks {
|
||||
req.Metrics.NetworkInterfaces = append(req.Metrics.NetworkInterfaces, &pb.NetworkInterfaceInfo{
|
||||
Name: n.Name,
|
||||
IpAddress: n.IPAddress,
|
||||
MacAddress: n.MAC,
|
||||
BytesSent: int64(n.BytesSent),
|
||||
BytesRecv: int64(n.BytesRecv),
|
||||
})
|
||||
}
|
||||
|
||||
resp, err := client.Client.Heartbeat(ctx, req)
|
||||
if err != nil {
|
||||
|
||||
Reference in New Issue
Block a user