updated check_traffic scripts

Michael S. Kazmier mkazmier at sofast.net
Tue Apr 22 18:36:52 CEST 2003


Okay folks,

 

I have patched the make_config script to correctly produce the correct RRD
files, descriptions, etc.  I have also created a script I call set_perms to
run AFTER the make config that will correctly set the permissions for the
directories involved.  Hope it helps and makes it into the next release of
check_traffic..

 

<<<<make_config script>>>>

#!/usr/bin/perl

#

# make-config - Part of check_traffic plugin.

#

# Copyright (c) 2003 Adrian Wieczorek, <ads (at) irc.pila.pl>

#

# See README file for more details.

 

$VERSION             = "0.90b";

 

$HOSTNAME            = "ENTER YOUR HOSTNAME";               # Hostname of
monitoring host. ( The same like in Nagios(r) config.)

 

# SNMP stuff:

$SNMPWALK             = "/usr/bin/snmpwalk";

$SNMPGET              = "/usr/bin/snmpget";

$HOST                 = "ENTER YOUR HOST IP ADDRESS";

$COMMUNITY            = "ENTER YOUR COMMUNITY STRING";

 

$OUTPUT_SERVICE_FILE  = "services.cfg";

$OUTPUT_COMMANDS_FILE = "checkcommands.cfg";

$OUTPUT_EXTINFO_FILE  = "serviceextinfo.cfg";

$CHECK_INTERVAL       = 3;                  # This value is important for
RRD too.

 

# RRD support:

$WITH_RRD             = 1;                  # Set to 0 if You don't want RRD
graphs.

$RRDTOOL              = "/usr/bin/rrdtool";

$RRDCGI               = "/usr/bin/rrdcgi";

$DB_PATH              = "/usr/local/nagios/check_traffic-$VERSION/db";

$GIFS_PATH            = "/usr/local/nagios/share";

$GIFS_URL             = "http://YOUR.DOMAIN.COM/nagios/";

$CGI_URL              = "nagios/cgi-bin";

 

# ------ !!! You probably no need to change nothing below this line !!!
------

 

@walk = `$SNMPWALK -v 1 $HOST -c $COMMUNITY
interfaces.ifTable.ifEntry.ifDescr`;

 

%interfaces = ();

 

my $count = 0;

 

foreach $interface (@walk)

{

 @ifDescr = split("=",$interface);

 if($ifDescr[0] =~ m/.(\d*)\s$/) { $ifNumber = $1; }

 

 $_ = $ifDescr[1];

 if($ifDescr[1] =~ m/STRING:/)          # Some SNMP Agents add field type
identifier before

 {                                      # value, so we omitting it.

  m/STRING:\s(\S*)/;

  $interfaces{$ifNumber} = $1;

 } else

   {

    m/\s(\S*)/;

    $interfaces{$ifNumber} = $1;

   }

 $count++;

}

 

print "Number of Interfaces found: $count\n\n";

 

if($WITH_RRD)

{

 $samples_4hrs = (60 * 4) / $CHECK_INTERVAL;

 $average_1day = 30 / $CHECK_INTERVAL;

 $average_1mon = $average_1day * 4;

 

 if ((30%$CHECK_INTERVAL) or ((60*4)%$CHECK_INTERVAL))

 {

  die "\nERROR: Value \$CHECK_INTERVAL is illegal. Enter another and try
again.\n";

 }

}

 

# - Writing service definitions fo file.

open (CONFIG, ">>$OUTPUT_SERVICE_FILE");

print CONFIG "# - Service definitions for 'check_traffic' plugin\n\n";

foreach $ifNumber (keys %interfaces)

