wulkau.de another useless blog…

17Jan/1039

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

veröffentlicht unter: Plugins Kommentar schreiben
Kommentare (39) Trackbacks (1)
  1. 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?

  2. 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. ;)

    • 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.

  3. HeyHo,

    Cooles Script! Wollte fragen ob man das script auch für’s http://www.cacti.net/ weiterverwenden darf?

  4. 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

  5. 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. —-

    • 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.

  6. Danke, als Munin-Fan und TS3-User find ich das super. :)

  7. 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

  8. 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

  9. 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

  10. 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

    • 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.

  11. 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?

    • 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?

      • 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 :)

  12. Mit der neuen Teamspeak Server Version funktiuoniert das Plugin nicht mehr.

  13. huhu

    ich denke das liegt ihr dran

    ! serverquery sends between the ts3 prompt also a new welcome message

    Gruss

  14. Ich habs :)

    Ändert einfach

    $telnet->waitfor(“/TS3/”);

    auf

    $telnet->waitfor(“/Welcome to the TeamSpeak 3/”);

    dann sollte es gehen :)

    Gruss

    • Das Problem tritt bei meinem Server zwar nicht auf, aber ich habs mal angepasst. Danke für die Info!

      • 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.

  15. 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 :-)

  16. 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

    • sorry, i can´t reproduce this error. did you change anything in the script or to your ts-server config recently?

      • 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. ;)

  17. 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

  18. 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

    • was meldet denn “munin-run teamspeak_user” oder ein direktes Ausführen des Scripts mit “./teamspeak_user”?

      • 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 :(

  19. Howdy!
    Super plugin. Habe nur leider das gleiche Problem wie Glotzkowski.
    Obs an der Syntax liegt?

  20. 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

    • bzw
      “teamspeak3_user” durch “teamspeak_user” ohne “” austauschen, also

      [teamspeak_user]
      timeout 60

      :D heißt bei mir nur anders^^

  21. 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 ?

  22. 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?

  23. 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.

  24. @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.

  25. 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???


Leave a comment

(required)