PRTG für Skype for Business Network Assessment

Microsoft hat Ende September 2016 ein neues Tool zur Ermittlung der Paketlaufzeit zu Edge-Servern veröffentlicht. Auf der Seite SfB Online Network Assessment Tool habe ich die grundlegende Arbeitsweise vorgestellt. Das Tool kann natürlich auch wunderbar zu einer Art Dauermessung mit PRTG eingesetzt werden.

Überlegungen

Das SfB Online Network Assessment Tool prüft je nach Konfiguration die Verbindung durch synthetische VoIP-Anrufe über einen Edge-Server von Microsoft. Es läuft dann aber aktiv und daher wollte ich das Skript nicht als Sensor umsetzen, der von PRTG gestartet wird.

Ich habe daher den alternativen Weg gewählt, dass das Skript losgelöst von PRTG durch den Windows Task-Planer gestartet wird und die Ergebnisse an PRTG übergibt. Für die Übergabe bediene ich mich dem PRTG:HTTPPush-Sensoren. Das hält die Last auf dem PRTG-Server gering und die Messung kann auf jedem PC erfolgen, der mit dem Edge-Server von SfB Online kommunizieren kann. Auf dem Endpunkt muss nichts von PRTG selbst installiert sein.

Installation und Konfiguration

Zuerst müssen Sie auf dem Computer natürlich das SfB Online Network Assessment Tool installieren, was genau genommen nur ein auspacken ist. Da das Programmer aber nur einen VoIP-Call ausführt, muss die Konfiguration entsprechend geändert werden, damit es mehrere Anrufe hintereinander durchführt. Da ein Anruf normalerweise 17 Sekunden dauert und das Tool dann 5 Sekunden Pause einlegt, wäre , würde ich 13 Anrufe konfigurieren.

Sie können natürlich auch "IntervalInSeconds" auf 13 stellen, damit aus 17 Sek Sprach + 13 Sek Pause wieder 30Sek Laufzeit werden und dann mit "NumInterations = 10" daraus einen 5 Min test machen. Sie haben hier alle Freiheiten. Sie können das Skript ja einfach einmal direkt aufrufen und schauen, wie lange es läuft:

measure-command .\NetworkAssessmentTool.exe

Sie können die Daten natürlich an ihre Umgebung anpassen.

Auswertung

Das SfB Online Network Assessment Tool schreibt die Ergebnisse relativ unspektakulär in eine TSV-Datei mit einer Zeile pro Messung. Das von Microsoft mitgelieferte Programm "ResultsAnalyzer.exe" liefert leider keine direkt verwertbare Ausgabe zurück. Daher lese ich selbst die result.tsv ein und ermittle die Messwerte. "ResultsAnalyzer.exe" ermittelt dazu den 90% Perzentil, d.h. den Wert, bei dem 90% der anderen Werte drunter sind. Ich nehme vereinfacht die 15 Messpunkte pro Wert, sortiere diese und werde den zwei höchsten Wert aus. das ist dann etwa 93%.

PRTG-Code

Das ganze habe ich dann in ein PowerShell-Skript eingepackt, welches Sie am besten mit in das Programmverzeichnis kopieren, in dem auch das SfB Online Network Assessment Tool installiert ist. Das kann ein Client sein, wenn Sie den Test von Client zum SfB Online Edge durchführen oder natürlich auch ihre SfB Edge Server ihrer "OnPremise"-Umgebung.

Wenn Sie die Adresse des PRTG-Servers und die GUID des Sensors nicht per Parameter übergeben wollen, dann sollten Sie die Werte hier im Skript direkt ändern.

# PRTG-SFBAssessment.ps1
#
# Uses the Microsoft Network Assessment Tool to check 
#

param (
	$prtgserveruri = "http://192.168.100.1:5050/sfbassessment"
)


