Meine kleine HowTo Ecke
Meine kleine HowTo Ecke

Internet Speed monitoren

Inhalte

Vorbereitung

Damit das ganze funktioniert brauchen wir erstmal das Programm“bc“, um ein bisschen rechnen zu können, sowie die 2 Scripte speedtest-cli.py sowie check_speedtest-cli.sh der github user Sivel und Jonwitts.

sudo apt-get install bc
cd /usr/lib/nagios/plugins/

wget -O check_speedtest-cli.sh https://raw.githubusercontent.com/jonwitts/nagios-speedtest/master/check_speedtest-cli.sh
chmod +x check_speedtest-cli.sh

wget -O speedtest https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py
chmod +x speedtest

zuerst müssen wir dem Check-Script sagen wo die Speedtest Binary (speedtest-cli) liegt. Dies sagt auch die Ausgabe des Scripts wenn wir es starten:

# ./check_speedtest-cli.sh
******************************************************************************************

Nagios speedtest-cli plugin - Version: 1.2 2017122011:01

You have not defined the location of the speedtest binary in the script! You MUST do
this before running the script. See line 175 of the script!

******************************************************************************************

Das machen wir doch gleich mal.

Anpassung des Scripts

sed -i 's/STb=/STb=\/usr\/lib\/nagios\/plugins/g' /usr/lib/nagios/plugins/check_speedtest-cli.sh

Nun können wir uns ans anlagen des Check-Kommands im Icinga Director machen.

Check-Kommando erstellen

Als erstes erstellen wir eine neues Kommando vom Typ Plugin Check Command.

  • Kommandoname: check_speedtest
  • Kommando: check_speedtest-cli.sh (das ist der Scriptname, Icinga sucht standardmäßig im Ordner /usr/lib/nagios/plugins/. Man kann hier auch den absoluten Pfad angeben)
  • Timeout: 180 (ein Wert über 120 Sollte definiert werden, da der Check einige Sekunden läuft )

Argumente anlegen

Als nächstes werden die Argumente für diesen Check angelegt. Wir brauchen folgende Arugmente:

Argument Bedeutung
-w Download Warning Level – *Required* – integer or floating point
-c Download Critical Level – *Required* – integer or floating point
-W Upload Warning Level – *Required* – integer or floating point
-C Upload Critical Level – *Required* – integer or floating point
-l Location of speedtest server – *Required * – takes either „i“ or „e“. If you pass „i“ for Internal then you will need to pass the URL of the Mini Server to the „s“ option. If you pass „e“ for External then you must pass the server integer to the „s“ option.
-s Server integer or URL for the speedtest server to test against – *Required* – Run „speedtest –list | less“ to find your nearest server and note the number of the server or use the URL of an internal Speedtest Mini Server
-p Output Performance Data
-m Download Maximum Level – *Required if you request perfdata* – integer or floating point
Provide the maximum possible download level in Mbit/s for your connection
-M Upload Maximum Level – *Required if you request perfdata* – integer or floating point
Provide the maximum possible upload level in Mbit/s for your connection

All diese Argumente werden dem Kommando hinzugefügt (alle sind Pflichtangeben!). Das Ergebnis sollte so aussehen:

Felder anlegen

Sind alle Argumente vorhanden werden diese auch den Fehlern zugeordnet (einfach bei den vorgeschlagene Fehlern auswählen) und zur Pflichtangabe machen.

Die Argumente -p und -l fehlen in der Auswahl, da es sich nur um Variablen handelt, diese werden durch die $ am Anfang und ende gekennzeichnet. (Beispiel $critDownload$).

  • -p ist nur ein Switch, der dafür sorgt, dass der Check auch Performancedaten liefert
  • -l wurde auf den fest Wert „e“ für Extern gesetzt

Nun kann die Konfiguration unter Deployments erstellt werden. Im Anschluss erstellen wir noch einen Servicecheck für unser gerade angelegtes Kommando.

Service erstellen

Wir erstellen ein Service Template unter dem Namen InternetSpeed und weisen das Check-Kommando „check_speedtest“ zu.

Der Check soll alle 30 Minuten ausgeführt werden und bei einem Fehler alle 5 Minuten erneut prüfen.

  • Check-Kommando: check_speedtest
  • Check-Intervall: 1800 (30*60 Sekunden)
  • Wiederholungsintervall: 300 (3*60 Sekunden)

ApplyRule erstellen

Beim Erstellen der ApplyRule geben wir nun unsere Werte an in MBit.
Hast du also eine 50Mbit Leitung trägst du als Max Download „50“ ein, WarnDownload könnte „20“ und CritDownload „10“ sein.

Um die ServerID zu finden schau nach einem Server in deiner Nähe.

Alle verfügbaren Server listet man mit dem Befehl auf:

/usr/lib/nagios/plugins/speedtest --list | less

Die Ausgabe sieht so aus:

Retrieving speedtest.net configuration...
11298) Daten- und Telekommunikations-GmbH (Dessau, Germany) [40.40 km]
 2002) Wittenberg-net GmbH (Wittenberg, Germany) [60.59 km]
 6518) Thueringer Netkom GmbH (Weimar, Germany) [74.59 km]
 2643) MDCC Magdeburg-City-Com GmbH (Magdeburg, Germany) [75.19 km]
 8198) WebseitenDesigner.com (Magdeburg, Germany) [75.19 km]
 3823) Newone (Ilmenau, Germany) [117.97 km]
 7905) Stadtwerke Finsterwalde (Finsterwalde, Germany) [119.57 km]
 2933) MeteringService GmbH (Hof, Germany) [131.12 km]
 2495) IBH IT-Service GmbH (Dresden, Germany) [131.28 km]
10348) IT Ohlendorf (Salzgitter, Germany) [131.45 km]
10259) Interoute VDC (Berlin, Germany) [147.46 km]
 6417) SysEleven GmbH (Berlin, Germany) [147.46 km]
17137) Cronon AG (Berlin, DE) [147.46 km]
 1475) IPB (Berlin, Germany) [149.31 km]
 3313) suec//dacor GmbH (Coburg, Germany) [155.11 km]
...

Bei mir sieht die ApplyRule so aus:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert