Überwachung der verfügbaren Internetbandbreite

Hallo zusammen,

ich möchte gern die verfügbare Internetbandbreite überwachen, also nicht das as derzeit genutzt wird (das kann ich ja aus den Interfacestatistiken der Firewall/Router auslesen), sondern das was an Bandbreite zur Verfügung steht (quasi ein Speedtest).

Hat jemand schon mal eine Check für sowas gebaut oder eine gute Idee wie man das umsetzen könnte?

Grüße
Daniel

Hi @dpa,
da gibt es ein Plugin für, dass die Speedtest-cli verwendet (Speedtest.net). Ich habe mir das damals mal Testweise eingerichtet und bis jetzt noch keine Probleme damit bekommen.

Hier geht’s zum Plugin: CheckMK-plugin/speedtest at master · jas31085/CheckMK-plugin · GitHub

Wichtig! Du musst das Paket speedtest-cli installieren, sonst funktioniert das Plugin nicht. Außerdem stelle sicher, dass das Plugin nicht minütlich ausgeführt wird! Das kann sonst ganz schnell nach hinten losgehen :wink: . In meinem Setup prüfe ich jede halbe Stunde und finde, dass dies auch ausreicht.

Das Plugin muss hier installiert/abgelegt werden: /usr/lib/check_mk_agent/plugins

Hier gibt’s noch einen Screenshot wie es dann aussieht, wenn man es benutzt. Man bekommt einen Performance-Graphen für den Download, Ping und Upload.

Vielleicht gibt es ja noch bessere Lösungen, aber ich empfinde diese als angenehm und pflegeleicht.

5 Likes

Ahh sehr gut, so in der Art hab ich mir das vorgestellt.

:smiley: Ja ich denke 1x pro Stunde sollte ausreichen.

Vielen Dank, werd ich morgen testen und berichten.

1 Like

Cool Sache - danke! :slight_smile:

Edit:
Ok hab doch zwei Fragen:

  1. Kann man festlegen, dass er immer ein und denselben Server prüft? Hab im Script --server xxxx eingefügt, das wird aber ignoriert. Komischerweise haben meine Linux Systeme in meinem Netzwerk einen miesen Upload - bis auf einen Server.

  2. Unter “Normal check interval for service checks” hab ich eingefügt, dass er das stündlich machen soll - aber er macht es weiterhin minütlich - muss man das woanders konfigurieren?

Greetz
Ovrld

Das Plugin nutzt die speedtest-cli. Die speedtest-cli wählt automatisch (based on ping) einen Speedtest Server aus. Das lässt sich ganz einfach nachvollziehen, wenn man die speedtest-cli von Hand ausführt. Anbei ein Example Output:

Retrieving speedtest.net configuration…
Testing from Hetzner Online GmbH (XXX.XXX.XXX.XXX)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by Jakob Rzymann (Kassel) [1.64 km]: 2.612 ms
Testing download speed…
Download: 489.11 Mbit/s
Testing upload speed…
Upload: 4.17 Mbit/s

Du testest immer den Server auf dem das Plugin liegt und ausgeführt wird.

Und zur zweiten Frage:

Du musst das beim Checkmk Agenten konfigurieren und nicht auf dem Checkmk Server. Ich habs mir in meinem Fall einfach gemacht und war zu faul die Konfigdatei zu schreiben. Du kannst mithilfe von Ordnern den Check Intervall festlegen. (Ordnername in Sekunden = Intervall) Bedeutet im Klartext. Das Speedtest Plugin legst du wie folgt ab um alle 30min zu prüfen:
/usr/lib/check_mk_agent/plugins/1800/speedtest

Sobald das Skript dann in dem Ordner liegt wird es nur noch alle 1800 Sekunden ausgeführt (30min). Danach ist keine weitere Konfiguration auf dem Checkmk Server notwendig. Natürlich kann man das auch in “schön” in der Config machen.

@Norm
Genau - man kann aber die zu prüfenden Server von Hand auswählen. Hab für Berlin z.B. eine Hand voll Server und nur einer davon gibt mir korrekte Werte beim Upload aus. Ich muss mal gucken wo da das Problem ist (nutze Speedtest-Cli in einigen anderen Scripts seit Jahren).

Ich seh gerade, dass bei dir derselbe “Fehler” ist. Dein Upload ist sicherlich größer als 4 MBit :wink: Auch bei mir dasselbe Problem:

Retrieving speedtest.net configuration…
Testing from Provider (xx.xx.xx.xx)…
Retrieving speedtest.net server list…
Selecting best server based on ping…
Hosted by DNS:NET Internet Service GmbH (Berlin) [2.20 km]: 1.02 ms
Testing download speed…
Download: 981.48 Mbit/s
Testing upload speed…
Upload: 4.14 Mbit/s

Der Upload sollte aber auch um die 1 GBit sein.

Hier z.B. mit einem Server wo der Upload korrekt ermittelt wird:

