#!/usr/bin/ksh 
# nmon2WLE formatting script. Assumes AIX nmon files and ignores more then 150 disks
# Version 3, Nigel Griffiths, code example.
INPUT=$1
INFO=/tmp/nmon2WLE.$$

echo INPUT file is $INPUT
grep "AAA,host,"  $INPUT | awk -F, '{ printf "%s LPAR name\n", $3 }'
grep "AAA,SerialNumber,"  $INPUT | awk -F, '{ printf "%s SerialNumber\n", $3 }'

grep ^CPU_ALL,T $INPUT | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; MAX=0; } {LINES+=1; COUNT+=($3+$4); if( MAX < ($3+$4)) MAX=$3+$4; } END {printf "%5.1f CPU Utilisation percent Average (User+Sys)\n%5.1f CPU Utilisation percent Maximum \n", COUNT/LINES, MAX}'

grep ",lparstat -i," $INPUT | sed 's/ //g' | sed 's/\"//g' >$INFO
grep "OnlineVirtualCPUs" $INFO |                    awk -F: '{printf "%s Virtual CPUs\n", $2}'
grep "EntitledCapacity"  $INFO | grep -v "Pool"   | awk -F: '{printf "%s Entitlement\n", $2}'
grep Mode $INFO | grep -v Memory | grep -v Saving | awk -F: '{printf "%s CPU Mode Note:If Uncapped then ActiveCores=VirtualCPUs If Capped then ActiveCores=Entitlement\n", $2}'
# remove the temporary file
rm  $INFO

grep ",online Memory," $INPUT | awk -F, '{ printf "%s MB of memory\n", $4 }'

grep "^DISK" $INPUT >$INFO
READS=$(grep ^DISKRIO,T $INFO | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i } } END {printf "%.1f\n", COUNT/LINES}' )
READSMAX=$(grep ^DISKRIO,T $INFO | awk -F"," 'BEGIN { COUNT=0.0 } {LINES+=1; for(i=3; i<=NF; i++){if(COUNT < $i) COUNT=$i ; } } END {printf "%.1f\n", COUNT}' )
READKB=$(grep ^DISKREAD,T $INFO | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i } } END {printf "%.1f\n", COUNT/LINES}' )

integer READSIZE
READSIZE=$READKB/$READS*1024
echo $READS Disk Read IOs per second Average
echo $READSMAX Disk Read IOs per second Maximum
echo $READKB DiskRead KB per second Average 
echo $READSIZE DiskRead Size in bytes Average

WRITES=$(grep ^DISKWIO,T $INFO | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i } } END {printf "%.1f\n", COUNT/LINES}' )
WRITESMAX=$(grep ^DISKWIO,T $INFO | awk -F"," 'BEGIN { COUNT=0.0 } {LINES+=1; for(i=3; i<=NF; i++){if(COUNT < $i) COUNT=$i ; } } END {printf "%.1f\n", COUNT}' )
WRITEKB=$(grep ^DISKWRITE,T $INFO | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i } } END {printf "%.1f\n", COUNT/LINES}' )

integer WRITESIZE
WRITESIZE=$WRITEKB/$WRITES*1024
echo $WRITES Disk Write IOs per second Average
echo $WRITESMAX Disk Write IOs per second Maximum
echo $WRITEKB Disk Write per second Average 
echo $WRITESIZE Disk Write Size in bytes Average
rm $INFO

grep ^BBBV $INPUT | grep "TOTAL PPs:" | sed 's/(/,/' | sed 's/ megabytes/,/' | awk -F"," 'BEGIN { COUNT=0.0 } {COUNT+=$4;} END {printf "%.1f Storage GB in Volume groups\n", COUNT/1024}' 

grep ^NET,T $INPUT | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; MAX=0.0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i; if(MAX < $i) MAX=$i; } } END {printf "%5.1f Network MB/s Average\n%5.1f Network MB/s Maximum\n", COUNT/LINES, MAX}'

grep ^NETPACKET,T $INPUT | awk -F"," 'BEGIN { COUNT=0.0; LINES=0; MAX=0.0; } {LINES+=1; for(i=3; i<=NF; i++){COUNT+=$i; if(MAX < $i) MAX=$i; } } END {printf "%5.1f Network OP/s Average\n%5.1f Network OP/s Maximum\n", COUNT/LINES, MAX}'
