87 lines
2.7 KiB
Bash
87 lines
2.7 KiB
Bash
#!/bin/bash
|
|
#
|
|
# This script gathers a slew of statistics on the current VM/host and emits a propertyname=JSON object stream of the summary
|
|
|
|
function emit(){
|
|
key="$1"
|
|
val="$2"
|
|
if [ "$3" = "stripBrackets" ]; then
|
|
val=`echo "${val}" | sed 's/^[[]//' | sed 's/[]]$//'`
|
|
fi
|
|
echo "\"${key}\":${val}"
|
|
}
|
|
|
|
MONGO_QUIET=true
|
|
source /sl/bin/sequencelogic-helpers.sh 2>&1 >/dev/null
|
|
|
|
### file systems
|
|
(
|
|
FSROOT=$(/sl/bin/sequencelogic-fs-usage.sh / 2>/dev/null)
|
|
emit fs_root "$FSROOT" stripBrackets
|
|
|
|
FSTMP=$(/sl/bin/sequencelogic-fs-usage.sh /sl/tmp 2>/dev/null)
|
|
emit fs_tmp "$FSTMP" stripBrackets
|
|
|
|
FSSYNC=$(/sl/bin/sequencelogic-fs-usage.sh /sl/SLSync 2>/dev/null)
|
|
emit fs_slsync "$FSSYNC" stripBrackets
|
|
|
|
### cpu
|
|
if [ "$PLATFORM" = "Darwin" ]; then
|
|
CPU=`iostat -n0 -c1 | tail -1`
|
|
else
|
|
CPU=`iostat -c 2 2 | grep -v '^$' | tail -1`
|
|
fi
|
|
CPU="$(echo -e "${CPU}" | sed -e 's/^[[:space:]]*//')"
|
|
CPU="$(echo "${CPU}" | awk '{ printf "{\"system\":%d, \"user\":%d}", $2, $1 }')"
|
|
emit cpu "${CPU}"
|
|
|
|
### memory
|
|
if [ "$PLATFORM" = "Darwin" ]; then
|
|
MEMTOT="$(sysctl hw.memsize | cut -d' ' -f2)"
|
|
#vm.swapusage: total = 8192.00M used = 6739.25M free = 1452.75M (encrypted)
|
|
SWAPTOT="$(sysctl vm.swapusage | awk '{gsub("M","",$4); print $4;}')"
|
|
SWAPFREE="$(sysctl vm.swapusage | awk '{gsub("M","",$10); print $10;}')"
|
|
#echo "st ${SWAPTOT} sf ${SWAPFREE}"
|
|
vm_stat | sed 's/[.]//g' | awk -v MEMTOT="${MEMTOT}" -v SWAPTOT="${SWAPTOT}" -v SWAPFREE="${SWAPFREE}" '
|
|
BEGIN { used=0; free=0; }
|
|
/Pages (active|speculative|throttled|wired down)/ { gsub(/^.*:[ \t]*/,""); used = used + $1;
|
|
#printf "used %ld %ld\n", $1, used;
|
|
next;}
|
|
/Pages (free|inactive|purgeable)/ { gsub(/^.*:[ \t]*/,""); free = free + $1;
|
|
#printf "free %ld %ld\n", $1, free;
|
|
next;}
|
|
{ next }
|
|
END { printf "\"mem\":{\"total\": %ld, \"free\":%ld, \"used\":%ld, \"swap_total\":%ld, \"swap_free\":%ld}\n", MEMTOT, free*4096, used*4096, SWAPTOT*1024*1024, SWAPFREE*1024*1024 }
|
|
'
|
|
else
|
|
cat /proc/meminfo | awk '
|
|
BEGIN { total=0; free=0; swaptot=0; swapfree=0; }
|
|
/MemTotal/ { total = $2; }
|
|
/MemFree|Buffers|Cached/ { free += $2; }
|
|
/SwapTotal/ { swaptot += $2; }
|
|
/SwapFree/ { swapfree += $2; }
|
|
END { printf "\"mem\":{\"total\": %ld, \"free\":%ld, \"used\":%ld, \"swap_total\":%ld, \"swap_free\":%ld}\n", total*1024, free*1024, (total*1024-free*1024), swaptot*1024, swapfree*1024 }
|
|
'
|
|
fi
|
|
|
|
### cores
|
|
if [ "$PLATFORM" = "Darwin" ]; then
|
|
CORES=$(/usr/sbin/sysctl -n hw.logicalcpu)
|
|
else
|
|
CORES=$(nproc)
|
|
fi
|
|
emit cores "${CORES}"
|
|
|
|
### load average
|
|
LOADAVG=$(uptime | sed 's/^.*load average[s]*:[ ]*//' | awk '{gsub(/,/,"",$2); print $2}') # 5 min avg
|
|
emit loadavg "${LOADAVG}"
|
|
) | awk '
|
|
BEGIN {comma=""; printf "{\n";}
|
|
{
|
|
printf " %s%s\n", comma, $0
|
|
comma=","
|
|
}
|
|
END {printf "}\n"}
|
|
'
|
|
|
|
exit 0; |