Sprach-/Dateiübertragung messen - Voice-/Filetransfer

    • Offizieller Beitrag

    Hallo,


    ich hoffe, mir kann jemand weiterhelfen. Ich bin nach einer Stunde am verzweifeln... :wacko:


    Ich möchte in einem Graphen gerne darstellen, wie sich die Netzwerkauslastung bezüglich TeamSpeak zusammenfasst. Dazu möchte ich gerne für jeden Tag die übertragenen Pakete für die Sprach- und Dateiübertragung in eine Datenbank speichern, um sie dann im Graphen entsprechend aufwerten zu können. :)


    Mein Problem liegt aktuell dabei, dass ich es einfach nicht schaffe, die sämtlichen Voice- und Filetransfers von TeamSpeak zu messen, da ich kein passendes Tool oder irgendwas hierfür finde.


    Die Auslastung des Netzwerkes wird mit Hilfe meines eigenen Skriptes in eine Datenbank gespeichert. Hier speicher ich einfach die Datenrate in "kbit/s", die auf einer 5 Sekunden Zeitspanne gemessen wurde. In "kbit/s" hätte ich dann auch gerne die Angaben von den Transfers, um im entsprechenden Graphen die Linien korrekt bauen zu können.


    Also nochmal kurz, was das Ziel ist: Speicherung der jeweiligen Datenrate in kbit/s von TeamSpeaks Voice- und Filetransfers.


    Ich habe hierzu bereits das folgende probiert:
    tcpdump: Da steht immer "UDP" - egal ob Voice oder File... -.-

    Code
    $ tcpdump -i eth0 port 9987tcpdump: verbose output suppressed, use -v or -vv for full protocol decodelistening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes02:45:04.197050 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 21502:45:04.216772 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 21502:45:04.236752 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 29402:45:04.256816 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 19802:45:04.277341 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 19702:45:04.296961 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 19802:45:04.316709 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 19802:45:04.336740 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 20502:45:04.356738 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 21502:45:04.376897 IP www.example.com.9987 > pD4F12345.dip5.t-ipconnect.de.61232: UDP, length 215


    TeamSpeak ServerQuery "hostinfo": Pakete/Bytes über die Zeit der Instanz Uptime helfen mir nichts...


    Man beachte hierbei auch noch, dass die Voice Ports immer unterschiedlich sein können und man somit schlecht alles "fixieren" kann. Ebenso möchte ich nicht nur einen virtuellen Server messen, sondern die komplette Instanz bzw. mehrere, wenn mehrere vorhanden sein sollten - was eigentlich nie der Fall sein sollte. Das ist ein weiterer Grund, warum tcpdump dafür meiner Meinung nach nicht geeignet ist. ;) ^^


    Ich freue mich auf alle hilfreichen Antworten! :)

  • Moin, sowas finde ich toll, das schätze ich an dem "Experten Forum", es gibt hier auch Probleme die meist nur von Experten gelöst werden können. Dafür finden wir uns hier alle zusammen, Systemintegratoren, Anwendungsentwickler, Elektrotechniker, Teamspeak-Freaks usw.


    Beim Durchlesen deines Threads sind mir einige Dinge aufgefallen und ich glaube dir fehlt nur der kleine "Schubs" auf den richtigen Lösungsansatz :) Da helfe ich gerne :)


    Okay, analysieren wir mal das Problem:



    Vorhaben:


    Es soll eine Anwendung programmiert werden die in der Lage ist, den angefallenen Datentraffic (Voice & Filetransfer) einer Teamspeak-Instanz in einem Diagramm darzustellen.



    Problem:


    Eine zuverlässige und gute Quelle von der die statistischen Daten entnommen werden können.
    Zudem ist nicht ganz klar wie diese Daten zusammengefasst werden sollen (bin ich jedenfalls der Meinung) :)



    Werkzeuge:


    Der Teamspeak-Server
    Eine MySQL Datenbank
    Ein Webspace mit PHP
    Eine API für Diagramme/Graphen



    Abgrenzungskriterien:

    • Sowohl Voice- als auch Filetransfer-Traffic soll erfasst werden
    • Es soll das Traffic der Instanz (aller Server) gemessen werden
    • Beim Hinzufügen eines Servers oder ändern eines Server-Ports soll keine Anpassung am Script notwendig sein
    • Die Darstellung im Graphen erfolgt immer für einen gesamten Tag / 24 Stunden


    Nachdem wir nun die Rahmenbedingungen definiert haben analysieren wir mal was du schon herausgefunden hast und wo der eventuell Denkfehler verborgen sind:


    Zitat

    Hier speicher ich einfach die Datenrate in "kbit/s"


    Meiner Meinung nach der falsche Ansatz. Wieso willst du die aktuelle Datenrate messen? Du willst doch wissen wie viel Traffic in & out gegangen sind und kannst anhand dieser Daten später ggf. einen Durchschnitt pro Sekunde angeben.
    Dabei wäre das richtige Vorgehen: Du misst alle n Sekunden das Gesamttraffic, danach rechnest du:




    Danach erhält du das durchschnittliche Traffic pro Sekunde innerhalb von Zeitspanne n.



    Zitat

    die auf einer 5 Sekunden Zeitspanne gemessen wurde


    Die Auflösung von 5 Sekunden würde ich an deiner Stelle nochmal überdenken.


    Wir nehmen an du ermittelst alle 5 Sekunden das Traffic, wenn du jeden dieser Punkte darstellen willst auf 1 Pixel, dann sind das pro Tag 17280 Pixel, wenn wir davon ausgehen das du zwischen jeden Punkt im Graphen ca. 5px Freiraum lässt kommen wir auf insgesamt 103680px in der Breite um den Graphen darzustellen in deiner angegebenen Auflösung von n = 5.
    Nun wirst du sagen: Ja, ich nehme ja noch Durchschnittswerte von z.B. n = 60, dann kommen wir also immer noch auf 8640px nach dem Rechenweg wie oben.
    Heißt praktisch, in der Realität lässt sich vielleicht n = 300 oder so ähnlich darstellen, diese könnte man von n = 60 Messungen als AVG() berechnen lassen, dann haben wir eine höhere Genauigkeit in einer niedrigeren Auflösung.


    Okay, ich merke gerade selbst das es ggf. zu komplex wird, lassen wir das mal so stehen und gehen erstmal weiter im Text.



    Zitat

    Pakete/Bytes über die Zeit der Instanz Uptime helfen mir nichts


    Falsch, das ist mit die beste Lösung.


    Ich erkläre einfach mal mit hilfe von Pseudocode (mit Bezug auf PHP): [Durchlauf alle 60 Sekunden | n = 60]



    Dem Graphen kannst du dann später immer die AVG()-Werte in 25 Minuten zusammengefasst übergeben, so kommst du auf 96 Zeitpunkte pro Tag, damit sollte der Graph anschaulich genug sein.
    Für Stundengraphen kannst du die Auflösung dann immer noch anpassen und kannst trotzdem sehr anschaulich das Traffic pro Stunde darstellen.


    Als Tabelle genügt dann:




    So, ich hoffe es wurde verständlich wie ich das meine. Rechne mit den Werten von Teamspeak, miss nicht mit den kb/s sondern dem totalen Traffic und der Differenz zur Messung davor.
    Oder benutzt das connection_bandwidth_received_last_minute_total & connection_bandwidth_sent_last_minute_total



    Gruß


    Stefan

    4 Mal editiert, zuletzt von par0noid ()

  • Dieses Thema enthält 16 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind, bitte registrieren Sie sich oder melden Sie sich an um diese lesen zu können.