#!/usr/bin/perl -w
#########################################################################
# Author: Brian T. Hunter
# Date:   8/29/2023
# Script: bb-pmem.pl
#
# 1. ADD at bottom of tasks.cfg and maybe clientlaunch.cfg
# 
# [pcup]
# 	ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg
# 	CMD $XYMONCLIENTHOME/ext/bb-pmem.pl
# 	LOGFILE $XYMONCLIENTLOGS/bb-pmem.log
# 	INTERVAL 5m
#
# 2. ADD to bottom of /etc/xymon/xymserver.cfg file
#
#    SPLINTNCV_pmem="*:GAUGE"
#
# 3. ADD to TEST2RRD variable in /etc/xymon/xymonserver.cfg file
#
#   At end, pmem=ncv
#
# 4. ADD to GRAPHS variable in /etc/xymon/xymonserver.cfg file
#
#   At end, pmem::100
#
# 5. ADD to bottome of /etc/xymon/graphs.cfg
#
# [pmem]
#        FNPATTERN ^pmem,(.*).rrd
#        TITLE MEMORY PER USER
#        YAXIS MEMORY % Used
#        DEF:***@RRDIDX@=@RRDFN@:lambda:AVERAGE
#        LINE2:***@RRDIDX@#@COLOR@:@RRDPARAM@
#        GPRINT:***@RRDIDX@:LAST: \: %3.1lf (cur)
#        GPRINT:***@RRDIDX@:MAX: \: %3.1lf (max)
#        GPRINT:***@RRDIDX@:MIN: \: %3.1lf (min)
#        GPRINT:***@RRDIDX@:AVERAGE: \: %3.1lf (avg)\n
#
#
# 6. THEN RESTART XYMON:  sudo systemctl restart xymon
#
# #######################################################################
my $COLUMN="pmem";
my $COLOR="green";
my $MSG="MEMORY PER USER";
my $MACHINE=`hostname`; chomp($MACHINE);
my $BB="/usr/lib/xymon/server/bin/xymon";
my $BBDISP="127.0.0.1";

my $LOGFILE="/tmp/$COLUMN.log";
unlink($LOGFILE);
open(OUT,">>$LOGFILE") or warn "Unable to write to $LOGFILE:$!\n";

my @USERS=`ps -efa | awk '{print \$1}' | sort -u | egrep -v "UID|Debian|message|ntp"`;
foreach my $user (@USERS){
	chomp($user);
	my $MEMPER=`ps -U $user -eo pmem | sort -u | grep -v MEM | awk '{sum += \$1} END {print sum}'`;
	chomp($MEMPER);
	print OUT "$user:$MEMPER\n";
}
close(OUT);

$CMD="$BB $BBDISP \"status $MACHINE.$COLUMN $COLOR `date` \n $MSG\n `/bin/cat $LOGFILE`\" \n";
print "$CMD\n";
system($CMD);

exit(0);