#!@@GOODSH@@
# -*- sh -*-

: << =cut

=head1 NAME

netstat - Plugin to monitor network connections

=head1 CONFIGURATION

No configuration

=head1 AUTHOR

Unknown author

=head1 LICENSE

GPLv2

=head1 BUGS

=over 4

=item SuSE: passive connections rejected

At least one SuSE netstat appears to report "passive connections
rejected because of time stamp"

We have never seen that, patch requested.

=back

=head1 MAGIC MARKERS

 #%# family=auto
 #%# capabilities=autoconf

=cut

. $MUNIN_LIBDIR/plugins/plugin.sh

if [ "$1" = "autoconf" ]; then
        if ( netstat -s 2>/dev/null >/dev/null ); then
                echo yes
                exit 0
        else
                if [ $? -eq 127 ]
                then
                        echo "no (netstat program not found)"
                        exit 0
                else
                        echo no
                        exit 0
                fi
        fi
fi

if [ "$1" = "config" ]; then

        echo 'graph_title Netstat'
        echo 'graph_args --base 1000 --logarithmic'
        echo 'graph_vlabel TCP connections'
        echo 'graph_category network'
        echo 'graph_period second'
        echo 'graph_info This graph shows the TCP activity of all the network interfaces combined.'
        echo 'active.label active'
        echo 'active.type DERIVE'
        echo 'active.max 50000'
        echo 'active.min 0'
        echo 'active.info The number of active TCP openings per second.'
        print_warning active
        print_critical active
        echo 'passive.label passive'
        echo 'passive.type DERIVE'
        echo 'passive.max 50000'
        echo 'passive.min 0'
        echo 'passive.info The number of passive TCP openings per second.'
        print_warning passive
        print_critical passive
        echo 'failed.label failed'
        echo 'failed.type DERIVE'
        echo 'failed.max 50000'
        echo 'failed.min 0'
        echo 'failed.info The number of failed TCP connection attempts per second.'
        print_warning failed
        print_critical failed
        echo 'resets.label resets'
        echo 'resets.type DERIVE'
        echo 'resets.max 50000'
        echo 'resets.min 0'
        echo 'resets.info The number of TCP connection resets.'
        print_warning resets
        print_critical resets
        echo 'established.label established'
        echo 'established.type GAUGE'
        echo 'established.max 50000'
        echo 'established.info The number of currently open connections.'
        print_warning established
        print_critical established
        exit 0
fi

netstat -s | awk '
/active connections ope/  { print "active.value " $1 }
/passive connection ope/  { print "passive.value " $1 }
/failed connection/       { print "failed.value " $1 }
/connection resets/       { print "resets.value " $1 }
/connections established/ { print "established.value " $1 }'
