#!/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);