
Ich möchte die Netzwerkauslastung meines Debian 9-Servers analysieren, um mögliche Netzwerküberlastungen zu erkennen.
Die wichtigsten Kennzahlen, die ich analysieren muss, sind:
- CPS (Verbindungen pro Sekunde)
- Durchsatz
Gibt es eine Möglichkeit, diese Metriken innerhalb von Linux abzurufen?
Ich dachte, dass die CPS-Metrik irgendwie über Conntrack-Verbindungsereignisse abgerufen werden könnte, NEW
bin mir aber nicht sicher, ob das der beste Weg ist.
Entschuldigen Sie, wenn das offensichtlich ist.
PS: Dieser Server verarbeitet nicht nur den lokalen Datenverkehr, er leitet auch viel Datenverkehr weiter.
Antwort1
Ich denke, es würde ausreichen, den Ursprung dieser Metriken anhand der nativen Linux-API zu beschreiben.
Durchsatz
Übrigens, dieDurchsatzMetrik im Allgemeinen ist etwas, dasexternin Bezug auf das Testobjekt (OS Linux, von dem Sie sprechen). D. h. grob gesagt haben wir zwei Hosts (z. B. Client und Server) und ein Testobjekt dazwischen. Wir leiten den Netzwerkverkehr zwischen Client und Server weiter und zeichnen den (Grenz-)Durchsatz des Testobjekts auf (z. B. mitiperf).
Aber innerhalb von OS Linux können wir den Durchsatz einfach nur pro Schnittstelle messen.
Sie können also einfach beobachten/proc/net/dev
und berechnen Sie dieDelta von Bytes pro Sekunde:
sh-tst# cat /proc/net/dev
Inter-| Receive | Transmit
face |bytes packets errs drop fifo frame compressed multicast|bytes packets errs drop fifo colls carrier compressed
lo: 87016202 715723 0 0 0 0 0 0 87016202 715723 0 0 0 0 0 0
eth3: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth2: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
eth1: 246415305 2899662 0 132906 0 0 0 230 5466117 19016 0 0 0 0 0 0
eth0: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
CPS
Dasselbe gilt für die CPS-Metrik. Im Grunde handelt es sich dabei um eine externe Messung. Aber innerhalb Ihres Linux-Systems können Sie versuchen, sie auf der Grundlage von Folgendem zu berechnen /proc/net/stat/ip_conntrack
:
sh-tst# cat /proc/net/stat/ip_conntrack
entries searched found new invalid ignore delete delete_list insert insert_failed drop early_drop icmp_error expect_new expect_create expect_delete search_restart
000000f8 00001742 0003142f 0001e85a 00000079 00021333 0001e6cf 00003a3d 00003bc5 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00002389 0005f1a0 0003b6f3 00000085 0004286f 0003b59e 00003cea 00003e3f 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 000002c0 00037a77 00000714 00000000 000382cb 00000825 00000724 00000616 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
000000f8 00000225 00026cf9 00000271 00000000 00026e48 00000348 000002bd 000001e6 00000000 00000000 00000000 00000000 00000000 00000000 00000000 00000000
Auslnstat(8)
Mann:
/proc/net/stat/ip_conntrack, /proc/net/stat/nf_conntrack Conntrack-bezogene Zähler. ip_conntrack dient nur der Abwärtskompatibilität mit älterem Benutzerbereich und zeigt dieselben Daten wie nf_conntrack.
...
neu Anzahl der Conntrack-Einträge hinzugefügt, die vorher nicht erwartet wurden.
In der Linux-Verbindungsverfolgung:
NEU - bedeutet, dass das Paket eine neue Verbindung gestartet hat oder anderweitig mit einer Verbindung verknüpft ist, die keine Pakete in beide Richtungen gesehen hat, und
Sie wollen also berechnenDelta new
pro Sekunde.
Mehr lesen:
Antwort2
Der mit sysstat mitgelieferte Befehl sar erledigt beides.
So überwachen Sie Verbindungen pro Sekunde: sar -n TCP 1
active/s sind die ausgehenden TCP-Verbindungen passive/s sind die eingehenden TCP-Verbindungen
für UDP sar -n UDP 1
Um den Netzwerkdurchsatz anzuzeigen, geben Sie sar -n DEV ein (optional können Sie eine 1 hinzufügen, um den aktuellen Wert pro Sekunde zu überwachen)