Home Directory Plugins Network Connections, Stats and Bandwidth TCP traffic degradation detection from link utilization

Search Exchange

Search All Sites

Nagios Live Webinars

Let our experts show you how Nagios can help your organization.

Contact Us

Phone: 1-888-NAGIOS-1
Email: sales@nagios.com

Login

Remember Me

TCP traffic degradation detection from link utilization

Current Version
1.0
Last Release Date
2012-12-31
Compatible With
  • Nagios 1.x
  • Nagios 2.x
  • Nagios 3.x
  • Nagios XI
  • Nagios Fusion
License
GPL
Hits
51022
Network Monitoring Software - Download Nagios XI
Log Management Software - Nagios Log Server - Download
Netflow Analysis Software - Nagios Network Analyzer - Download
TCP traffic degradation detection from link utilization
This plugin estimates the TCP traffic performance degradation from coarse link utilization traces, such as those obtainable by SNMP.
TCP adapts its transmission rate to the available bandwidth. Thus, the performance is degraded before achieving the 100% link occupancy. Some advanced method based on M/G/R processor sharing model have been developed to estimate TCP performance degradation from the analysis of the link utilization variance (it normally increases as the mean link-utilization increases but starts to decrease when the link performance is degraded). This plugin is based on the method described in [1]. It estimates the TCP performance degradation from the link utilization traces, such as those obtainable by SNMP. Thus, it allows detecting TCP performance degradation perceived by the users before plateaus appear in occupancy graphs, with no active measures, nor fine grained or complex monitoring.

The plugin calculates an index which estimates if the TCP traffic is being degraded: When TCP performance is normal the index is close to 1, but when the performance starts to be degraded the index begins to increase.

check_data.pl is a script required for check_degradation. It obtains the number of bytes in a link (transmitted or received) in a time period via SNMP. This data is used by check_degradation to calculate the link occupancy.

[1] K. Ishibashi, R. Kawahara, T. Asaka, M. Aida, S. Ono, and S. Asano, “Detection of TCP Performance Degradation Using Link Utilization Statistics,” IEICE Trans. Comm., vol. E89-B, no. 1, pp. 47-56, Jan. 2006.


##############################################################################


#Required Packages

Make sure you have installed the following packages:

-MySQL
-Perl
-Perl modules:
*Nagios::Plugin
*Net::SNMP
*DBI
(You can obtain them from CPAN)

####################!!!!!!IMPORTANT!!!!!##########################

The plugin requires a database and a user with permisions to read/write from/to the database. The plugin creates two tables in this database to store the data to process. It is also required to have access to the MIB in the switch/router/host via SNMP.

The smaller the check frequency of this service, the better the performance degration detection (a sampling rate of 10-60 seconds is recommended).


#How to use it:

1) Compile the source by typing make in the command line.


2) Place check_degradation and check_data.pl in "/usr/local/nagios/libexec" or wherever your Nagios check scripts/executables are kept.

3) Define the service in "/usr/local/nagios/etc/objects/switch.cfg" or wherever you define your host/switches.

define service{
use generic-service
host_name any_host
service_description Degradation-Index
check_command check_degradation!-d database -U User -p password -T Tau -B Bandwidth -O Oid
}


4) Define the command in Nagios by including the following lines to "/usr/local/nagios/etc/objects/commands.cfg"
or wherever you define your commands.

# 'check_degradation' command definition
define command{
command_name check_degradation
command_line $USER1$/check_degradation $ARG1$
}




##There required parameters to use the plugin are:

-d, --database: The name of the database.

-U, --User: The MySQL user.

-p, --password: The MySQL user password

-T, --tau: Number of samples to calculate the degradation Index (for example 5)

-B, --Bandwidth: the bandwidth (in bps) of the link.

-O, --OID: OID in the MIB ifInOctets (1.3.6.1.2.1.2.2.1.10) or ifOutOctets (1.3.6.1.2.1.2.2.1.16).

##There are some important parameters:

-H, --Host: the IP address of the router we want to monitor by SNMP (default is localhost).

-u, --community: The SNMP community (default is public).


##Other parameters:

-s, --server: The MySQL server address (default is localhost).

-n, --nametable: Name of the MySQL table to store the data to be processed by check_degradation (number of bytes in a time slot). Only have to be changed if the command is employed to monitoring more than 1 host/router/switch to give a different name to each service.

-W, --Write: If you want to save the resutls in another MySQL table.

-e, --temptable: Name of the MySQL temporal table (Default Temp). Only have to be changed if the command is employed to monitoring more than 1 host/router/switch to give a different name to each service.

-o, --output: This is the name of a MySQL table to store the results (if you enter -W). Only have to be changed if the command is employed to monitoring more than 1 host/router/switch to give a different name to each service.


-r, --path: Path where check_data.pl is located. (Default /usr/local/nagios/libexec/)


#####################################################################################

To run this script from command line, just enter into the directory and type:

./check_degradation

You can obtain help of this plugin by typing:

./check_degradation --help.