#!/bin/bash
# Description:
# Convert CHM files to more human readable format like vmstat, ....
# - move the MEM Low and CPU high message to the end of the line
# - diplay data in a tabular format
#
# Usage : ./print_sys.sh grac41_CHMOS
# grac41_CHMOS = oclumon output from : tfactl diagcollect
#
# Run a report for System Metrics from 16.01.00 - 16.01.59
# % ~/print_sys.sh grac41_CHMOS | egrep '#pcpus|cpuq:|03-22-14 10.00'
# Output
# pcpus: 2 #vcpus: 2 cpuht: N chipname: Intel(R) swaptotal: 5210108 physmemtotal: 4354292 #sysfdlimit: 6815744 #disks: 27 #nics: 6
# cpu: cpuq: memfree: mcache: swapfree: ior: iow: ios: swpin: swpout: pgin: pgout: netr: netw: procs: rtprocs: #fds: nicErrors:
# 03-22-14 10.00.03 2.60 6 86356 215692 1811240 16 1 11 6 0 17 1 41 7 378 15 19648 0
# 03-22-14 10.00.13 5.27 1 89492 224720 1785120 8444 8528 166 2764 3414 4437 3497 41 12 381 15 19680 0
# 03-22-14 10.00.18 5.87 1 96180 227256 1776196 7682 5508 534 2004 2400 3762 2524 47 10 388 15 19712 0
# ..
#
# ...
echo "-> File searched: " $1
# echo "-> Search Str 1 : " $2
# pcpus indicates a SYSTEM Metric report
search1="pcpus"
#
# remove any ; from each line - simplifies processing
cat $1 | sed 's/;/ /g' | sed 's/'\''//g' | awk 'BEGIN { cnt=0; }
/Node:/ { Node=$0; Nodet1=$4; Nodet2=$5; }
/'$search1'/ {
# printf("%s \n", $1 );
if ( $1=="#pcpus:" )
{
if ( cnt==0 )
{
cnt++;
# print header: number of CPUs and Chip Identidy
printf ("%s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s %s \n", \
$1, $2, $3, $4, $5, $6, $7, $8, $21, $22, $15, $16, $47, $48, $49, $50, $51, $52);
printf (" cpu: cpuq: memfree: mcache: swapfree: ior: iow: ios: swpin:");
printf (" swpout: pgin: pgout: netr: netw: procs: rtprocs: #fds: nicErrors: \n" );
}
cnt++;
for (i = 1; i <= NF; i++)
{
if ($i=="cpu:" )
{
# printf ("%s ", $(i+1) );
memlow = "";
cpu=$(i+1);
i++;
}
else if ($i=="cpuq:" )
{
# printf ("%s ", $(i+1) );
cpuq=$(i+1);
i++;
}
else if ($i=="physmemfree:" )
{
physmemfree=$(i+1);
i++;
}
else if ($i=="mcache:" )
{
mcache=$(i+1);
i++;
}
else if ($i=="swapfree:" )
{
swapfree=$(i+1);
i++;
}
else if ($i=="ior:" )
{
ior=$(i+1);
i++;
}
else if ($i=="iow:" )
{
iow=$(i+1);
i++;
}
else if ($i=="ios:" )
{
ios=$(i+1);
i++;
}
else if ($i=="swpin:" )
{
swpin=$(i+1);
i++;
}
else if ($i=="swpout:" )
{
swpout=$(i+1);
i++;
}
else if ($i=="pgin:" )
{
pgin=$(i+1);
i++;
}
else if ($i=="pgout:" )
{
pgout=$(i+1);
i++;
}
else if ($i=="netr:" )
{
netr=$(i+1);
i++;
}
else if ($i=="netw:" )
{
netw=$(i+1);
i++;
}
else if ($i=="procs:" )
{
procs=$(i+1);
i++;
}
else if ($i=="rtprocs:" )
{
rtprocs=$(i+1);
i++;
}
else if ($i=="#fds:" )
{
fds=$(i+1);
i++;
}
else if ($i=="nicErrors:" )
{
nicErrors=$(i+1);
i++;
}
else if ($i== "total-mem")
{
# Record detection for LOW memory indication
# Available memory (physmemfree 91516 KB + swapfree 185276 KB) on node grac41 is Too Low (< 10% of total-mem + total-swap)
# Search for total-mem and select i-2 field which is 10% is the above case
#
memlow = $(i-2);
# printf(" **** MEM low: < %s *** " , $(i-2) );
}
}
printf ("%s %s %6s %3d %9s %9s %9s %5s %5s %5s %5s %5s %5s %5s %5d %5d %5d %5d %5d %5d ", \
Nodet1, Nodet2, cpu, cpuq, physmemfree, mcache, swapfree, ior, iow, ios, swpin, swpout, pgin,pgout, netr, netw, procs, rtprocs, fds, nicErrors );
if ( cpu > 90 )
{
# Record detection for HIGH CPU usage indication
printf (" CPU > 90% ");
}
if ( memlow != "" )
{
printf(" MEMLOW < %s", memlow);
}
printf("\n");
# printf("%s \n", $1 );
# printf("%s %s %6s %3s %10s %10s %10s %5s %5s %5s %5s %5s %5s %5s %8s %8s %5s %5s %5s %5s \n", \
# Nodet1, Nodet2, $10, $12, $14, $18, $20, $24,$26,$28, $30, $32, $34 , $36, $38, $40, $42, $44, $46, $54 );
}
} '
No comments:
Post a Comment