1
1
#! /bin/sh
2
2
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
16
70
fi
17
71
18
72
read -d ' ' JSON << EOF
@@ -37,4 +91,4 @@ read -d '' JSON << EOF
37
91
}
38
92
EOF
39
93
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