monitors:termuser

no way to compare when less than two revisions

Differences

This shows you the differences between two versions of the page.


monitors:termuser [2010/01/21 02:58] (current) – created - external edit 127.0.0.1
Line 1: Line 1:
 +====== termuser ======
 +
 +^ Author | [[ gjohnson@trantor.org | Galen Johnson ]] |
 +^ Compatibility | Xymon 4.2 |
 +^ Requirements | Perl, Windows |
 +^ Download | None |
 +^ Last Update | 2007-06-30 |
 +
 +===== Description =====
 +termusers.pl is an external script that is run by the Big Brother client on a Windows Terminal Servers. It counts the number of users and determines how many are active or disconnected users.  It can be used to track multiple customers on a shared terminal server with minor modification.
 +
 +===== Installation =====
 +=== Client side ===
 +  - Add to BBWin.cfg in externals<code xml>
 +   <load value="C:\perl\bin\perl 'C:\Program Files\BBWin\ext\termusers.pl'" /></code> This may work as well <code xml>
 +   <load value="C:\perl\bin\perl ..\ext\termusers.pl" /></code>
 +
 +
 +=== Server side ===
 +  - Add 'termusers=ncv' to TEST2RRD in hobbitserver.cfg
 +  - Add  <code>NCV_termusers="ActiveSessions:GAUGE,DisconnectedSessions:GAUGE,*:NONE"</code> to hobbitserver.cfg.
 +  - Add 'termusers' to the GRAPHS definitions in hobbitserver.cfg.
 +  - Update hobbitgraph.cfg with: <code>[termusers]
 +        TITLE Terminal Server Users
 +        YAXIS #
 +        DEF:active=termusers.rrd:ActiveSessions:AVERAGE
 +        DEF:disc=termusers.rrd:DisconnectedSessions:AVERAGE
 +        LINE1:active#00CCCC:Active Users
 +        LINE2:disc#FF0000:Disconnected Users
 +        COMMENT:\n
 +        GPRINT:active:LAST:Active Users        \: %5.1lf%s (cur)
 +        GPRINT:active:MAX: \: %5.1lf%s (max)
 +        GPRINT:active:MIN: \: %5.1lf%s (min)
 +        GPRINT:active:AVERAGE: \: %5.1lf%s (avg)\n
 +        GPRINT:disc:LAST:Disconnected Users  \: %5.1lf%s (cur)
 +        GPRINT:disc:MAX: \: %5.1lf%s (max)
 +        GPRINT:disc:MIN: \: %5.1lf%s (min)
 +        GPRINT:disc:AVERAGE: \: %5.1lf%s (avg)\n
 +
 +</code>
 +
 +===== Source =====
 +
 +==== termusers.pl ====
 +<hidden onHidden="Show Code ⇲" onVisible="Hide Code ⇱">
 +<code perl>
 +######################################################################## 
 +# Name: termusers.pl
 +# Version: 1.0
 +# Author: Brandon Kitchen
 +# Purpose: termusers.pl is an external script that is run by the Big
 +#               Brother client on a Windows Terminal Servers. It counts
 +#               the number of users and determines how many are active
 +#               and disconnected users.
 +
 +# Changelog:
 +#     10-13-2006: Updated to work with Xymon (GMJ)
 +#                 Removed laard-grapher.cgi links
 +######################################################################## 
 +
 +use strict;
 +use Sys::Hostname;
 +
 +# Constants
 +use constant RED_ALERT    => 45;
 +use constant YELLOW_ALERT => 25;
 +use constant DEBUG        => 0;
 +
 +# Globals
 +use vars qw($total_users);
 +use vars qw($active_users $disc_users);
 +use vars qw($computer $service $line $userattr $bblogs);
 +use vars qw(@userinfo @query);
 +
 +# This is the name of the column in the BB display.
 +$service  = "termusers";
 +$bblogs   = "c:\\Program Files\\BBWin\\tmp";
 +
 +# Get the local system name.
 +$computer = hostname();
 +
 +# Setup where output goes.
 +if ( DEBUG ) {
 + open(STATUS, ">$service") || die "$!: file $service";
 +} else {
 + open(STATUS, ">$bblogs\\$service") || die "$!: file $bblogs\\$service";
 +}
 +
 +# Get the list of terminal users.
 +@query = `query user`;
 +
 +# Setup the counters.
 +$total_users = 0;
 +$active_users = 0;
 +$disc_users = 0;
 +
 +# Go through the list of users looking for different types (ie group1 vs group2)
 +for $line (@query) {
 + # Discard the header line.
 + next if $line =~ /USERNAME|^\s*$/;
 +
 + $total_users++;
 + print "Total: $total_users\n" if DEBUG;
 +
 + # Get rid of whitespace at the start of the line. Also fix 
 + # the special case user (console) that starts with <.
 + if ( $line =~ /^\s+/ )  { $line =~ s/^\s+//g; }
 + if ( $line =~ /^\>/  )  { $line =~ s/^\>//g;  }
 +
 + # Split the line into tokens and start counting special users.
 + @userinfo = split /\s+/, $line;
 + if ($line =~ /Active/) {
 + $active_users++;
 + } elsif ($line =~ /Disc/) {
 + $disc_users++;
 + }
 +}
 +
 +# Check the total_users count and alert as appropriate. Also alert red if
 +# any users in the Revoked OU have sessions on the system.
 +if ($total_users <= YELLOW_ALERT) {
 + print STATUS "green\n";
 +} elsif ($total_users <= RED_ALERT) {
 + print STATUS "yellow\n";
 +} else {
 + print STATUS "red\n";
 +}
 +print STATUS qq/There are $total_users terminal users on $computer.\n
 +Of the $total_users total users:\n
 +\t      Active Sessions:\t$active_users
 +\tDisconnected Sessions:\t$disc_users
 +
 +/;
 +
 +# Send the list of users.
 +print STATUS "\n\n@query\n";
 +
 +# All done now. 
 +close(STATUS);
 +
 +</code>
 +</hidden>
 +
 +===== Known  Bugs and Issues =====
 +  * No known bugs.
 +
 +===== To Do =====
 +  * Provide instructions for tracking disparate customers.
 +
 +===== Credits =====
 +  * Brandon Kitchen - I took it over because I know he isn't going to want to support it.
 +
 +===== Changelog =====
 +
 +  * **2007-06-30**
 +    * Initial release
  
  • monitors/termuser.txt
  • Last modified: 2010/01/21 02:58
  • by 127.0.0.1