root@nms:/home/nutzer# speedtest-cli --server 28622
Retrieving speedtest.net configuration…
Testing from Provider (xx.xx.xx.xx)…
Retrieving speedtest.net server list…
Retrieving information for the selected server…
Hosted by Consultix 10G (Berlin) [2.20 km]: 2.718 ms
Testing download speed…
Download: 993.94 Mbit/s
Testing upload speed…
Upload: 979.88 Mbit/s

1 Like

@Overlord

Da hast du recht. Ich habe es mir mal angeguckt. Es ist ein Bug. Der Bug wurde bereits gefixt aber das APT Package wurde noch nicht geupdated. → Bug #1828929 “upload speed is reported wrong” : Bugs : speedtest-cli package : Ubuntu
Somit ist der Bugfix noch nicht da, wenn man sich die Speedtest-cli per APT installiert hat.

Ich habe mir die Speedtest-cli vom Github Repo geladen und manuell installiert. Das ganze geht wohl auch per pip install speedtest-cli

Hier gibt’s auch ein Tutorial zum manuell installieren → https://www.howtoforge.com/tutorial/check-internet-speed-with-speedtest-cli-on-ubuntu/

Damit klappt jetzt auch der Upload :sweat_smile:

2 Likes

Hallo

Wäre es auch möglich den Check am Satelite auszuführen ?

Wir haben einen Master Server und einige Sateliten.
und möchte den Speedtest gerne am Sateliten ausführen.

mfg

Hallo @blacktux88,

der Check läuft als local Check auf irgendeinem Host den du mit Checkmk überwachst. Das kann der Checkmk Server selber sein (wird ja im normalfall ebenfalls als Client mit eingebunden) oder auch irgendein anderes System.
Damit kannst Du das auch auf einem Satelite-System laufen lassen.

Gruß
Daniel

Spitze , danke dir

Agent habe ich installiert und das Skript abgelegt

Einmal steht das man es unter

/usr/lib/check_mk_agent/plugins Kopieren muss und wo anders steht wider dass es unter
/usr/lib/check_mk_agent/local kopiert werden soll.

Ich bekomme noch einen Fehler.
das ihm eine Klammer nicht passt , wenn ich das Script in der bash ausführe

Chmod 755 und exexuteable muss es auch haben oder ?

In der readme steht auch dass man einen User anlegen muss …

Danke Lg

Hola

Ich habe gesehen, dass das Plugin nicht mehr richtig funktioniert. Wollte mir Performance Daten angucken (die es seit über einem Monat nicht mehr gibt) weil:

Cannot retrieve speedtest configuration
ERROR: <urlopen error [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed (_ssl.c:727)>
numfmt: invalid number: ‘’
numfmt: invalid number: ‘’
<<>>
0 speedtest ping=;;|upload=;;|download=;; ping upload download

Das Script habe ich unter /usr/lib/check_mk_agent/local angelegt,
es ist auf der Kommandozeile ausführbar

<<<local>>>
0 speedtest ping=33.183;;|upload=44MiB;;|download=128MiB;; ping 33.183 upload 44MiB download 128MiB

aber in CheckMk bleibt alles auf 0
`image

Was habe ich falsch gemacht?

Unter welchem Account wird den der Agent ausgeführt? Ich vermute mal, dass der Nutzer die speedtest-cli nicht ausführen darf.

@dpa
Danke Daniel Dein Input hat mich auf die richtige Spur gebracht.

Das Script arbeitet ja mit dem Nutzer cmkplugin - naja den gab es bei mir noch nicht.

# Modified by: Mike Hanby
# Email: mhanby@uab.edu
# The 'speedtest-cli' command comes from https://github.com/sivel/speedtest-cli
#
# Modifications from the original are as follows:
#   I didn't want to run the 'speedtest-cli' Python script as root, so I
#   modified it to run as a user named 'cmkplugin' (which has to be
#   manually created on the host). The user doesn't need any special privileges.
#
#  If the script is run as a user other than root, it will continue to run
#  as that user (for testing from the command line)

User angelegt - jetzt läuft es - Danke!

Hallo zusammen,
ich möchte auch meine Bandbreite überwachen und habe das Skript installiert.
Beim Ausführen werden mir aber leider zwei Fehlermeldungen ausgegeben:

numfmt: ungültige Endung in Eingabe: „11716594.701343166“
numfmt: ungültige Endung in Eingabe: „2022825.0142647035“

Diese beiden Zeilen lösen das Problem aus:

DOWNLOAD=“$(numfmt --to=iec-i --suffix=B <<< $DOWNLOAD)”
UPLOAD=“$(numfmt --to=iec-i --suffix=B <<< $UPLOAD)”

Es liegt daran, dass ein Punk in der Zahl auftaucht. Gibt es eine Möglichkeit den Punkt bspw. durch ein Komma zu ersetzen oder die Zahlen dahinter abzuschneiden?

Danke für jeden Tipp!

Das hört sich ja vielversprechend an, aber bevor ich einmal teste die Frage “Kann das Tool auch mit Proxy umgehen?!”

Habe eben auf das Thema eine Anfrage erhalten.
Hier das was ich dazu gefunden habe: