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