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