100 lines
3.1 KiB
Bash
100 lines
3.1 KiB
Bash
|
|
#!/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) / 1000))
|
||
|
|
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 / 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
|