#!/usr/bin/perl -w
#########################################################################
# Author: Brian T. Hunter
# Date:   8/29/2023
# Script: bb-pcpu.pl
#
# 1. ADD at bottom of /etc/xymon/tasks.cfg and maybe clientlaunch.cfg
# 
# [pcup]
# 	ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg
# 	CMD $XYMONCLIENTHOME/ext/bb-pcpu.pl
# 	LOGFILE $XYMONCLIENTLOGS/bb-pcup.log
# 	INTERVAL 5m
#
# 2. ADD to bottom of /etc/xymon/xymonserver.cfg file
#
#    SPLINTNCV_pcpu="*:GAUGE
#
# 3. ADD to TEST2RRD variable  in /etc/xymon/xymonserver.cfg file
#    
#    At end, pcpu=ncv
#
# 4. ADD to GRAPHS variable  in /etc/xymon/xymonserver.cfg file
#
#    At end, pcpu::100
#
# 5. ADD to bottom of /etc/xymon/graphs.cfg
#
#      [pcpu]
#        FNPATTERN ^pcpu,(.*).rrd
#        TITLE CPU PER USER
#        YAXIS CPU % 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="pcpu";
my $COLOR="green";
my $MSG="CPU 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 $CPUPER=`ps -U $user -eo pcpu | sort -u | grep -v CPU | awk '{sum += \$1} END {print sum}'`;
	chomp($CPUPER);
	print OUT "$user:$CPUPER\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);