Beiträge von par0noid

    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

    Direkt zum Tool für Windows => Nächster Post


    Wenn du die DoS Protection aktivieren willst, aber keine Ahnung vom Query hast - dafür aber ein Webspace, dann kannst du dieses Script nutzen.


    Die ersten 4 Variablen sind mit deinen Einstellungen zu bearbeiten, danach kann es einfach per Browser aufgerufen werden und fertig!


    Hallo,


    also ich habe wirklich fast jeden großen Hoster durch. Es gibt natürlich solche und solche, die einen Hosten ewig bei einem Anbieter und haben keine Probleme, bei anderen schon nach Bestellung.
    Ich liste einfach mal auf:


    Strato: [keine Empfehlung]


    Wir haben damals einen Dedicated Server bestellt, Kostenpunkt 129,99€, Setup 199,99€.
    Nachdem man uns über Wochen hingehalten hat mit der Behauptung "der Server befindet sich gerade im Setup, der ist gleich online" haben wir in Woche 3 endlich jemanden am Telefon gehabt der sagte: "Wir haben gar keine Hardware dafür, das dauert noch etwas", folglich hat uns Strato jeden Tag, über Wochen belogen als wir dort angerufen haben. Also Bestellung storniert. Nach 2 Monaten bekamen wir plötzlich die Logindaten per Mail mit Rechnung über 329,98€ obwohl wir schon vor Monaten storniert haben. Strato wollte dann trotzdem Geld sehen weil wir den Server ja "benutzt" hätten usw, war ein langes hin und her.
    Davon ab viel zu teuer & der größte Witz: wenn man kündigt stellen die sofort den Dienst ab den man gemietet hatte, egal ob man noch für nen halbes Jahr bezahlt hat oder so, Kohle gibts auch nicht zurück.



    Server4you: [keine Empfehlung]


    Hatte dort mehrere Dedicated Server ... absolut untauglich. Hohe Pings, Netzwerkprobleme, Server stehen in Frankreich statt Deutschland, es wird billige Hardware verwendet (in 1 Jahr "brennt" da 5 mal was durch...), Support unbrauchbar - bei Problemen heißt es: der Kunde wars..
    Kündigung klappt so lala, also kann man nur von abraten.



    G-Portal: [Empfehlung]


    Hatte den Server nicht lange, war aber alles in Ordnung, Latenzen gut, Kündigung einfach, schnell installiert.



    Hetzner: [Empfehlung]


    Hatte und habe sowohl V-Server als auch Dedicated, sogar Webspace hatte ich dort. Super Preis/Leistungs-Verhältnis, gute Latenzen - super Bandbreite, Support ganz okay, Kündigung super, alles so wie es sein soll.
    Definitive Empfehlung.



    NGZ-Server: [Empfehlung]


    War jahrelang dort mit 2 Dedicated, alles Super, gute Hardware die über Jahre pausenlos durchlief, sehr kulant, super Support, Preise etwas über der Konkurrenz aber gerechtfertigt, Kündigung super!



    Netcup: [neutral]


    Ganz okay, Preis/Leistung bei den VServern gut, bei Dedicated nicht so gut, Traffic ist unbegrenzt, man wird aber an einen langsamen Node geklemmt wenn man denen zu viel Traffic verursacht, da hab ich lieber nen festen Rahmen an Traffic.



    Ansonsten war ich noch bei 1blu, 1und1, WebTropica usw. usw., dies ist aber zu lange her das es noch Repräsentativ wäre oder es war einfach nichts besonderes.


    Wenn ich ne Empfehlung geben sollte: Hetzner, schont die Geldbörse ohne das man Abstriche machen muss

    Kann man hier eigentlich auch die Instanz-Einstellungen wie "DoS-Protection" mit "instanceEdit(array $data)" setzen/ändern?


    Oder Fragen wir anders: Sind die 'setting' gleichnamig zur offiziellen TeamSpeak 3 Manual Dokumentation?


    Die Namen der Permissions sind die selben, wie die im Manual und auch identisch mit denen die man in Teamspeak sehen kann wenn man im Rechtemenu den Modus wechselt. Ob das mit dem DOS-Protection möglich ist weiß ich nicht, mit der Option "DOS-Protection" hab ich mich noch nicht befasst

    Hier ein Beispielscript wie man Clients kicken kann, dabei ist auch der serveradmin-Zugang nötig!


    Nennt die Datei im falle eines copy-paste des Scripts bitte clientkick.php um die Funktion zu gewährleisten.


    Hallo,


    einige von euch kennen sicher mein Projekt "ts3admin.class". Das ist eine Funktions-Bibliothek für PHP die euch alle Funktionen bietet die ihr braucht wenn ihr über eine Website mit PHP kommunizieren wollt.
    Dadurch lassen sich z.B. ganz einfach Channel oder Server erstellen, User bearbeiten, Bilder hochladen usw.


    Projektwebsite und Download findet ihr auf: http://ts3admin.info


    Wie fängt man jetzt damit an fragt ihr euch sicher.
    Folgende Voraussetzungen sollten erfüllt werden:

    • Ein Webspace oder ein lokaler Apacheserver sollte vorhanden sein
    • PHP-Kenntnisse
    • Ein Teamspeakserver bei dem ihr die Logindaten zum Serveradmin-Zugang habt


    Ist dies alles vorhanden wäre es wahrscheinlich noch am besten wenn ihr die IP eures Webspaces in die Whitelist von Teamspeak eintragt, damit ihr nicht bei zu vielen Querys über die Website gebannt werdet (das geht sehr schnell!).


    Sind bis jetzt alle Vorkehrungen getroffen, die PHP-Klasse "ts3admin.class.php" gedownloaded und ihr seid startklar, so kann nun begonnen werden.


    Wir erzeugen also eine Test-PHP Datei, test.php und legen sie auf das Website. Im selben Verzeichnis platzieren wir nun die "ts3admin.class.php".
    Jetzt muss die test.php bearbeitet werden.


    Schritt 1: Laden der ts3admin.class.php


    PHP
    <?PHPrequire_once("ts3admin.class.php");?>


    Schritt 2: Erzeugen eines ts3admin-Objekts:


    PHP
    <?PHPrequire_once("ts3admin.class.php");$ts = new ts3admin("<IP DES TS-SERVERS>", "<QUERY-PORT (Standard 10011)>");?>


    Schritt 3: Überprüfen ob die Verbindung aufgebaut werden kann:



    PHP
    <?PHPrequire_once("ts3admin.class.php");$ts = new ts3admin("<IP DES TS-SERVERS>", "<QUERY-PORT (Standard 10011)>");$ergebnis = $ts->connect();echo $ergebnis['success'] ? 'Verbindung hergestellt' : 'Verbindung konnte nicht hergestellt werden';if(count($ts->getDebugLog()) > 0) {    foreach($ts->getDebugLog() as $logEntry) {        echo $logEntry.'<br>';    }}?>


    Das Script gibt "Verbindung hergestellt" aus wenn alles geklappt hat, wenn nicht dann gibt es "Verbindung konnte nicht hergestellt werden" und die entsprechenden Fehlermeldungen aus.
    $ergebnis['success'] spreche ich an, weil die Rückgaben von Funktionsaufrufen immer das gleiche Muster haben bei der ts3admin.class:


    Code
    Array (     ['success'] => true/false (je nach dem ob die Ausführung erfolgreich war)     ['errors'] => entweder leer wenn kein Fehler aufgetreten ist oder ein Array mit Fehlermeldungen:          Array (               [0] => 'Falscher Port'               [1] => 'PHP-Script ist schwanger und kann deshalb nicht ausgeführt werden'          )     ['data'] => Liefert als Array oder Plaintext die Informationen die angefordert wurden zurück (siehe Doku  für beispiele))



    $ts->getDebugLog() ruft den globalen Fehlerspeicher der ts3admin.class ab, somit erhalte ich alle Fehler die aufgetreten sind beim Ausführen des kompletten PHP-Scripts.


    Das errors Element der entsprechenden Funktionsrückgabe gibt nämlich nur Fehler innerhalb des Funktionsaufrufes zurück.


    Theoretisch können nun beliebig Abfragen an den Server gesendet werden, welche Funktionen es dazu gibt bitte immer aus der DOKU entnehmen.


    Hier mal ein Beispielscript um eine Liste der aktiven Clients auszugeben:



    Weitere Beispielscripts folgen diesen Thread in naher Zukunft.