- Repository
- Munin (master)
- Last change
- 2018-08-17
- Graph Categories
- Family
- snmpauto
- Capabilities
- Language
- Perl
- License
- GPL-2.0-only
- Authors
snmp__netstat
Name
snmp__netstat - Munin plugin to monitor the number of TCP network connections on an SNMP device.
Applicable Systems
Any SNMP-capable device that reports the TCP-MIB::tcpConnState column of tcpConnTable.
Configuration
As a rule SNMP plugins need site specific configuration. The default configuration (shown here) will only work on insecure sites/devices.
[snmp_*]
env.version 2
env.community public
In general SNMP is not very secure at all unless you use SNMP version 3 which supports authentication and privacy (encryption). But in any case the community string for your devices should not be “public”.
Please see ‘perldoc Munin::Plugin::SNMP’ for further configuration information.
Interpretation
The total number of TCP connections in each state. See RFC 793 or the detailed information on the graph page for the meaning of each state.
Mib Information
This plugin requires support for the TCP-MIB (RFC 4022). It reports the contents of the tcpConnState column of tcpConnTable.
Magic Markers
#%# family=snmpauto
#%# capabilities=snmpconf
Bugs
None known.
Author
Copyright (C) 2006 Lars Strand
Tidied and documented by Matthew Boyle in 2010.
License
GPLv2.
#!/usr/bin/perl -w
=head1 NAME
snmp__netstat - Munin plugin to monitor the number of TCP network
connections on an SNMP device.
=head1 APPLICABLE SYSTEMS
Any SNMP-capable device that reports the TCP-MIB::tcpConnState
column of tcpConnTable.
=head1 CONFIGURATION
As a rule SNMP plugins need site specific configuration. The default
configuration (shown here) will only work on insecure sites/devices.
[snmp_*]
env.version 2
env.community public
In general SNMP is not very secure at all unless you use SNMP version
3 which supports authentication and privacy (encryption). But in any
case the community string for your devices should not be "public".
Please see 'perldoc Munin::Plugin::SNMP' for further configuration
information.
=head1 INTERPRETATION
The total number of TCP connections in each state. See RFC 793 or the
detailed information on the graph page for the meaning of each state.
=head1 MIB INFORMATION
This plugin requires support for the TCP-MIB (RFC 4022). It reports
the contents of the tcpConnState column of tcpConnTable.
=head1 MAGIC MARKERS
#%# family=snmpauto
#%# capabilities=snmpconf
=head1 BUGS
None known.
=head1 AUTHOR
Copyright (C) 2006 Lars Strand
Tidied and documented by Matthew Boyle in 2010.
=head1 LICENSE
GPLv2.
=cut
use strict;
use Munin::Plugin::SNMP;
my $oid = '1.3.6.1.2.1.6.13.1.1';
my @tcpStates = (
[ 0, 'closed', 'Connections waiting for a termination request acknowledgment from the remote TCP.' ],
[ 0, 'listen', 'Connections waiting for a request from any remote TCP and port.' ],
[ 0, 'synSent', 'Connections waiting for a matching request after having sent a connection request.' ],
[ 0, 'synReceived', 'Connections waiting for a confirming request acknowledgment after having both received and sent a connection request.' ],
[ 0, 'established', 'Connections opened and data received can be delivered to the user. The normal state for the data transfer phase of the connection.' ],
[ 0, 'finWait1', 'Connections waiting for a termination request from the remote TCP, or an acknowledgment of the connection termination request previously sent.' ],
[ 0, 'finWait2', 'Connections waiting for a termination request from the remote TCP.' ],
[ 0, 'closeWait', 'Connections waiting for a termination request from the local user.' ],
[ 0, 'lastAck', 'Connections waiting for an acknowledgment of the termination request previously sent to the remote TCP (which includes an acknowledgment of its connection termination request).' ],
[ 0, 'closing', 'Connections waiting for a termination request acknowledgment from the remote TCP.' ],
[ 0, 'timeWait', 'Connections waiting for enough time to pass to be sure the remote TCP received the acknowledgment of its termination request.' ],
[ 0, 'deleteTCP', 'Connections terminated by a SNMP Management Station (put)' ]
);
if (defined $ARGV[0] and $ARGV[0] eq 'snmpconf') {
print "require ${oid}. [0-9]\n";
exit 0;
}
if (defined $ARGV[0] and $ARGV[0] eq 'config') {
my ($host) = Munin::Plugin::SNMP->config_session();
print "host_name $host\n" unless $host eq 'localhost';
print "graph_title Netstat\n";
print "graph_args --base 1000 --logarithmic\n";
print "graph_period seconds\n";
print "graph_category network\n";
print "graph_vlabel active connection\n";
print "graph_info This graph shows the TCP activity of all the network interfaces combined.\n";
foreach my $state (@tcpStates) {
print "$state->[1].label $state->[1]\n";
print "$state->[1].info $state->[2]\n";
}
exit 0;
}
my ($session, $error) = Munin::Plugin::SNMP->session();
my $connections = $session->get_entries(-columns => [ $oid ]);
# sum up the rows
foreach my $state (values %$connections) {
$tcpStates[$state-1]->[0]++; # states are counted from 1, not 0
}
foreach my $state (@tcpStates) {
print "$state->[1].value $state->[0]\n";
}