summaryrefslogtreecommitdiff
path: root/scripts/shell_stat.sh
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/shell_stat.sh')
-rw-r--r--scripts/shell_stat.sh99
1 files changed, 99 insertions, 0 deletions
diff --git a/scripts/shell_stat.sh b/scripts/shell_stat.sh
new file mode 100644
index 0000000..0ba64a3
--- /dev/null
+++ b/scripts/shell_stat.sh
@@ -0,0 +1,99 @@
+#!/bin/bash +x
+
+#cat stellar_fs4.json |jq
+#[
+# {
+# "name": "stellar",
+# "tags": {},
+# "fields": {
+# "dev_rx_pkts": 90099,
+# "dev_rx_bytes": 63205423,
+# "dev_tx_pkts": 90082,
+# "dev_tx_bytes": 63194807,
+# "keep_alive_pkts": 0,
+# "keep_alive_bytes": 0,
+# "raw_rx_pkts": 90099,
+# "raw_rx_bytes": 63205423,
+# "raw_tx_pkts": 90082,
+# "raw_tx_bytes": 63194807,
+# "ctrl_rx_pkts": 0,
+# "ctrl_rx_bytes": 0,
+# "ctrl_tx_pkts": 0,
+# "ctrl_tx_bytes": 0,
+# "tcp_sess_used": 480,
+# "tcp_sess_opening": 0,
+# "tcp_sess_active": 141,
+# "tcp_sess_closing": 339,
+# "tcp_sess_discard": 0,
+# "tcp_sess_closed": 0,
+# "udp_sess_used": 0,
+# "udp_sess_opening": 0,
+# "udp_sess_active": 0,
+# "udp_sess_closing": 0,
+# "udp_sess_discard": 0,
+# "udp_sess_closed": 0,
+# "tcp_sess_evicted": 0,
+# "udp_sess_evicted": 0,
+# "udp_pkts_nospace_bypass": 0,
+# "tcp_pkts_nospace_bypass": 0,
+# "tcp_pkts_nosess_bypass": 4769,
+# "tcp_pkts_duped_bypass": 1796,
+# "udp_pkts_duped_bypass": 382,
+# "udp_pkts_evctd_bypass": 0,
+# "tcp_seg_received": 49833,
+# "tcp_seg_expired": 0,
+# "tcp_seg_overlap": 3012,
+# "tcp_seg_no_space": 36452,
+# "tcp_seg_inorder": 6189,
+# "tcp_seg_reorded": 218,
+# "tcp_seg_buffered": 5967,
+# "tcp_seg_released": 218
+# },
+# "timestamp_ms": 1713053113549
+# }
+#]
+
+calculate() {
+ local curr_data=$1
+ local prev_data=$2
+
+ local fields=($(echo "$curr_data" | jq -r '.[].fields | to_entries | .[] | .key' | grep -v timestamp_ms))
+ local curr_ts=$(echo "$curr_data" | jq -r '.[].timestamp_ms')
+ local prev_ts=$(echo "$prev_data" | jq -r '.[].timestamp_ms')
+ local diff_ts=$(($curr_ts - $prev_ts))
+ local seconds=$((curr_ts / 1000))
+ local buffer=()
+
+ local curr_fileds=$(echo "$curr_data" | jq -r '.[].fields' | grep -v timestamp_ms)
+ local prev_fileds=$(echo "$prev_data" | jq -r '.[].fields' | grep -v timestamp_ms)
+
+ buffer+=("====================================$(date -d "@$seconds" +"%Y-%m-%d %H:%M:%S")====================================\n")
+ buffer+=("$(printf "%-30s" Field)$(printf "%-20s" Sum)$(printf "%-20s" Speed)\n")
+ local result=()
+ for field in "${fields[@]}"; do
+ local curr_val=$(echo "$curr_fileds" | grep $field | awk '{print $2}' | sed 's/,//g')
+ local prev_val=$(echo "$prev_fileds" | grep $field | awk '{print $2}' | sed 's/,//g')
+ local diff_val=$((curr_val - prev_val))
+ local speed=0
+ if [ $diff_ts -eq 0 ]; then
+ speed=0
+ else
+ speed=$((diff_val * 1000 / diff_ts))
+ fi
+ buffer+=("$(printf "%-30s" $field)$(printf "%-20s" $curr_val)$(printf "%-20s" $speed)\n")
+ done
+ buffer+=("===========================================================================================\n")
+ clear
+ echo -e "${buffer[@]}"
+}
+
+prev_data=""
+
+while true; do
+ curr_data=$(cat /opt/tsg/stellar/log/stellar_fs4.json)
+ if [ ! -z "$prev_data" ]; then
+ calculate "$curr_data" "$prev_data"
+ fi
+ prev_data="$curr_data"
+ sleep 1
+done