Speedtext.net CLI (Windows) im PRTG Network Monitor funktioniert!

Endlich!

Lange habe ich nach einem Weg gesucht, wie man die Geschwindigkeit eines Internetanschlusses mit einem Netzwerk-Monitoring-Programm überprüfen kann. Das Mittel der Wahl ist Paesslers PRTG Network Monitor. Es ist wichtig zu  erwähnen, dass der Hersteller eine kostenfreie Lizenz für 100 Sensoren anbietet. Wer es mit dem Netzwerkmonitoring – vielleicht auch nur in privater Umgebung etwas ernster meint, sollte das Angebot annehmen und das PRTG auf einem PC in häuslicher Umgebung installieren testen. Ob man diesen PC ununterbrochen oder nur zeitweise laufen lässt, ist dabei unerheblich.
Hilfe kam mit der Entdeckung von Speednet.net
INFO ÜBER SPEEDTEST NET
http://www.gregledet.net/tag/network/
Es gibt verschiedene Optionen, die Einblicke in die Erstellung eines benutzerdefinierten Geschwindigkeitstestsensors für PRTG bieten. Heute werde ich diesen von Nicolai Pederson als Ausgangspunkt verwenden. Nicolai verwendete eine EXE-Datei von Github, die seit einiger Zeit nicht mehr aktualisiert wurde, und als ich anfing, damit herumzuspielen, bemerkte ich, dass der Geschwindigkeitstest wirklich nicht lange genug lief, um ein gültiges Ergebnis zu liefern. Außerdem hat Ooklas Speedtest.net kürzlich ein eigenes CLI-Tool veröffentlicht. Deshalb wollte ich das, was Nicolai getan hat, mit dem neuen von Ookla aufnehmen, was eigentlich ziemlich einfach ist. Wir werden also seinen Anweisungen folgen, mit ein paar Änderungen an seiner .bat-Datei, und ich werde eine Änderung vornehmen, um die Ergebnisse konsistent zu halten.         Laden Sie die Speedtest.net CLI-App von Ookla herunter.         Kopieren Sie diese Dateien nach „C: \ Programme (x86) \ PRTG Network Monitor \ Benutzerdefinierte Sensoren \ EXEXML“. Der Einfachheit halber wird dies unser Arbeitsverzeichnis sein.         Öffnen Sie eine Eingabeaufforderung, gehen Sie zu „C: \ Programme (x86) \ PRTG Network Monitor \ Benutzerdefinierte Sensoren \ EXEXML“ und führen Sie „speedtest.exe -L“ aus. Dadurch erhalten Sie eine Liste der Server in Ihrer Nähe. Ich würde empfehlen, den Server Ihres ISP auszuwählen, wenn er auf der Liste steht.
Notieren Sie sich nach Auswahl Ihres Servers die Server-ID. Wir werden das in Kürze in unserer .bat-Datei verwenden. In meinem Fall verwende ich den Spectrum-Server mit der ID 16969.
Öffnen Sie den Editor und kopieren Sie Folgendes. Wir werden damit eine .bat-Datei erstellen.

Ersetzen Sie den Server 16969 durch die Server-ID Ihrer Wahl. Der Grund, warum wir denselben Server verwenden, vorzugsweise von Ihrem ISP, ist die Übereinstimmung mit Ihrem Geschwindigkeitstest. Wenn Sie mehrere Server verwenden, können unterschiedliche Ergebnisse erzielt werden, da Sie nicht wissen, über welche Bandbreite jeder Server verfügt. Und wenn Sie Ihren eigenen ISP verwenden, liefern diese mit viel größerer Wahrscheinlichkeit wirklich genaue Ergebnisse und blockieren Sie mit geringerer Wahrscheinlichkeit, wenn Sie den Test häufig ausführen.
Speichern Sie die Datei als speedtest.bat im Arbeitsverzeichnis "C: \ Programme (x86) \ PRTG Network Monitor \ Benutzerdefinierte Sensoren \ EXEXML". Stellen Sie einfach sicher, dass Sie sich daran erinnern, als was Sie es gespeichert haben.
Gehen Sie zu PRTG und erstellen Sie einen neuen Sensor. Der Sensortyp lautet "EXE / Script Advanced". Benennen Sie ihn dann und wählen Sie unter "Sensoreinstellungen" Ihre "speedtest.bat" für EXE / Script aus.

Nachdem Sie den Sensor erstellt und einige Daten erfasst haben, ändern Sie das Scanintervall. Sie möchten offensichtlich nicht, dass dieses Ding etwa alle 60 Sekunden scannt. Ich habe meine so eingestellt, dass sie alle 6 Stunden scannt, aber Sie können Ihre nach Belieben einstellen.