{

 $_ = $interfaces{$ifNumber};

 s/\//-/g;

 $interfaces{$ifNumber} = $_; # Remove forward slashes from the interface
description

 $_ = `$SNMPGET -v 1 $HOST -c $COMMUNITY
interfaces.ifTable.ifEntry.ifSpeed.$ifNumber`;

 m/\s(\d*)\s$/;

 $max_speed =  $1 / 8;

 if(!$max_speed)

 {

  print "Can't determine maximum speed for interface
$interfaces{$ifNumber}.\n";

  print "Enter it manually [bps]: ";

  chop($max_speed = <STDIN>);

 }

 

 if($WITH_RRD)

 {

  $start_time = time;

  $db_file = $HOST."_".$interfaces{$ifNumber}.".rrd";

  `$RRDTOOL create $DB_PATH/$db_file --start $start_time
DS:input:COUNTER:600:U:U DS:output:COUNTER:600:U:U
RRA:AVERAGE:0.5:1:$samples_4hrs RRA:AVERAGE:0.5:$average_1day:48
RRA:AVERAGE:0.5:$average_1mon:372 RRA:MAX:0.5:1:48
RRA:MAX:0.5:$average_1day:48 RRA:MAX:0.5:$average_1mon:372`;

  create_rrd_cgi($HOSTNAME,$interfaces{$ifNumber},$db_file);

 }

 

 print CONFIG "define service{\n";

 print CONFIG " use                             generic-service\n";

 print CONFIG " host_name                       $HOSTNAME\n";

 print CONFIG " service_description             $interfaces{$ifNumber}
Traffic\n";

 print CONFIG " check_period                    24x7\n";

 print CONFIG " max_check_attempts              3\n";

 print CONFIG " normal_check_interval           $CHECK_INTERVAL\n";

 print CONFIG " retry_check_interval            1\n";

 print CONFIG " notification_interval           120\n";

 print CONFIG " notification_period             24x7\n";

 print CONFIG " notification_options            w,u,c,r\n";

 print CONFIG " check_command
check_traffic!$ifNumber!$max_speed!$interfaces{$ifNumber}!85!95\n";

 print CONFIG " }\n\n";

}

close(CONFIG);

 

# - Writing command definition to file.

open(CONFIG, ">>$OUTPUT_COMMANDS_FILE");

 

print CONFIG "# 'check_traffic' command definition\n";

print CONFIG "define command{\n";

print CONFIG "         command_name     check_traffic\n";

print CONFIG "         command_line     \$USER1\$/check_traffic -H
\$HOSTADDRESS\$ -i \$ARG1\$ -b \$ARG2\$ -r \$ARG3\$ -w \$ARG4\$ -c
\$ARG5\$\n";

print CONFIG "         }\n";

 

close(CONFIG);

 

# - Writing serviceextinfo definitions

open(CONFIG, ">>$OUTPUT_EXTINFO_FILE");

 

foreach $ifNumber (keys %interfaces)

{

 print CONFIG "# '$interfaces{$ifNumber}' hostextinfo  definition\n";

 print CONFIG "define serviceextinfo{\n";

 print CONFIG "         host_name               $HOSTNAME\n";

 print CONFIG "         service_description     $interfaces{$ifNumber}
Traffic\n";

 print CONFIG "         notes_url
$CGI_URL/".$HOSTNAME."_".$interfaces{$ifNumber}.".cgi\n";

 print CONFIG "         icon_image              traffic-icon.jpg\n";

 print CONFIG "         icon_image_alt          View graphs\n";

 print CONFIG "        }\n\n";

}

close(CONFIG);

 

 

sub create_rrd_cgi

