Skip to content

Commit daa3d8e

Browse files
committed
dont print all stats as default (add more options for selecting system stats to print)
1 parent 7b9ce79 commit daa3d8e

File tree

1 file changed

+68
-14
lines changed

1 file changed

+68
-14
lines changed

scripts/systemStats.sh

+68-14
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,72 @@
11
#!/bin/sh
22

3-
MEMORY_STATS=$(cat /proc/meminfo | sed 's/://g' | awk '{ print "\""$1"\":{\"value\":"$2",\"unit\":\""$3"\"},"}' | tr -d '\n' | sed 's/,$//')
4-
IO_STATS=$(iostat -d -k | grep "[0-9]$" | sed 's/,/./g' | awk '{print "\""$1"\":{\"tps\":"$2",\"read/s\":"$3",\"wrtn/s\":"$4",\"read\":"$5",\"wrtn\":"$6"},"}' | tr -d '\n' | sed 's/,$//')
5-
DISK_STATS=$(df -P | grep -v "^tmpfs" | grep -v "^shm" | grep -v "^run" | grep -v "^dev" | sed 1d | awk '{print "\""$6"\":{\"fs\":\""$1"\",\"used\":"$3",\"free\":"$4",\"total\":"$3+$4"},"}' | tr -d '\n' | sed 's/,$//')
6-
NETWORK_STATS=$(ifstat -j | sed 's/^{//' | sed 's/}$//')
7-
LOAD_AVG=$(uptime | grep -o "load average: .*$" | cut -d\: -f2 | sed 's/, / /g' | sed 's/,/./g' | awk '{print $1", "$2", "$3}')
8-
9-
TOP_OUT=$(echo "1" | top -n1 2> /dev/null | grep "^CPU" | sed 's/CPU//g' | sed 's/\%//g' | awk '{print "\""$1"\":{\"%usr\":"$2",\"%sys\":"$4",\"%nice\":"$6",\"%idle\":"$8",\"%iowait\":"$10",\"%irq\":"$12",\"%soft\":"$14"},"}' | tr -d '\n')
10-
11-
if [ "$TOP_OUT" != "" ]; then
12-
CPU_ALL=$(top -n1 | grep "^CPU" | sed 's/CPU//g' | sed 's/\%//g' | awk '{print "\"all\":{\"%usr\":"$2",\"%sys\":"$4",\"%nice\":"$6",\"%idle\":"$8",\"%iowait\":"$10",\"%irq\":"$12",\"%soft\":"$14"}"}' | tr -d '\n' | sed 's/,$//')
13-
CPU_STATS=${TOP_OUT}${CPU_ALL}
14-
else
15-
CPU_STATS=$(mpstat -P ALL | grep "^[0-9]" | grep -v "CPU" | sed 's/,/./g' | awk '{print "\""$2"\":{\"%usr\":"$3",\"%nice\":"$4",\"%sys\":"$5",\"%iowait\":"$6",\"%irq\":"$7",\"%soft\":"$8",\"%steal\":"$9",\"%guest\":"$10",\"%idle\":"$11"},"}' | tr -d '\n' | sed 's/,$//')
3+
PRINT_CPU=0
4+
PRINT_MEMORY=0
5+
PRINT_IO=0
6+
PRINT_DISK=0
7+
PRINT_NETWORK=0
8+
PRINT_LOAD=0
9+
10+
while getopts 'acmidnl' OPTION; do
11+
case $OPTION in
12+
a)
13+
PRINT_CPU=1
14+
PRINT_MEMORY=1
15+
PRINT_IO=1
16+
PRINT_DISK=1
17+
PRINT_NETWORK=1
18+
PRINT_LOAD=1
19+
;;
20+
c)
21+
PRINT_CPU=1
22+
;;
23+
m)
24+
PRINT_MEMORY=1
25+
;;
26+
i)
27+
PRINT_IO=1
28+
;;
29+
d)
30+
PRINT_DISK=1
31+
;;
32+
n)
33+
PRINT_NETWORK=1
34+
;;
35+
l)
36+
PRINT_LOAD=1
37+
;;
38+
esac
39+
done
40+
41+
if [ $PRINT_MEMORY -eq 1 ]; then
42+
MEMORY_STATS=$(cat /proc/meminfo | sed 's/://g' | awk '{ print "\""$1"\":{\"value\":"$2",\"unit\":\""$3"\"},"}' | tr -d '\n' | sed 's/,$//')
43+
fi
44+
45+
if [ $PRINT_IO -eq 1 ]; then
46+
IO_STATS=$(iostat -d -k | grep "[0-9]$" | sed 's/,/./g' | awk '{print "\""$1"\":{\"tps\":"$2",\"read/s\":"$3",\"wrtn/s\":"$4",\"read\":"$5",\"wrtn\":"$6"},"}' | tr -d '\n' | sed 's/,$//')
47+
fi
48+
49+
if [ $PRINT_DISK -eq 1 ]; then
50+
DISK_STATS=$(df -P | grep -v "^tmpfs" | grep -v "^shm" | grep -v "^run" | grep -v "^dev" | sed 1d | awk '{print "\""$6"\":{\"fs\":\""$1"\",\"used\":"$3",\"free\":"$4",\"total\":"$3+$4"},"}' | tr -d '\n' | sed 's/,$//')
51+
fi
52+
53+
if [ $PRINT_NETWORK -eq 1 ]; then
54+
NETWORK_STATS=$(ifstat -j | sed 's/^{//' | sed 's/}$//')
55+
fi
56+
57+
if [ $PRINT_LOAD -eq 1 ]; then
58+
LOAD_AVG=$(uptime | grep -o "load average: .*$" | cut -d\: -f2 | sed 's/, / /g' | sed 's/,/./g' | awk '{print $1", "$2", "$3}')
59+
fi
60+
61+
if [ $PRINT_CPU -eq 1 ]; then
62+
TOP_OUT=$(echo "1" | top -n1 2> /dev/null | grep "^CPU" | sed 's/CPU//g' | sed 's/\%//g' | awk '{print "\""$1"\":{\"%usr\":"$2",\"%sys\":"$4",\"%nice\":"$6",\"%idle\":"$8",\"%iowait\":"$10",\"%irq\":"$12",\"%soft\":"$14"},"}' | tr -d '\n')
63+
64+
if [ "$TOP_OUT" != "" ]; then
65+
CPU_ALL=$(top -n1 | grep "^CPU" | sed 's/CPU//g' | sed 's/\%//g' | awk '{print "\"all\":{\"%usr\":"$2",\"%sys\":"$4",\"%nice\":"$6",\"%idle\":"$8",\"%iowait\":"$10",\"%irq\":"$12",\"%soft\":"$14"}"}' | tr -d '\n' | sed 's/,$//')
66+
CPU_STATS=${TOP_OUT}${CPU_ALL}
67+
else
68+
CPU_STATS=$(mpstat -P ALL | grep "^[0-9]" | grep -v "CPU" | sed 's/,/./g' | awk '{print "\""$2"\":{\"%usr\":"$3",\"%nice\":"$4",\"%sys\":"$5",\"%iowait\":"$6",\"%irq\":"$7",\"%soft\":"$8",\"%steal\":"$9",\"%guest\":"$10",\"%idle\":"$11"},"}' | tr -d '\n' | sed 's/,$//')
69+
fi
1670
fi
1771

1872
read -d '' JSON << EOF
@@ -37,4 +91,4 @@ read -d '' JSON << EOF
3791
}
3892
EOF
3993

40-
echo ${JSON} | jq -c
94+
echo ${JSON} | jq 'walk(if type == "object" then with_entries(select(.value | (. != {} and . != []))) else . end)' -c

0 commit comments

Comments
 (0)