Warum habe ich das getan, als Nicolai die Arbeit bereits erledigt hatte? Nun, die Github .exe, die Nicolai verwendet, läuft nur einige Sekunden und läuft nicht lange genug, um eine genaue Messung zu ermöglichen. Außerdem wurde versucht, Server zu verwenden, die nicht mehr vorhanden waren. Wenn Sie auf seiner Website nachsehen, werden Sie einige Kommentare zu Personen sehen, die sich darüber beschweren, dass sie falsche Ergebnisse erhalten haben. Die "offizielle" Speedtest CLI App löst dieses Problem. Auch die offizielle App kann JSON ausspucken, aber PRTG mag das Format nicht, und ich bin nicht klug genug, um zu wissen, wie man die Daten in ein Format analysiert, das ihm gefällt, also musste ich einen Weg finden, dies zu tun Holen Sie sich die Daten, die ich wollte, in ein Format, das PRTG wollte.

Nun, für diejenigen unter Ihnen wie mich, die nicht schlau sind und herausfinden möchten, was diese .bat-Datei tut, werde ich erklären. Die Datei speedtest.exe spuckt die Daten in einem CSV-Format aus (das "-f csv" hinter dem Befehl ist die Formatierung). Die "FOR / F" -Token = 4,7,8 delims =, "" in der .bat sind eine Schleife, die angibt, dass die Ausgabe durch Kommas getrennt ist, und Sie möchten sich die Daten ansehen, die hinter dem 4., 7. und 8. Komma. Sie müssen dies möglicherweise ändern! Der Grund, warum es bei mir auf 4,7,8 gesetzt ist, ist, dass die Ausgabe des eigentlichen Befehls mit der allerersten Zeile "Spectrum - Columbus, OH" zurückkommt und das Komma vor OH sowie ein Komma liest. Wenn die Ausgabe Ihres Befehls dort kein Komma enthält, müssen Sie es möglicherweise ändern. Um dies sicher herauszufinden, können Sie Folgendes ausführen:

speedtest.exe --accept-license -s # YOURSERVERNUMBER # -f csv

Die Zählkommas. Wenn Sie sich nicht sicher sind, welche Daten sich wo befinden, können Sie Folgendes ausführen.

    speedtest.exe --accept-license -s # YOURSERVERNUMBER # -f csv --output-header

Hier erfahren Sie, welche Daten sich an welchem ​​Ort befinden. Sie werden so etwas bekommen:

    "Servername", "Server-ID", "Latenz", "Jitter", "Paketverlust", "Download", "Upload", "Download-Bytes", "Upload-Bytes", "URL teilen"

    Spectrum - Columbus, OH, 16969, 7,495, 0,786, N / A, 110863914, 4621941, 1425470568, 32103608, https: //www.speedtest .net / result / c / 73cf23fa-84cd-4473-a816-4154424fd027 "

Jetzt, da Sie wissen, was und wie analysiert wird, können Sie natürlich weitere Daten hinzufügen, wenn Sie möchten, z. B. Paketverlust, Jitter, Download-Bytes usw. Sie müssen nur noch dem Beispiel in der .bat-Datei folgen, make sicher, dass Sie es testen. Sie können die .bat-Datei über die CLI ausführen und die Daten anzeigen oder auf Fehler prüfen, bevor Sie den Sensor erstellen. Seit ich dies zum ersten Mal gepostet habe, habe ich ein Beispiel erstellt, das alle Informationen aus der CLI-Ausgabe mit Ausnahme des Paketverlusts an einem Ort abruft. Sie können das hier herunterladen und es einfach in .bat umbenennen, um es auszuführen. Vergessen Sie nicht, auch Ihre Server-ID zu ändern! Noch eine Notiz von Änderungen, die ich in der .bat-Datei zwischen seiner und meiner vorgenommen habe; Ich entfernte seine Bemerkungen, fügte ein ~ zwischen "%% ~ A" usw. hinzu, um die Anführungszeichen aus der Antwort in der CSV-Datei zu entfernen, bereinigte die Formatierung ein wenig und entfernte das "00" aus den Upload- und Download-Werten ( sie werden nicht benötigt). Ich sollte auch beachten, dass ich über 2 Stunden damit verbracht habe, herauszufinden, warum ich gute, saubere Daten in der CLI gesehen habe, aber nur Nullen in PRTG. Sagen wir einfach, es gibt einen Grund, warum die Option "--accept-license" im Befehl now <grrr ....> festgelegt ist. Sobald Sie fertig sind, erhalten Sie einen funktionierenden Sensor!


Hallo Herr Krakovič,

vielen Dank für Ihr freundliches Feedback.

Ich denke, dass ich den Fehler gefunden habe. Es scheint, dass die Datenschutzgrundverordnung schuld ist. Wenn einer User the „Speedtest.exe“ das erste mal ausführt, dann wird gesagt dass der Speedtest erst einmal mit dem Parameter –accecpt-gpdr ausgeführt werden soll. Anscheinend merkt sich das Programm das dann für diesen User. PRTG wird jedoch das Programm mit einem anderen user ausführen und daher bekommen Sie keine Rückmeldung.

Ich habe die Batch entsprechend angepasst und sieht nun wie folgt aus:

@ECHO OFF

SETLOCAL EnableDelayedExpansion

SET „Latency=“