while ($true) {
   Start-Process -FilePath .\NetworkAssessmentTool.exe -NoNewWindow -Wait

   $result = Import-Csv .\results.tsv -Delimiter "`t"
   

   $prtgresult = '<?xml version="1.0" encoding="UTF-8" ?>
      <prtg>
         <result>
            <channel>Packet loss rate</channel>
            <value>' + (($result | select packetlossrate -ExpandProperty packetlossrate | sort)[-2]).replace(",",".") +'</value>
            <float>1</float>
         </result>
         <result>
            <channel>RTT latency</channel>
            <value>' + (($result | select RoundTripLatencyInMs -ExpandProperty RoundTripLatencyInMs | sort)[-2]).replace(",",".") +'</value>
            <float>1</float>
         </result>
         <result>
            <channel>Jitter</channel>
            <value>' + (($result | select AverageJitterInMs -ExpandProperty AverageJitterInMs | sort)[-2]).replace(",",".") +'</value>
            <float>1</float>
         </result>
         <result>
            <channel>Packet reorder ratio</channel>
            <value>' + (($result | select PacketReorderRatio -ExpandProperty PacketReorderRatio | sort)[-2]).replace(",",".") +'</value>
            <float>1</float>
         </result>
      </prtg>'

#$prtgresult | out-file result.xml

   $Answer=Invoke-Webrequest `
      -method "GET" `
      -URI ($prtgserveruri + "?content=$prtgresult")
   if ($answer.Statuscode -ne 200) {
      write-warning "Request to PRTG failed"
      exit 1
   }
}

Planen sie es dann mit dem Windows Taskplaner ein, dass es beim Start direkt auf dem Client oder Server ausgeführt wird, welcher an den Office 365 Edge-Server kommt.

Das Skript ist in der Form natürlich sehr rudimentär und enthält keine Fehlerbehandlung o.ä. Inwieweit die Werte Stimmig sind, sollten Sie überprüfen. Viel Arbeit nimmt ihnen aber PRTG schon ab, da es ausbleibende Meldungen alleine als Fehler erkennt.

Einrichtung in PRTG

Auf der Seite PRTG:HTTPPush-Sensoren gehe ich genauer auf die Einrichtung von PRTG HTTP Push-Sensoren ein. Denken Sie daran, nach der Einrichtung über den Assistenten die Werte für das Messintervall (Per Default 60 Sek) auf vielleicht 5 Minuten zu stellen, wenn Sie im Skript ebenfalls ca. 5 Minuten messen. Andere Werte sind natürlich möglich.

Ergebnisse

Es dauert dann natürlich ein paar Minuten, bis die ersten Daten eintrudeln. In der Übersicht zeigen die klassischen Gauge-Anzeigen die verschiedenen Werte der letzten Messung an:

Über die Anzeige der Live-Daten sehen sie den Verlauf über die letzten 24 Stunden:

Die Tabelle zeigt schön, wann genau welche Werte erfasst wurden. Später wird man die Daten auch über längere Zeiträumen sehen. Wobei dies für die Auswertung nur dahingehend interessant ist, wenn eine grundlegende Verbesserung oder Verschlechterung quasi als "Stufe" sichtbar wird. Ansonsten bringen weiter gemittelte Werte keinen Informationsgewinn. Interessant ist aber schon die Anzeige über 2 oder mehr Tage und den Einfluss der "Arbeitszeit" auf die Leistung. Hier ist gut zu sehen, dass andere Anwender die gleiche Leitung "Tagsüber" nutzen und sich damit die Laufzeit erhöht:

Noch deutlicher wird das in einer 7-Tage-Ansicht offensichtlich.

Während der Arbeitszeit geht die RTT an diesem Anschluss von ca. 50ms auf 70ms hoch. Für eine Edge zu Edge-Anbindung wird damit die Grenze von 60ms schon überschritten.

Offen

Das Auswerte-Tool von Microsoft liefert noch ein "FAIL" oder "PASS", je nach den ermittelten Werte und bezogen auf einen Client oder eine Edge-zu-Edge-Verbindung.

Die Werte, anhand denen ResultsAnalyzer.exe diese Entscheidung trifft, stehen in der Dokumentation, die im ZIP-Archiv enthalten ist. Das Skript könnte diese ebenfalls ermitteln, als Wert mit ausgeben und den Status setzen, z. B: eine Warnung ausgeben.

Wert Client zu Edge Edge zu Edge
Packet loss rate

<10% in einem 200ms Intervall

<1% in einem 200ms Intervall

RTT Latency

<100ms

<60ms

Jitter

<30ms innerhalb 15s Intervall

<15ms innerhalb 15s Intervall

Packet reorder

<0,05%

<0,01%

Weitere Links