diff options
Diffstat (limited to 'scripts/shell_stat.sh')
| -rw-r--r-- | scripts/shell_stat.sh | 99 |
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 |
