Überblick — was der Bildschirm leistet
Infrastruktur ▸ Konnektivität und Traffic ▸ Traffic (/infra/traffic/net) ist eine schreibgeschützte Konsole, die den Netzwerk-E/A-Durchsatz jedes Servers (eingehende und ausgehende Bytes und Pakete) als je ein ECharts-Liniendiagramm pro Serverkarte darstellt.
Die Quelle ist die Alt-Tabelle server_traffic (≈1,6 Mio. Zeilen, Verbindung legacy_glory), die vom Alt-Collector check_tx.js befüllt wird. Diese Tabelle sammelt je Zeitfenster die Delta-Bytes und -Pakete für jeden Server × Richtung (eingehend/ausgehend), doch die alte stats-design-Oberfläche zeigte stets nur traffic-out aus server_status (ein einzelnes Delta ausgehender Pakete). Dieser Bildschirm legt als Erster den vollständigen Datensatz ein/aus × Bytes/Pakete offen.
Die drei Schwesterbildschirme (Port-Verbindungen, IP-Verbindungen, Traffic) teilen sich denselben
TrafficControllerundSessionQueryService, doch nur der Traffic-Reiter liest die Durchsatz-Zeitreihe ausserver_trafficstatt der Sitzungsmomentaufnahme (traffic_session_ct). Deshalb verwendet er ein Bereichsfenster (1h/6h/24h) anstelle des Timers (1/5/60 Min.), den die beiden anderen nutzen.
Wann Sie ihn verwenden
- Um Bandbreitenspitzen bzw. -anstiege auf einem bestimmten Server über die Zeit nachzuverfolgen (nächtliche Backup-Übertragungen, große Downloads, eingehender DDoS-Verkehr).
- Um den Charakter eines Servers an seinem Ein-zu-Aus-Verhältnis abzulesen (Webserver neigen zu ausgehend, Backup-Empfänger zu eingehend).
- Als erster Anlaufbildschirm für Knoten, deren ausgehende Pakete/Bytes plötzlich in die Höhe schnellen — bevor Sie in Sicherheit ▸ Bedrohungen oder in das IP-Untersuchungs-Pop-up einsteigen.
- Um über die Aktualitäts-KPI auf einen Blick veraltete (in der Erfassung nachhinkende) Server zu erkennen.
Aufbau
Kopfbereich (obere Leiste)
| Element | Beschreibung |
|---|---|
| Metrik-Umschalter | bytes | packets — färbt dieselben Daten auf Byte- bzw. Paketskala neu ein (ohne Serveranfrage) |
| Bereichsumschalter | 1h (60) | 6h (360) | 24h (1440) — Anzeigefenster in Minuten. Die Auswahl wird in localStorage gespeichert |
| Zeitstempel | Zeit des jüngsten Fensters (MAX aus server_traffic + Verschiebung der Anzeigezeitzone) |
| Aktualisieren | Sofortiger erneuter Abruf (unabhängig vom 30-Sekunden-Polling) |
| Vollbild | Blendet die obere Navigation aus und vergrößert das Kartenraster (ESC zum Verlassen) |
KPI-Leiste (Ablauf: ein · aus · Pakete · Verhältnis → Hotspot → Aktualität)
| KPI | Bedeutung |
|---|---|
| Eingehend gesamt | Summe der eingehenden Bytes am jüngsten Punkt jedes Servers |
| Ausgehend gesamt | Summe der ausgehenden Bytes am jüngsten Punkt jedes Servers |
| Pakete gesamt | Summe der letzten (ein+aus) Pakete jedes Servers · Einheit /window (nicht kumuliert) |
| Ein:Aus | out ÷ in (eine Nachkommastelle), dargestellt als 1 : x. —, wenn „ein“ 0 ist |
| Größter Verursacher | Server mit den höchsten aktuellsten ausgehenden Bytes (Hotspot) |
| Aktive Server | Anzahl der Server, deren letzter Punkt innerhalb von 15 Min. vor dem Fensterende liegt / total. Warnt (gelb), wenn der Wert unter der Gesamtzahl liegt |
Farblegende der Skala + Y-Achsenskala
Die Linien- bzw. Flächenfarbe codiert die Größenordnung des Werts (ECharts visualMap, stückweise). Überschreitet ein Wert einen Schwellenwert, ändert sich die Farbe — so erfassen Sie die Größenordnung über die Farbe.
| tone | bytes | packets |
|---|---|---|
| info | < 1MB |
< 1K |
| good | 1–10MB |
1–10K |
| warn | 10–100MB |
10–100K |
| crit | > 100MB |
> 100K |
- Die Richtung wird über die Linienform codiert: ausgehend = durchgezogene Linie + kräftigere Fläche, eingehend = gestrichelte Linie + helle Fläche. Zusätzlich unterscheidbar an den Pfeilen in der Kartenkopfzeile (↓ ein / ↑ aus) und am Tooltip.
- Umschalter für die Y-Achsenskala:
linear(Standard, Minimum auf 0 fixiert → ehrliche Fläche) |log(staucht KB–MB auf eine Achse, sodass ein- und ausgehend beide sichtbar bleiben). Die Auswahl wird inlocalStoragegespeichert.
Server-Traffic-Karten
Jede Karte = ein Server. Die Kopfzeile zeigt den Hostnamen sowie die aktuellen ein-/ausgehenden Bytes; der Rumpf ist ein 200 px hohes <metric-chart>-Liniendiagramm (ECharts, dynamischer Import).
- Neuanordnung per Drag-and-drop: Ordnen Sie die Karten über den Griff (⋮) neu an; die Reihenfolge wird unter
infr:order:traffic-netgespeichert. - Masonry-Layout + 12 Karten pro Seite.
- Feste Zeitachse: Jede Karte fixiert ihre X-Achse auf
win.since ~ win.until(ein gemeinsames Fenster). Server mit nachhinkender Erfassung werden ehrlich als Stummel am linken Rand gezeichnet — statt einer vorgetäuschten, aus wenigen Punkten über die volle Breite gestreckten Kurve.
Anwendung
- Bereich wählen —
1h, um Spitzen nachzugehen,24hfür Tagesmuster. - Metrik umschalten —
bytesfür die Bandbreitenlast,packetsfür den Charakter der Verbindungen bzw. PPS. - Logarithmische Achse — bei Servern mit großem Ein-/Aus-Gefälle (Web-Knoten, bei denen aus ≫ ein) hält
logbeide Kurven sichtbar. - Karten neu anordnen — ziehen Sie die Server, die Sie interessieren, nach oben (im Browser gespeichert).
- Einem Hotspot nachgehen — wenn Ihnen der KPI-Server
Topoder eine crit-Kurve (rot) auffällt, wechseln Sie zu Port-Verbindungen / IP-Verbindungen, um zu untersuchen, welche IP bzw. welcher Port dahintersteckt.
Der Tooltip zeigt eine
HH:MM-Kopfzeile sowie den Wert jeder Reihe (ein/aus). Selbst auf schmalen Karten blenden sich die Beschriftungen der Zeitachse automatisch aus, um Überlappungen zu vermeiden (hideOverlap).
Datenquellen
server_traffic (legacy_glory · schreibgeschützt)
| Spalte | Zweck |
|---|---|
server_name, server_index |
Serveridentität |
time_window_start |
Beginn des Erfassungsfensters (~300 s = 5 Min. Abstand) |
direction |
inbound | outbound |
delta_bytes_count |
Byte-Delta dieses Fensters |
delta_packet_count |
Paket-Delta dieses Fensters |
Die Quellabfrage (TrafficRepository::serverTraffic) nutzt Parameterbindung und durchsucht nur ein enges Fenster (keine fest verdrahteten Werte, keine Stringinterpolation):
SELECT server_name, server_index, time_window_start, direction,
delta_packet_count, delta_bytes_count
FROM server_traffic
WHERE time_window_start >= :since -- (jüngstes Fenster) − Bereich
ORDER BY time_window_start
LIMIT 6000;
Anker = MAX(time_window_start) (indizierter MAX → günstig). since = anchor − range minutes.
Normalisierung auf Minutenraster (Korrektur des Sägezahns)
Der Collector
check_tx.jsversieht eingehend und ausgehend innerhalb seiner Schleife mit getrenntennew Date()-Aufrufen, sodass die Werte vontime_window_startinnerhalb desselben 5-Minuten-Zyklus um 1–2 Sekunden auseinanderliegen (z. B.:02ein /:03aus). Eine Gruppierung nach exaktem Zeitstempel erfasst je Zeitpunkt nur eine der beiden Richtungen und lässt die andere auf 0 — das ergibt ein Sägezahndiagramm.
Korrektur: SessionQueryService::reshapeNet rundet die Zeitstempel in ein Minutenraster (round(ts/60)*60), sodass ein- und ausgehend zu einem einzigen Punkt verschmelzen. Das Fensterintervall (300 s) ist weit größer als das Raster (60 s), daher kollidieren benachbarte Fenster nie.
Verschiebung der Anzeigezeitzone
Da die Speicherzeit der Alt-Datenbank von der Anzeigezeit abweichen kann (beobachtet wurde ein Versatz von ~9 Std.), werden die Werte über OpsPolicy::trafficTzOffsetSec() ausschließlich für die Anzeige verschoben (Zeitstempel, Zeitachse, Zeitstempel der Reihen). Die SQL-Grenzen (min/max) werden NICHT verschoben — die Abfrage verwendet die rohe Alt-Zeit.
Cache · Polling
- Serverseitig
Cache::remember('infr:traffic:net:v1:<range>', 30, …)— 30 Sekunden Cache. - Das Frontend fragt automatisch alle 30 Sekunden ab (
/infra/traffic/net/live?range=<minutes>).
Zugriff
- Schreibgeschützter Bildschirm. Keine Schreibvorgänge, Sperrungen oder sonstigen destruktiven Aktionen.
- Da er zum Rollenbereich Infrastruktur gehört, öffnet er sich ab user_level 1 (demo=1); staff (5) und admin (10) haben selbstverständlich ebenfalls Zugriff.
- Die Route ist durch die Middleware
infr.authgeschützt (Sitzungsauthentifizierung erforderlich). - Die Zugangsdaten der Quelle stammen ausschließlich aus
config('database.connections.legacy_glory')(also aus.env) — im Controller bzw. Service sind keine Zugangsdaten fest verdrahtet.
Fehlerbehebung und FAQ
F. Ich sehe nur „Keine Verkehrsmessungen“.
Das bedeutet, dass server_traffic kein aktuelles Zeitfenster enthält. Prüfen Sie, ob der Collector check_tx.js läuft und die Verbindung legacy_glory gültig ist. Ist latestTrafficWindow() (MAX) null, bleiben die Karten leer und die KPIs zeigen 0.
F. Ein Server zeichnet nur einen kurzen Stummel am linken Rand.
Das ist beabsichtigt. Die Zeitachse ist auf ein gemeinsames Fenster fixiert, daher wird ein Server mit nachhinkender Erfassung ehrlich bis zu seiner letzten Beobachtung als Stummel am linken Rand gezeichnet. Er zählt außerdem in der KPI Active servers als inaktiv (sein letzter Punkt liegt außerhalb der 15 Min. vor dem Fensterende).
F. Die Kurve einer Richtung sieht aus wie ein Sägezahn.
Die Normalisierung auf Minutenraster behebt die meisten Fälle; sind jedoch die Erfassungsfenster selbst unregelmäßig, kann ein Rest-Sägezahn bleiben. Ein Wechsel auf die log-Achse glättet ihn.
F. Sind die Werte kumuliert?
Nein. delta_* = Zuwachs je Fenster (~5 Min.). Deshalb ist die KPI Total packets mit /window beschriftet. Es handelt sich nicht um kumulative Zähler.
F. Die Zeiten weichen um mehrere Stunden ab.
Die Anzeigezeitzone wird über die Einstellung traffic_tz_offset von OpsPolicy korrigiert (siehe Betriebsrichtlinie).
Verwandte Themen
- Port-Verbindungen — TCP-Zustandsverteilung je Port und Server + wichtigste Quell-IPs
- IP-Verbindungen — entfernte Gegenstellen-IPs je Server × Portstärke + IP-Detail-Pop-up
- Server (Last-Zeitreihe) — Zeitreihen zu Last/CPU/Arbeitsspeicher, dasselbe ECharts-
<metric-chart>-Muster - Zustand (Knotenzustand) — CPU-Ringe je Knoten + Dienstpunkte
- Betriebsrichtlinie — globale Einstellungen wie
traffic_tz_offsetund überwachte Ports
