Nutzt du Windows, Linux oder Mac? Welche Version?
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/GraphenAbgrenzungskriterien:
- 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:
ZitatHier 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.
Zitatdie 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.
ZitatPakete/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]
Code
Alles anzeigen$traffic_aktuell = $teamspeak->..... $traffic_letzteMessung = $mysql->..... if($traffic_aktuell->UPTIME > $traffic_letzteMessung->UPTIME) { SchreibeInSQL($traffic_aktuell & DifferenzAus Aktueller-LetzterMessung) }else{ //In diesem Fall wurde der Server neugestartet SchreibeInSQL($traffic_aktuell & DifferenzAus Aktueller-0) } if(ServerAus) { SchreibeInSQL(Alles 0) }
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_totalGruß
Stefan
-
Hups, ich merke gerade das ist nen Tippfehler im Programm, muss ich nachher mal updaten "Diesen Tool" Schande über mein Haupt^^
Edit: Hab den Tippfehler entfernt
-
Der neue Texteditor, Responsive Design usw. Das ist 1000 mal besser als vorher
-
-
-
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!
PHP
Alles anzeigen<?php /* Activate DoS Protection by par0noid.info */ //Please replace this with your informations! //Bitte mit deinen Einstellungen ersetzen! $ts3_ip = "<YOUR IP>"; $ts3_queryport = "10011"; $ts3_serveradmin = "serveradmin"; $ts3_password = "<YOUR SERVERADMIN PASSWORD>"; /* ################################################################################## ################################################################################## DO NOT EDIT UNDER THIS LINE! | NICHTS UNTER DIESER LINIE BEARBEITEN! ################################################################################## ################################################################################## */ function escapeText($text) { $text = str_replace("\t", '\t', $text); $text = str_replace("\v", '\v', $text); $text = str_replace("\r", '\r', $text); $text = str_replace("\n", '\n', $text); $text = str_replace("\f", '\f', $text); $text = str_replace(' ', '\s', $text); $text = str_replace('|', '\p', $text); $text = str_replace('/', '\/', $text); return $text; } function executeCommand($handle, $command) { fwrite($handle, $command."\n"); if(strpos(fgets($handle), 'error id=0 msg=ok') !== false) { return true; }else{ return false; } } $fp = fsockopen($ts3_ip, $ts3_queryport, $errno, $errstr, 5); if (!$fp) { echo "$errstr ($errno)<br />\n"; } else { if(strpos(fgets($fp), 'TS3') !== false) { fgets($fp); //trash if(executeCommand($fp, "login ".escapeText($ts3_serveradmin)." ".escapeText($ts3_password))) { if(executeCommand($fp, "instanceedit serverinstance_pending_connections_per_ip=2")) { echo "Aktivierung erfolgreich!"; }else{ echo "Aktivierung fehlgeschlagen!"; } }else{ echo "Login fehlgeschlagen!"; } }else{ echo 'Kein TS3-Server erreichbar!'; } fclose($fp); } ?>
-
Richtig gut, wie ich einfach 2x in einem Post erwähnt bin ohne es zu wissen Sauber jungs!
-
-
Jau super!
Ich bin zufrieden
-
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
-
Ich finde schade das der LiveChat nicht automatisch ausfährt wenn dort ungelesene Nachrichten sind
-
Von dem hab ich auch eins
-
Willkommen im Forum Jerome!
-
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
-
Die Ente ist gut ne
-
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.
PHP
Alles anzeigen/*-------SETTINGS-------*/ $ts3_ip = '127.0.0.1'; $ts3_queryport = 10011; $ts3_user = 'serveradmin'; $ts3_pass = 'password'; $ts3_port = 9987; /*----------------------*/ #Include ts3admin.class.php require("ts3admin.class.php"); #build a new ts3admin object $tsAdmin = new ts3admin($ts3_ip, $ts3_queryport); if($tsAdmin->getElement('success', $tsAdmin->connect())) { #login as serveradmin $tsAdmin->login($ts3_user, $ts3_pass); #select teamspeakserver $tsAdmin->selectServer($ts3_port); #check if id parameter is set if(isset($_GET['id']) and !empty($_GET['id']) and ctype_digit($_GET['id'])) { #kick player from server if(!$tsAdmin->clientKick($_GET['id'], 'server')) { #show error if client kick was failed echo '<script>alert(\'Client not found\')</script>'; } } #get clientlist $clients = $tsAdmin->clientList(); #print client count echo count($clients['data']) . ' clients on selected server<br><br>'; #print clients to browser foreach($clients['data'] as $client) { echo '<a href="clientkick.php?id='.$client['clid'].'">'.$client['client_nickname'].'</a><br>'; } }else{ echo 'Connection could not be established.'; } /** * This code retuns all errors from the debugLog */ if(count($tsAdmin->getDebugLog()) > 0) { foreach($tsAdmin->getDebugLog() as $logEntry) { echo '<script>alert("'.$logEntry.'");</script>'; } }
-
Es wäre vielleicht noch interessant zu erfahren/wissen, wie man es einrichtet/installiert.
Es liegt ne Anleitung in dem Archiv, sonst hätte ich es dabei gepostet
-
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
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:CodeArray ( ['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:
PHP
Alles anzeigen/*-------SETTINGS-------*/ $ts3_ip = '127.0.0.1'; $ts3_queryport = 10011; $ts3_port = 9987; /*----------------------*/ #Include ts3admin.class.php require_once("ts3admin.class.php"); #build a new ts3admin object $tsAdmin = new ts3admin($ts3_ip, $ts3_queryport); if($tsAdmin->getElement('success', $tsAdmin->connect())) { #select teamspeakserver $tsAdmin->selectServer($ts3_port); #get clientlist $clients = $tsAdmin->clientList(); #print client count echo count($clients['data']) . ' clients on selected server<br><br>'; #print clients to browser foreach($clients['data'] as $client) { echo $client['client_nickname'] . '<br>'; } }else{ echo 'Connection could not be established.'; } if(count($tsAdmin->getDebugLog()) > 0) { foreach($tsAdmin->getDebugLog() as $logEntry) { echo '<script>alert("'.$logEntry.'");</script>'; } }
Weitere Beispielscripts folgen diesen Thread in naher Zukunft.
-
Lol, packt der mein Avatar da rein^^