{

 my ($host,$iface_descr, $db_file) = @_;

 open(CGIFILE, ">".$host."_".$iface_descr.".cgi");

 

 print CGIFILE "#!$RRDCGI\n";

 print CGIFILE "<HTML>\n<HEAD>\n";

 print CGIFILE "<META HTTP-EQUIV=\"Refresh\" CONTENT=\"".($CHECK_INTERVAL *
60)."\">\n";

 print CGIFILE "<?-- This script was automagically generated by
check_traffic config maker utility do not edit! --?>\n";

 print CGIFILE "<TITLE>$host - $iface_descr Interface Graphs</TITLE>\n";

 print CGIFILE "</HEAD>\n<PRE>\n";

 print CGIFILE "<H4><B>$host - $iface_descr Interface Graphs</B></H4>\n";

 print CGIFILE "last 4 hours ($CHECK_INTERVAL minutes averages)\n";

 print CGIFILE "<RRD::GRAPH
$GIFS_PATH/".$host."_".$iface_descr."-4hrs.gif\n";

 print CGIFILE " --imginfo \"<IMG SRC=\"$GIFS_URL%s\" WIDTH=\"%lu\"
HEIGHT=\"%lu\">\"\n";

 print CGIFILE " --start -4hours\n";

 print CGIFILE " --interlaced\n";

 print CGIFILE " --lazy\n";

 print CGIFILE " --vertical-label \"bytes/sec\"\n";

 print CGIFILE " --lower-limit 0.0\n";

 print CGIFILE " --upper-limit 1.0\n";

 print CGIFILE " DEF:inoctets=$DB_PATH/$db_file:input:AVERAGE\n";

 print CGIFILE " DEF:outoctets=$DB_PATH/$db_file:output:AVERAGE\n";

 print CGIFILE " LINE1:inoctets#0000FF:\"input \"\n";

 print CGIFILE " GPRINT:inoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:inoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:inoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE " AREA:outoctets#00FF00:\"output\"\n";

 print CGIFILE " GPRINT:outoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:outoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:outoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE ">\n<BR>\n";

 print CGIFILE "last 24 hours (30 minutes averages)\n";

 print CGIFILE "<RRD::GRAPH
$GIFS_PATH/".$host."_".$iface_descr."-1day.gif\n";

 print CGIFILE " --imginfo \"<IMG SRC=\"$GIFS_URL%s\" WIDTH=\"%lu\"
HEIGHT=\"%lu\">\"\n";

 print CGIFILE " --start -1day\n";

 print CGIFILE " --interlaced\n";

 print CGIFILE " --lazy\n";

 print CGIFILE " --vertical-label \"bytes/sec\"\n";

 print CGIFILE " --lower-limit 0.0\n";

 print CGIFILE " --upper-limit 1.0\n";

 print CGIFILE " DEF:inoctets=$DB_PATH/$db_file:input:AVERAGE\n";

 print CGIFILE " DEF:outoctets=$DB_PATH/$db_file:output:AVERAGE\n";

 print CGIFILE " LINE1:inoctets#0000FF:\"input \"\n";

 print CGIFILE " GPRINT:inoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:inoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:inoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE " AREA:outoctets#00FF00:\"output\"\n";

 print CGIFILE " GPRINT:outoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:outoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:outoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE ">\n<BR>\n";

 print CGIFILE "last month (2 hour averages)\n";

 print CGIFILE "<RRD::GRAPH
$GIFS_PATH/".$host."_".$iface_descr."-1mon.gif\n";

 print CGIFILE " --imginfo \"<IMG SRC=\"$GIFS_URL%s\" WIDTH=\"%lu\"
HEIGHT=\"%lu\">\"\n";

 print CGIFILE " --start -1month\n";

 print CGIFILE " --interlaced\n";

 print CGIFILE " --lazy\n";

 print CGIFILE " --vertical-label \"bytes/sec\"\n";

 print CGIFILE " --lower-limit 0.0\n";

 print CGIFILE " --upper-limit 1.0\n";

 print CGIFILE " DEF:inoctets=$DB_PATH/$db_file:input:AVERAGE\n";

 print CGIFILE " DEF:outoctets=$DB_PATH/$db_file:output:AVERAGE\n";

 print CGIFILE " LINE1:inoctets#0000FF:\"input \"\n";

 print CGIFILE " GPRINT:inoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:inoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:inoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE " AREA:outoctets#00FF00:\"output\"\n";

 print CGIFILE " GPRINT:outoctets:LAST:\"%6.2lf %sB/s last\"\n";

 print CGIFILE " GPRINT:outoctets:AVERAGE:\"%6.2lf %sB/s avg\"\n";

 print CGIFILE " GPRINT:outoctets:MAX:\"%6.2lf %sB/s max\\n\"\n";

 print CGIFILE ">\n<BR><BR>\n";

 print CGIFILE "<B>check_traffic plugin\n© 2003 by ADi\n</B>\n";

 print CGIFILE "</PRE>\n";

 

 close(CGIFILE);

}

 

 

 

 

 

<<<<set_perms script>>>>

#!/usr/bin/perl

$VERSION              = "0.90b";

$DB_PATH              = "/usr/local/nagios/check_traffic-$VERSION/db";

$GIFS_PATH            = "/usr/local/nagios/share";

`chown apache.nagios $DB_PATH`;

`chmod 775 $DB_PATH -R`;

`chown apache.nagios $GIFS_PATH`;

`chmod 775 $GIFS_PATH`;

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://www.monitoring-lists.org/archive/users/attachments/20030422/0822e515/attachment.html>


More information about the Users mailing list