Munin Plugin für Teamspeak 3 Server
Der erste (hoffentlich) nützliche Post in diesem Blog: Ein Plugin für das Monitoring Tool Munin. Nach der Umstellung meines Teamspeakservers auf die neue 3er Version funktionierte leider die Benutzerstatistik nicht mehr, die ich im 5 Minuten Takt von Munin erstellen lasse. Ein Googleausflug brachte keine Abhilfe, also hab ich eben selbst ein kleines Perlscript zusammen geschustert.
Das Script fragt über das Perl Modul Net::Telnet für jeden eingetragenen virtuellen Server die Anzahl der Benutzer beim TS3-Server ab und gibt sie für Munin verständlich wieder aus. Nicht mehr aber auch nicht weniger
Herraus kommen dann hübsche Graphen wie dieser hier:
Und hier gibt es das ganze Plugin zum Download: teamspeak_user
UPDATE 18.11.10: v0.4 ist online
Januar 31st, 2010
Vielen Dank für das Skript, war selber auf der Suche danach und habe es dann hier gefunden. Läuft so auch ohne Fehler durch, aber irgendwie… für die serverid 1 bekomme ich immer EINEN user online, obwohl der leer ist und andere mit 2-3 Usern drauf (id 4 und 5) zeigen immer 0 an. Irgendeine Idee?
Januar 31st, 2010
Okay ich hab es rausgefunden. Es funktionierte immer nur für den ersten virtuellen Server.
$telnet->waitfor(“/error id=0 msg=ok/”);
Habe ich noch mal nach der letzten else Klammer eingefügt. Zeile 58 müsste das gewesen sein. Dann klappt es auch mit den nachfolgenden virtuellen Servern. Wenn ich jetzt noch rausfinde, wieso jeder Server immer “eine” Connection mindestens hat bin ich glücklich.
Januar 31st, 2010
Danke für den Hinweis!
Hab das script mal angepasst.
Die Sache mit der falschen Anzahl der Nutzer ist mir gar nicht aufgefallen. Liegt daran, dass TS3 die Telnetanfrage als User mitzählt. Das sollte jetzt aber auch nicht mehr der Fall sein.
Februar 22nd, 2010
HeyHo,
Cooles Script! Wollte fragen ob man das script auch für’s http://www.cacti.net/ weiterverwenden darf?
Februar 25th, 2010
Da die open()-Funktion des Telnet-Moduls entweder “1″ (erfolgreich) oder eben nichts zurückgibt und damit eine nicht initialisierte Variable (hier ein Wert einer Funktion) mit der Zahl 1 verglichen wird, empfehle ich folgende Zeile im Script anzupassen.
if ($telnet->open(Host=>$hostname, Port=>$port) != 1) {
zu
if (!$telnet->open(Host=>$hostname, Port=>$port)) {
gruß balgo
März 11th, 2010
danke für den tip. habs angepasst.
März 10th, 2010
ich habe nicht soviel plan von munin ich habe verlinkt und die richte rechte gegeben ich bekomme diese fehler meldung
=================================
Can’t locate Net/Telnet.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.10.0 /usr/local/share/perl/5.10.0 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.10 /usr/share/perl/5.10 /usr/local/lib/site_perl .) at /etc/munin/plugins/teamspeak_user line 19.
BEGIN failed–compilation aborted at /etc/munin/plugins/teamspeak_user line 19.
2010/03/10-00:30:04 Plugin “teamspeak_user” exited with status 512. —-
März 11th, 2010
sieht so aus als wäre das perl-telnet modul (libnet-telnet-perl) nicht installiert. mit dem paketmanager deines vertrauens lässt sich das aber schnell und einfach nachholen. unter debian zum beispiel sollte ein einfaches “apt-get install libnet-telnet-perl” den fehler beheben.
März 11th, 2010
Coole Sache
März 11th, 2010
Danke, als Munin-Fan und TS3-User find ich das super.
März 12th, 2010
danke für eure hilfe gut das es euch gibst
,also es fukntioniert, ob wohl ein benutzer drauf ist hat er mir diese zahl ausgewertet ca 900,ich habe jedenfall hab ich keine virtuale server nur den ersten den es gbist mit volles slots
März 12th, 2010
ach war nur einmaliger fehler es fukntioniert besten danke für eure hilfe,was man machen köntne noch cpu last sowie ram auslasting vieleicht noch traffic auslastung was die slot oder user so für resorucen nutzen würde cool gewessen,also nicht alles im einem bild
Juli 29th, 2010
Hallo!
Ich habe da auch ein kleines Problem mit dem Script. Es zeigt mir nicht die Anzahl der Leute auf dem server an sondern immer eine 0. In der Kommandozeile auf dem server mit munin-run teamspeak_users bekomme ich leider (zum glück) keine fehlermeldung sondern nur das auf server ID1 0 User sind (wobei allerdings 5 eingeloggt sind) …
libnet-telnet-perl ist installiert
die Server basis ist eine aktuelle Debian minimal installation
alle anderen auswertungen munin seitig funktionieren
September 13th, 2010
geht seit kurzem nicht mehr
Trying 213.239.205.xx…
Connected to 213.239.205.xx.
Escape character is ‘^]’.
TS3
use sid=1
error id=0 msg=ok
serverinfo
error id=2568 msg=insufficient\sclient\spermissions failed_permid=8470
September 13th, 2010
sieht so aus, als ob deine “Guest” Gruppe nicht mehr die nötige Berechtigung hat. Such mal bei Rechte -> Servergruppen -> Guest -> Virtuelle Server -> Information -> Verbindungsinformationen anzeigen (b_virtualserver_connectioninfo_view). Das setzen dieser Permission sollte das Problem eigentlich lösen.
September 15th, 2010
b_virtualserver_connectioninfo_view ist jetzt gesetzt, bringt leider nichts, ich hab das problem bei allen teamspeakservern. Das Problem besteht seit irgendeinem der letzten ts3 server updates, weiß aber leider nicht mehr genau seit welchem, bei euch besteht das problem nicht?
September 15th, 2010
hab grad festgestellt das es an meinem Server liegt auf dem munin läuft, von einem anderem Server geht es.
hast du eine idee an was es am server liegen kann?
September 15th, 2010
ok, hat sich erledigt, ich habe einmal “use sid=0″ gemacht und dann ein “serverinfo”, da kam “error id=1024 msg=invalid\sserverID”, dann ein use sid=1 und seit dem geht serverinfo wieder. unklar.. aber ok
Oktober 2nd, 2010
Mit der neuen Teamspeak Server Version funktiuoniert das Plugin nicht mehr.
Oktober 2nd, 2010
huhu
ich denke das liegt ihr dran
! serverquery sends between the ts3 prompt also a new welcome message
Gruss
Oktober 2nd, 2010
Ich habs
Ändert einfach
$telnet->waitfor(“/TS3/”);
auf
$telnet->waitfor(“/Welcome to the TeamSpeak 3/”);
dann sollte es gehen
Gruss
Oktober 2nd, 2010
Das Problem tritt bei meinem Server zwar nicht auf, aber ich habs mal angepasst. Danke für die Info!
Oktober 2nd, 2010
Das Prob wahr das bei der Server Version: 3.0.0-beta29 nach TS3 ne Willkommens Meldung kommt und da gabs anscheinden Probs weil da hat er aufgehört und ist garnet erst aufs TS drauf.
Oktober 12th, 2010
Hello I did a dirty & quick patch for parsing virtual server name and using serverquery login for getting data from server. Not allowing Guests to read info.
I can send it to you if you want
November 4th, 2010
Hi,
your plugin is good, but now I get some errors. I have plugin 0.3. Do you have any solution? Thanks a lot.
munin-node.log:
[23975] Error output from teamspeak_user:
[23975] Use of uninitialized value $line in pattern match (m//) at /etc/munin/plugins/teamspeak_user line 58.
munin screen: http://faststone.rypi.cz/2010-11-04_173937.png
November 4th, 2010
sorry, i can´t reproduce this error. did you change anything in the script or to your ts-server config recently?
November 5th, 2010
Graph didn’t show any users, so I had to add this line to code:
$telnet->cmd(“login serveradmin mypassword”);
Now I know, I must add this line after.
$telnet->waitfor(“/error id=0 msg=ok/”);
Maybe it has been the problem. I’ll see tomorow.
November 11th, 2010
ich hatte das Problem das mir bei “munin-run teamspeak_user” immer der wert “0″ ausgegeben wurde, obwohl alles richtig eingstellt wurde (localhost,10011,1)
da die berechtigungen von telnet net ausgereicht haben um auf den query zugreifen zu können habe ich einfach einen user mit pw für das query login erstellt und das script um die zeile “login user password” erweitert, wie unten zu sehen ist.
$telnet->cmd(“use sid=$server”);
$telnet->cmd(“login user password”); // erweitert
$telnet->waitfor(“/error id=0 msg=ok/”);
$telnet->cmd(“serverinfo”);
nun gehts und passt alles, thx für das klasse plugin !!
Marcus
November 24th, 2010
nabend…
ich bin am verzweifeln, aber erstmal ein super tool wenn es endlich funktionieren will bei mir
in der munin update wird mir der fehler angezeigt:
[5969] – Client reported timeout in fetching of teamspeak3
und in der munin node wird mir der fehler angezeigt:
Plugin timeout: teamspeak3 : Interrupted system call
und hier nochmal zur veranschaulichung …..die bilder werden angezeigt aber nix passiert
http://yfrog.com/b7muninp
November 24th, 2010
was meldet denn “munin-run teamspeak_user” oder ein direktes Ausführen des Scripts mit “./teamspeak_user”?
November 24th, 2010
10.value 0
12.value 3
17.value 1
27.value 0
29.value 6
30.value 1
34.value 5
35.value 40
36.value 0
37.value 7
scheint alles soweit zu gehen
zeigt ja die Server Id´s mit user an
Dezember 19th, 2010
Howdy!
Super plugin. Habe nur leider das gleiche Problem wie Glotzkowski.
Obs an der Syntax liegt?
Januar 10th, 2011
Ich hatte den gleichen Fehler, einfach in der
/etc/munin/plugin-conf.d/munin-node
unten:
[teamspeak3_user]
timeout 60
einfügen und anschließend munin-node restarten ;D
Januar 10th, 2011
bzw
“teamspeak3_user” durch “teamspeak_user” ohne “” austauschen, also
[teamspeak_user]
timeout 60
Februar 2nd, 2011
Erst einmal vielen Dank für das tolle Script !
Meine Frage wäre … wie muß ich das Script verändern, damit auch noch eine Gesamtkurve aller Nutzer auf dem Server angezeigt wird. Also alle virtuellen Server zusammen ?
Februar 16th, 2011
Hallo,
vielen Dank auch von mir für das Script.
Allerdings habe ich noch eine Frage.
Wenn ich mehrere Virtuelle Server anzeigen möchte und im Script die Zeile ändere:
my @serverids = (1,4,6,7,8,9,10,11);
werden mir nur die letzten drei ID´s angezeigt. Siehe hier:
https://www.it-im-glas.de/munin/it-im-glas.de/services.it-im-glas.de/teamspeak_user-day.png
Ist für eine Ansicht von allen Servern noch eine Änderung in der Config nötig?
April 25th, 2011
Hallo.
Ich wollte mal fragen, wie ich das ganze eigentlich installiere?
also MUNIN selber hab ich zum laufen bekommen^^
aber wie bekomme ich das denn hier mit rein?
Können Sie vielleicht ein tut dazu schreiben?
Mfg.
Mai 1st, 2011
@Zaffa
/etc/munin/plugins Symlink rein und munin Restarten, schon läufts.
Hab mir mal erlaubt das ganze um zubauen das es mit MySQL DB läuft.
Das Geänderte Script hier: http://pastebin.com/wwjz3k4v
@Tim, hoffe ist dir recht, hab natürlich alle C’s von dir gelassen, nur die MySQL Funktionalität eingefügt. Bin allerdings auch kein Perl Pro, schreibe ehr in PHP.
September 12th, 2011
Hi ich hab ein Problem, ich wollte das Plugin installieren wie folgt:
1. /usr/share/munin/plugins/teampeak_user.pl erstellet und Sourcecode hinein
2. chmod 755 teamspeak_user.pl
3. ln -s teamspeak_user.pl /etc/munin/plugins/
4. /etc/init.d/munin-node restart
Problem -> nichts wird angeziegt, nicht mal nen leeres Diagramm
munin-run teamspeak_user.pl liefert “Unknown Service: teamspeak_user.pl”
Kann mir da jemand bitte helfen oder hat einer eine Idee woran es liegt???