Report UDP network statistics (#1176)

* Report UDP network statistics

Fixes #1093

* Address review comments

* Address additional review comments

* Fix shellcheck errors
This commit is contained in:
Pankaj Garg 2018-09-10 15:52:08 -07:00 committed by GitHub
parent 2be0dbddbb
commit 1c17c6dd2b
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 58 additions and 1 deletions

View File

@ -311,7 +311,7 @@ stopNode() {
sudo snap remove solana sudo snap remove solana
fi fi
! tmux list-sessions || tmux kill-session ! tmux list-sessions || tmux kill-session
for pattern in solana- remote- oom-monitor; do for pattern in solana- remote- oom-monitor net-stats; do
pkill -9 \$pattern pkill -9 \$pattern
done done
" "

View File

@ -50,6 +50,7 @@ local)
esac esac
scripts/oom-monitor.sh > oom-monitor.log 2>&1 & scripts/oom-monitor.sh > oom-monitor.log 2>&1 &
scripts/net-stats.sh > net-stats.log 2>&1 &
! tmux list-sessions || tmux kill-session ! tmux list-sessions || tmux kill-session

View File

@ -87,6 +87,7 @@ local)
export LD_LIBRARY_PATH="$PWD/target/perf-libs:$LD_LIBRARY_PATH" export LD_LIBRARY_PATH="$PWD/target/perf-libs:$LD_LIBRARY_PATH"
scripts/oom-monitor.sh > oom-monitor.log 2>&1 & scripts/oom-monitor.sh > oom-monitor.log 2>&1 &
scripts/net-stats.sh > net-stats.log 2>&1 &
case $nodeType in case $nodeType in
leader) leader)

49
scripts/net-stats.sh Executable file
View File

@ -0,0 +1,49 @@
#!/bin/bash -e
#
# Reports network statistics
#
[[ $(uname) == Linux ]] || exit 0
cd "$(dirname "$0")"
# shellcheck source=scripts/configure-metrics.sh
source configure-metrics.sh
packets_received=0
packets_received_diff=0
receive_errors=0
receive_errors_diff=0
rcvbuf_errors=0
rcvbuf_errors_diff=0
update_netstat() {
declare net_stat
net_stat=$(netstat -suna)
declare stats
stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /packets received/ {tmp_var = $1} END { print tmp_var }')
packets_received_diff=$((stats - packets_received))
packets_received="$stats"
stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /packet receive errors/ {tmp_var = $1} END { print tmp_var }')
receive_errors_diff=$((stats - receive_errors))
receive_errors="$stats"
stats=$(echo "$net_stat" | awk 'BEGIN {tmp_var = 0} /RcvbufErrors/ {tmp_var = $2} END { print tmp_var }')
rcvbuf_errors_diff=$((stats - rcvbuf_errors))
rcvbuf_errors="$stats"
}
update_netstat
while true; do
update_netstat
report="packets_received=$packets_received_diff,receive_errors=$receive_errors_diff,rcvbuf_errors=$rcvbuf_errors_diff"
echo "$report"
./metrics-write-datapoint.sh "net-stats,hostname=$HOSTNAME $report"
sleep 60
done
exit 1

View File

@ -37,3 +37,4 @@ validator)
esac esac
snapctl start --enable solana.daemon-oom-monitor snapctl start --enable solana.daemon-oom-monitor
snapctl start --enable solana.daemon-net-stats

5
snap/snapcraft.yaml Normal file → Executable file
View File

@ -84,6 +84,11 @@ apps:
command: scripts/snap-config-to-env.sh $SNAP/scripts/oom-monitor.sh command: scripts/snap-config-to-env.sh $SNAP/scripts/oom-monitor.sh
plugs: plugs:
- network - network
daemon-net-stats:
daemon: simple
command: scripts/snap-config-to-env.sh $SNAP/scripts/net-stats.sh
plugs:
- network
parts: parts:
solana: solana: