Repository
Munin (contrib)
Last change
2018-09-18
Graph Categories
Family
manual
Capabilities
Keywords
Language
Shell

tc_packets_

Sadly there is no documentation for this plugin

#!/bin/sh
# -*- sh -*-
#
# This plugin is based on the if_ plugin.
#
# Parameters
#     None
#
# Magic markers (optional - used by munin-config and some installation
# scripts):
#
#%# family=manual
#%# capabilities=autoconf suggest


DEVICE=${0##*/tc_packets_}

mytc() {
	tc -s class show dev $1 | tr "\n," "| " | sed "s/ \+/ /g" | sed "s/ |/|/g" | sed "s/| /|/g" | sed "s/||/\n/g" | sed "s/|/ /g" | tr ":" "_" | grep -v -i sfq | sort -n
}

case $1 in
    autoconf)
	if [ ! -r /proc/net/dev ]; then
	    echo "no (/proc/net/dev not found)"
	elif ! which tc >/dev/null; then
	    echo "no (missing 'tc' executable)"
	else
	    echo yes
	fi
	exit 0
	;;
    suggest)
	if [ -r /proc/net/dev ]; then
	    awk '
                /^ *(eth|tap|bond|wlan|ath|ra|sw|eno|ens|enp|wlp|wl)[0-9]*/ {
                   split($0, a, /: */);
                   gsub(/^ +/,"",a[1]);
                   if (($2 > 0) || ($10 > 0)) print a[1]; }' /proc/net/dev
	fi
	exit 0
	;;
    config)

	echo "graph_order `mytc $DEVICE | awk '{ print $2 "_" $3 "_packets" }' | tr "\n" " "`"
	echo "graph_title $DEVICE TC traffic packets"
        echo 'graph_args --base 1000'
        echo 'graph_vlabel packets per ${graph_period}'
	echo 'graph_category network'
	echo "graph_info This graph shows the TC classes traffic packets of the $DEVICE network interface."

#	mytc $DEVICE | tr "_" " " | awk '{ print $2 "_" $3 "_" $4 "_packets.label " $2 "/" $3 ":" $4 "\n" $2 "_" $3 "_" $4 "_packets.type COUNTER\n" $2 "_" $3 "_" $4 "_packets.min 0\n" $2 "_" $3 "_" $4 "_packets.cdef " $2 "_" $3 "_" $4 ",8,*" }'
	mytc $DEVICE | tr "_" " " | awk '{ print $2 "_" $3 "_" $4 "_packets.label " $2 "/" $3 ":" $4 "\n" $2 "_" $3 "_" $4 "_packets.type DERIVE\n" $2 "_" $3 "_" $4 "_packets.min 0" }'
        exit 0
	;;
esac

# the root(s)
mytc $DEVICE | grep -v " parent " | awk "{ print \$2 \"_\" \$3 \"_packets.value \" \$16}"

# the child(s)
mytc $DEVICE | grep " parent " | awk "{ print \$2 \"_\" \$3 \"_packets.value \" \$21}"

exit 0