SET „Jitter=“

SET „Download=“

SET „Upload=“

SET „DownloadBytes=“

SET „UploadBytes=“

FOR /F „tokens=4,5,7,8,9,10 delims=,“ %%A IN (‚“C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\speedtest.exe“ –accept-license –accept-gdpr -s 16969 -f csv‘) DO (

 SET Latency=%%~A

 SET Jitter=%%~B

 SET Download=%%~C

 SET Upload=%%~D

 SET DownloadBytes=%%~E

 SET UploadBytes=%%~F

)

ECHO ^<?xml version=“1.0″ encoding=“Windows-1252″ ?^>

ECHO ^<PRTG^>

ECHO ^<result^>

ECHO ^<Channel^>Ping^</Channel^>

ECHO ^<value^>%Latency%^</value^>

ECHO ^<Mode^>Absolute^</Mode^>

ECHO ^<Unit^>TimeResponse^</Unit^>

ECHO ^<Float^>1^</Float^>

ECHO ^<ShowChart^>1^</ShowChart^>

ECHO ^<ShowTable^>1^</ShowTable^>

ECHO ^</result^>

ECHO ^</PRTG^>

Damit konnte ich den Sensor zum laufen bringen (mit einem Abfrageinterval von 5min und einem Timeout von 180s).

Ich hoffe das ich Ihnen weiterhelfen konnte. Ich wünsche Ihnen noch einen schönen Tag!

With kind regards / Mit freundlichen Gruessen

Moritz Heller

Technical Support Team, Paessler AG

support@paessler.com

>Hallo Herr Heller,

>

>Sie schickt mir der Himmel… danke. Vielleicht kann ich Vodafone doch nachweisen, dass der Upload zeitweise grottenschlecht ist.

>

>Es gibt sehr viele User im Netz, die die neue OOKLA Speedtest.net CLI ins PRTG integrieren möchten.

>

>Download unter „Windows“,  unten …  https://www.speedtest.net/de/apps/cli

>

>Den passenden Batch drum herum gibt es auch, den habe ich genutzt, er stammt von Greg

>

>http://www.gregledet.net/tag/network/

>

>Ich folgte seinen Ausführungen, sehe im PRTG  jedoch auch nur Nullen. Er meinte, die exe braucht den Parameter –accept-license, ansonsten sah er auch nur Nullen.

>

>Es würde mich freuen, wenn ich mit Ihrer Hilfe das Drama beende und im Netz verkünden könnte, dass es mit PRTG doch funktioniert!

>

>Haben Sie es mit der neuen speedtest CLI probiert?

>

>Konkret:

>

>….Ich habe nun verschiedene Ansätze probiert und getestet und bis jetzt hat alles gut funktioniert. Haben Sie schon einmal Testweis einen einfachen EXE Sensor verwendet. Hier würde das Batch wie folgt aussehen:

>

>@ECHO OFF

>

>SETLOCAL EnableDelayedExpansion

>

>SET „Latency=“

>

>SET „Jitter=“

>

>SET „Download=“

>

>SET „Upload=“

>

>SET „DownloadBytes=“

>

>SET „UploadBytes=“

>

>FOR /F „tokens=4,5,7,8,9,10 delims=,“ %%A IN (‚“C:\Program Files (x86)\PRTG Network Monitor\Custom Sensors\EXEXML\speedtest.exe“ –accept-license -s 16969 -f csv‘) DO (  SET Latency=%%~A  SET Jitter=%%~B  SET Download=%%~C  SET Upload=%%~D  SET DownloadBytes=%%~E  SET UploadBytes=%%~F

>

>ECHO %Latency%:ok

>

>Klappt nicht, siehe Anhang.

>

>….Jedoch konnte ich feststellen, dass das folgenden Funktioniert.

>

>@echo off

>

>SET TESTVALUE=321

>

>echo ^<?xml version=“1.0″ encoding=“Windows-1252″ ?^>

>

>echo ^<prtg^>

>

>echo  ^<result^>

>

>echo  ^<channel^>Demo Disk Free^</channel^>

>

>echo  ^<unit^>Percent^</unit^>

>

>echo  ^<mode^>Absolute^</mode^>

>

>echo  ^<showChart^>1^</showChart^>

>

>echo  ^<showTable^>1^</showTable^>

>

>echo  ^<warning^>0^</warning^>

>

>echo  ^<float^>1^</float^>

>

>echo  ^<value^>%TESTVALUE%^</value^>

>

>echo  ^<LimitMaxError^>500^</LimitMaxError^>

>

>echo  ^<LimitMaxWarning^>400^</LimitMaxWarning^>

>

>echo  ^<LimitWarningMsg^>My custom note for warnings^</LimitWarningMsg^>

>

>echo  ^<LimitErrorMsg^>My custom note for errors^</LimitErrorMsg^>

>

>echo  ^<LimitMode^>1^</LimitMode^>

>

>echo  ^</result^>

>

>echo ^</prtg^>

>

>Das klappt ja.

>

>vG

>

>Krakovic