Premier commit

This commit is contained in:
phil
2021-01-04 22:49:46 +01:00
parent da1100578d
commit 65b2a3eaf3
538 changed files with 52570 additions and 0 deletions

View File

@@ -0,0 +1,59 @@
###############################################################################
# contacts.cfg
###############################################################################
###############################################################################
###############################################################################
#
# CONTACTS
#
###############################################################################
###############################################################################
# In this simple config file, a single contact will receive all alerts.
#define contact{
# contact_name root
# alias Root
# service_notification_period 24x7
# host_notification_period 24x7
# service_notification_options w,u,c,r
# host_notification_options d,r
# service_notification_commands notify-service-by-email
# host_notification_commands notify-host-by-email
# email root@localhost
# }
define contact{
contact_name admin
alias Administrateur
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email icinga.ppe31@gmail.com
}
###############################################################################
###############################################################################
#
# CONTACT GROUPS
#
###############################################################################
###############################################################################
# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members admin
}

View File

@@ -0,0 +1,13 @@
##
## Extended Host and Service Information
##
define hostextinfo{
hostgroup_name debian-servers
notes Debian GNU/Linux servers
# notes_url http://webserver.localhost.localdomain/hostinfo.pl?host=netware1
icon_image base/debian.png
icon_image_alt Debian GNU/Linux
vrml_image debian.png
statusmap_image base/debian.gd2
}

View File

@@ -0,0 +1,19 @@
Generic host definition template - This is NOT a real host, just a template!
define host{
name generic-host ; The name of this host template
notifications_enabled 1 ; Host notifications are enabled
event_handler_enabled 1 ; Host event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
check_command check-host-alive
max_check_attempts 10
notification_interval 0
notification_period 24x7
notification_options d,u,r
contact_groups admins
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
}

View File

@@ -0,0 +1,26 @@
# generic service template definition
define service{
name generic-service ; The 'name' of this service template
active_checks_enabled 1 ; Active service checks are enabled
passive_checks_enabled 1 ; Passive service checks are enabled/accepted
parallelize_check 1 ; Active service checks should be parallelized (disabling this can lead to major performance problems)
obsess_over_service 1 ; We should obsess over this service (if necessary)
check_freshness 0 ; Default is to NOT check service 'freshness'
notifications_enabled 1 ; Service notifications are enabled
event_handler_enabled 1 ; Service event handler is enabled
flap_detection_enabled 1 ; Flap detection is enabled
failure_prediction_enabled 1 ; Failure prediction is enabled
process_perf_data 1 ; Process performance data
retain_status_information 1 ; Retain status information across program restarts
retain_nonstatus_information 1 ; Retain non-status information across program restarts
notification_interval 0 ; Only send notifications on status change by default.
is_volatile 0
check_period 24x7
normal_check_interval 5
retry_check_interval 1
max_check_attempts 4
notification_period 24x7
notification_options w,u,c,r
contact_groups admins
register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
}

View File

@@ -0,0 +1,14 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name gwsio2
alias Passerelle
address 192.168.0.1
icon_image cook/linux_server.gif
statusmap_image cook/linux_server.gd2
}

View File

@@ -0,0 +1,13 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host
host_name localhost
alias Serveur monitoring
address localhost
}

View File

@@ -0,0 +1,60 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in icinga-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name localhost
alias localhost
address 127.0.0.1
parents gwsio2
}
# Define a service to check the disk space of the root partition
# on the local machine. Warning if < 20% free, critical if
# < 10% free space on partition.
define service{
use generic-service ; Name of service template to use
host_name localhost
service_description Disk Space
check_command check_all_disks!20%!10%
}
# Define a service to check the number of currently logged in
# users on the local machine. Warning if > 20 users, critical
# if > 50 users.
define service{
use generic-service ; Name of service template to use
host_name localhost
service_description Current Users
check_command check_users!20!50
}
# Define a service to check the number of currently running procs
# on the local machine. Warning if > 250 processes, critical if
# > 400 processes.
define service{
use generic-service ; Name of service template to use
host_name localhost
service_description Total Processes
check_command check_procs!250!400
}
# Define a service to check the load on the local machine.
define service{
use generic-service ; Name of service template to use
host_name localhost
service_description Current Load
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}

View File

@@ -0,0 +1,16 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name netgear
alias switch
address 192.168.0.2
parents gwsio4
icon_image cook/switch.gif
statusmap_image cook/switch.gd2
}

View File

@@ -0,0 +1,13 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name r-ext
alias Routeur externe
address 192.168.200.253
parents localhost
}

View File

@@ -0,0 +1,13 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name r-int
alias Routeur interne
address 172.16.0.254
parents r-ext
}

View File

@@ -0,0 +1,14 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name s-adm
alias debian-servers
address 192.168.99.99
parents r-int
}

View File

@@ -0,0 +1,14 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name s-infra
alias debian-servers
address 172.16.0.1
parents r-int
}

View File

@@ -0,0 +1,13 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name s-proxy
alias serveur proxy
address 172.16.0.2
parents r-int
}

View File

@@ -0,0 +1,13 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name s-test
alias machine test
address 172.16.0.18
parents r-int
}

View File

@@ -0,0 +1,106 @@
define service {
hostgroup_name http-servers
service_description HTTP
check_command check_http
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service {
hostgroup_name ssh-servers
service_description SSH
check_command check_ssh
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service{
use generic-service
hostgroup_name debian-servers
service_description Espace disque
check_command check_snmp_storage!public!--v2c!"^/$|tmp|usr|var"!90!95
}
define service{
use generic-service
hostgroup_name debian-servers
service_description Charge machine
check_command check_snmp_load!public!--v2c!netsl!2,1,1!3,2,2
}
define service{
use generic-service
hostgroup_name localhost
service_description Charge machine
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
define service{
use generic-service
hostgroup_name debian-servers
service_description RAM
check_command check_snmp_mem!public!--v2c!-N!95,60!99,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Version NSClient++
check_command check_nt!CLIENTVERSION
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Charge CPU
check_command check_nt!CPULOAD!-l 5,80,90,15,80,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Uptime
check_command check_nt!UPTIME
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Mem Use
check_command check_nt!MEMUSE!80,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Disk Space
check_command check_nt!USEDDISKSPACE!-l C!10,5
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Service DNS
check_command check_nt!SERVICESTATE!-l W32Time,"Client DNS"
}
define service{
use generic-service
hostgroup_name uptimegrp
service_description Uptime
check_command check_snmp!-C public -o 1.3.6.1.2.1.1.3.0
}
define service{
use generic-service
hostgroup_name dns-servers
service_description DNS Ext
check_command check_dns
}
#define service{
# use generic-service
# hostgroup_name dhcp-servers
# service_description Service DHCP
# check_command check_dhcp
#}

View File

@@ -0,0 +1,16 @@
# A simple configuration file for monitoring the local host
# This can serve as an example for configuring other servers;
# Custom services specific to this host are added here, but services
# defined in nagios2-common_services.cfg may also apply.
#
define host{
use generic-host ; Name of host template to use
host_name srv-2012
alias windows-servers
address 172.16.0.6
parents r-int
icon_image base/win40.gif
statusmap_image base/win40.gd2
}

View File

@@ -0,0 +1,50 @@
###############################################################################
# timeperiods.cfg
###############################################################################
# This defines a timeperiod where all times are valid for checks,
# notifications, etc. The classic "24x7" support nightmare. :-)
define timeperiod{
timeperiod_name 24x7
alias 24 Hours A Day, 7 Days A Week
sunday 00:00-24:00
monday 00:00-24:00
tuesday 00:00-24:00
wednesday 00:00-24:00
thursday 00:00-24:00
friday 00:00-24:00
saturday 00:00-24:00
}
# Here is a slightly friendlier period during work hours
define timeperiod{
timeperiod_name workhours
alias Standard Work Hours
monday 09:00-17:00
tuesday 09:00-17:00
wednesday 09:00-17:00
thursday 09:00-17:00
friday 09:00-17:00
}
# The complement of workhours
define timeperiod{
timeperiod_name nonworkhours
alias Non-Work Hours
sunday 00:00-24:00
monday 00:00-09:00,17:00-24:00
tuesday 00:00-09:00,17:00-24:00
wednesday 00:00-09:00,17:00-24:00
thursday 00:00-09:00,17:00-24:00
friday 00:00-09:00,17:00-24:00
saturday 00:00-24:00
}
# This one is a favorite: never :)
define timeperiod{
timeperiod_name never
alias Never
}
# end of file

View File

@@ -0,0 +1,643 @@
#!/usr/bin/perl -w
#
# check_iftraffic.pl - Nagios(r) network traffic monitor plugin
# Copyright (C) 2004 Gerd Mueller / Netways GmbH
# $Id: check_iftraffic.pl 1119 2006-02-09 10:30:09Z gmueller $
#
# mw = Markus Werner mw+nagios@wobcom.de
# Remarks (mw):
#
# I adopted as much as possible the programming style of the origin code.
#
# There should be a function to exit this programm,
# instead of calling print and exit statements all over the place.
#
#
# minor changes by mw
# The snmp if_counters on net devices can have overflows.
# I wrote this code to address this situation.
# It has no automatic detection and which point the overflow
# occurs but it will generate a warning state and you
# can set the max value by calling this script with an additional
# arg.
#
# minor cosmetic changes by mw
# Sorry but I couldn't sustain to clean up some things.
#
# gj = Greg Frater gregATfraterfactory.com
# Remarks (gj):
# minor (gj):
#
# * fixed the performance data, formating was not to spec
# * Added a check of the interfaces status (up/down).
# If down the check returns a critical status.
# * Allow either textual or the numeric index value.
# * If the interface speed is not specified on the command line
# it gets it automatically from IfSpeed
# * Added option for second ifSpeed to allow for asymetrcal links
# such as a DSL line or cable modem where the download and upload
# speeds are different
# * Added -B option to display results in bits/sec instead of Bytes/sec
# * Added the current usage in Bytes/s (or bit/s) to the perfdata output
# * Added ability for plugin to determine interface to query by matching IP
# address of host with entry in ipAdEntIfIndex (.1.3.6.1.2.1.4.20.1.2)
# * Added -L flag to list entries found in the ipAdEntIfIndex table
# Otherwise, it works as before.
#
#
#
#
# based on check_traffic from Adrian Wieczorek, <ads (at) irc.pila.pl>
#
# Send us bug reports, questions and comments about this plugin.
# Latest version of this software: http://www.nagiosexchange.org
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307
use strict;
use Net::SNMP;
use Getopt::Long;
&Getopt::Long::config('bundling');
use Data::Dumper;
my $host_ip;
my $host_address;
my $iface_number;
my $iface_descr;
my $iface_speed;
my $iface_speedOut;
my $index_list;
my $opt_h;
my $units;
my $session;
my $error;
my $port = 161;
my $snmp_version = 1;
my @snmpoids;
# SNMP OIDs for Traffic
my $snmpIfOperStatus = '1.3.6.1.2.1.2.2.1.8';
my $snmpIfInOctets = '1.3.6.1.2.1.2.2.1.10';
my $snmpIfOutOctets = '1.3.6.1.2.1.2.2.1.16';
my $snmpIfDescr = '1.3.6.1.2.1.2.2.1.2';
my $snmpIfSpeed = '1.3.6.1.2.1.2.2.1.5';
my $snmpIPAdEntIfIndex = '1.3.6.1.2.1.4.20.1.2';
my $response;
# Path to tmp files
my $TRAFFIC_FILE = "/tmp/traffic";
# changes sos 20090717 UNKNOWN must bes 3
my %STATUS_CODE =
( 'UNKNOWN' => '3', 'OK' => '0', 'WARNING' => '1', 'CRITICAL' => '2' );
#default values;
my $state = "UNKNOWN";
my $if_status = '4';
my ( $in_bytes, $out_bytes ) = 0;
my $warn_usage = 85;
my $crit_usage = 98;
my $COMMUNITY = "public";
my $use_reg = undef; # Use Regexp for name
my $output = "";
my $bits = undef;
my $suffix = "Bs";
my $label = "MBytes";
#added 20050614 by mw
my $max_value;
my $max_bytes;
#cosmetic changes 20050614 by mw, see old versions for detail
# Added options for bits and second max ifspeed 20100202 by gj
# Added options for specificy IP addr to match 20100405 by gj
my $status = GetOptions(
"h|help" => \$opt_h,
'B' => \$bits,
'bits' => \$bits,
"C|community=s" => \$COMMUNITY,
"w|warning=s" => \$warn_usage,
"c|critical=s" => \$crit_usage,
"b|bandwidth|I|inBandwidth=i" => \$iface_speed,
"O|outBandwidth=i" => \$iface_speedOut,
'r' => \$use_reg,
'noregexp' => \$use_reg,
"p|port=i" => \$port,
"u|units=s" => \$units,
"i|interface=s" => \$iface_number,
"A|address=s" => \$host_ip,
"H|hostname=s" => \$host_address,
'L' => \$index_list,
'list' => \$index_list,
#added 20050614 by mw
"M|max=i" => \$max_value
);
if ( $status == 0 ) {
print_help();
exit $STATUS_CODE{'OK'};
}
# Changed 20091214 gj
# Check for missing options
#if ( ( !$host_address ) or ( !$iface_descr ) ) {
if ( !$host_address ) {
print "\nMissing host address!\n\n";
stop(print_usage(),"OK");
} elsif ( ( $iface_speed ) and ( !$units ) ){
print "\nMissing units!\n\n";
stop(print_usage(),"OK");
} elsif ( ( $units ) and ( ( !$iface_speed ) and ( !$iface_speedOut ) ) ) {
print "\nMissing interface maximum speed!\n\n";
stop(print_usage(),"OK");
} elsif ( ( $iface_speedOut ) and ( !$units ) ) {
print "\nMissing units for Out maximum speed!\n\n";
stop(print_usage(),"OK");
}
if ($bits) {
$suffix = "bs"
}
if ( !$iface_speed ) {
# Do nothing
}else{
#change 20050414 by mw
# Added iface_speedOut 20100202 by gj
# Convert interface speed to kiloBytes
$iface_speed = bits2bytes( $iface_speed, $units ) / 1024;
if ( $iface_speedOut ) {
$iface_speedOut = bits2bytes( $iface_speedOut, $units ) / 1024;
}
if ( !$max_value ) {
# If no -M Parameter was set, set it to 32Bit Overflow
$max_bytes = 4194304 ; # the value is (2^32/1024)
}
else {
$max_bytes = unit2bytes( $max_value, $units );
}
}
if ( $snmp_version =~ /[12]/ ) {
( $session, $error ) = Net::SNMP->session(
-hostname => $host_address,
-community => $COMMUNITY,
-port => $port,
-version => $snmp_version
);
if ( !defined($session) ) {
stop("UNKNOWN: $error","UNKNOWN");
}
}
elsif ( $snmp_version =~ /3/ ) {
$state = 'UNKNOWN';
stop("$state: No support for SNMP v3 yet\n",$state);
}
else {
$state = 'UNKNOWN';
stop("$state: No support for SNMP v$snmp_version yet\n",$state);
}
# Neither Interface Index nor Host IP address were specified
if ( !$iface_descr ) {
if ( !$host_ip ){
# try to resolve host name and find index from ip addr
$iface_descr = fetch_Ip2IfIndex( $session, $host_address );
} else {
# Use ip addr to find index
$iface_descr = fetch_Ip2IfIndex( $session, $host_ip );
}
}
#push( @snmpoids, $snmpIPAdEntIfIndex . "." . $host_address );
# Added 20091209 gj
# Detect if a string description was given or a numberic interface index number
if ( $iface_descr =~ /[^0123456789]+/ ) {
$iface_number = fetch_ifdescr( $session, $iface_descr );
}else{
$iface_number = $iface_descr;
}
push( @snmpoids, $snmpIfSpeed . "." . $iface_number );
push( @snmpoids, $snmpIfOperStatus . "." . $iface_number );
push( @snmpoids, $snmpIfInOctets . "." . $iface_number );
push( @snmpoids, $snmpIfOutOctets . "." . $iface_number );
if ( !defined( $response = $session->get_request(@snmpoids) ) ) {
my $answer = $session->error;
$session->close;
stop("WARNING: SNMP error: $answer\n", "WARNING");
}
# Added 20091209 gj
# Get interface speed from device if not provided on command line
# Convert to kiloBytes
if ( !$iface_speed ) {
$iface_speed = $response->{ $snmpIfSpeed . "." . $iface_number };
$units = "b";
$iface_speed = bits2bytes( $iface_speed, $units ) / 1024;
}
# Added 20100201 gj
# Check if Out max speed was provided, use same if speed for both if not
if (!$iface_speedOut) {
$iface_speedOut = $iface_speed;
}
$if_status = $response->{ $snmpIfOperStatus . "." . $iface_number };
$in_bytes = $response->{ $snmpIfInOctets . "." . $iface_number } / 1024; # in kiloBytes
$out_bytes = $response->{ $snmpIfOutOctets . "." . $iface_number } / 1024; # in kiloBytes
$session->close;
my $row;
my $last_check_time = time - 1;
my $last_in_bytes = $in_bytes;
my $last_out_bytes = $out_bytes;
if (
open( FILE,
"<" . $TRAFFIC_FILE . "_if" . $iface_number . "_" . $host_address
)
)
{
while ( $row = <FILE> ) {
#cosmetic change 20050416 by mw
#Couldn't sustain;-)
## chomp();
( $last_check_time, $last_in_bytes, $last_out_bytes ) =
split( ":", $row );
### by sos 17.07.2009 check for last_bytes
if ( ! $last_in_bytes ) { $last_in_bytes=$in_bytes; }
if ( ! $last_out_bytes ) { $last_out_bytes=$out_bytes; }
if ($last_in_bytes !~ m/\d/) { $last_in_bytes=$in_bytes; }
if ($last_out_bytes !~ m/\d/) { $last_out_bytes=$out_bytes; }
}
close(FILE);
}
my $update_time = time;
open( FILE, ">" . $TRAFFIC_FILE . "_if" . $iface_number . "_" . $host_address )
or die "Can't open $TRAFFIC_FILE for writing: $!";
printf FILE ( "%s:%.0ld:%.0ld\n", $update_time, $in_bytes, $out_bytes );
close(FILE);
my $db_file;
#added 20050614 by mw
#Check for and correct counter overflow (if possible).
#See function counter_overflow.
$in_bytes = counter_overflow( $in_bytes, $last_in_bytes, $max_bytes );
$out_bytes = counter_overflow( $out_bytes, $last_out_bytes, $max_bytes );
# Calculate traffic since last check (RX\TX) in kiloBytes
my $in_traffic = sprintf( "%.2lf",
( $in_bytes - $last_in_bytes ) / ( time - $last_check_time ) );
my $out_traffic = sprintf( "%.2lf",
( $out_bytes - $last_out_bytes ) / ( time - $last_check_time ) );
# sos 20090717 changed due to rrdtool needs bytes
my $in_traffic_absolut = $in_bytes * 1024 ;
my $out_traffic_absolut = $out_bytes * 1024;
# Calculate usage percentages
my $in_usage = sprintf( "%.2f", ( 1.0 * $in_traffic * 100 ) / $iface_speed );
my $out_usage = sprintf( "%.2f", ( 1.0 * $out_traffic * 100 ) / $iface_speedOut );
if ($bits) {
# Convert output from Bytes to bits
$in_bytes = $in_bytes * 8;
$out_bytes = $out_bytes * 8;
$in_traffic = $in_traffic * 8;
$out_traffic = $out_traffic * 8;
$label = "Mbits";
}
my $in_prefix = "K";
my $out_prefix = "K";
if ( $in_traffic > 1024 ) {
$in_traffic = sprintf( "%.2f", $in_traffic / 1024 );
$in_prefix = "M";
}
if ( $out_traffic > 1024 ) {
$out_traffic = sprintf( "%.2f", $out_traffic / 1024 );
$out_prefix = "M";
}
if ( $in_traffic > 1024 * 1024 ) {
$in_traffic = sprintf( "%.2f", $in_traffic / 1024 * 1024 );
$in_prefix = "G";
}
if ( $out_traffic > 1024 * 1024 ) {
$out_traffic = sprintf( "%.2f",$out_traffic / 1024 * 1024 );
$out_prefix = "G";
}
# Convert from kiloBytes to megaBytes
$in_bytes = sprintf( "%.2f", $in_bytes / 1024 );
$out_bytes = sprintf( "%.2f", $out_bytes / 1024 );
$state = "OK";
# Added 20091209 by gj
if ( $if_status != 1 ) {
$output = "Interface $iface_descr is down!";
}else{
$output =
"Average IN: "
. $in_traffic . $in_prefix . $suffix . " (" . $in_usage . "%), "
. "Average OUT: " . $out_traffic . $out_prefix . $suffix . " (" . $out_usage . "%)<br>";
$output .= "Total RX: $in_bytes $label, Total TX: $out_bytes $label";
}
# Changed 20091209 gj
if ( ( $in_usage > $crit_usage ) or ( $out_usage > $crit_usage ) or ( $if_status != 1 ) ) {
$state = "CRITICAL";
}
if ( ( $in_usage > $warn_usage )
or ( $out_usage > $warn_usage ) && $state eq "OK" )
{
$state = "WARNING";
}
# Changed 20091209 gj
$output = "$state - $output"
if ( $state ne "OK" );
# Changed 20091214 gj - commas should have been semi colons
$output .=
"|inUsage=$in_usage%;$warn_usage;$crit_usage outUsage=$out_usage%;$warn_usage;$crit_usage"
. " inBandwidth=" . $in_traffic . $in_prefix . $suffix . " outBandwidth=" . $out_traffic . $out_prefix . $suffix
. " inAbsolut=$in_traffic_absolut outAbsolut=$out_traffic_absolut";
stop($output, $state);
sub fetch_Ip2IfIndex {
my $state;
my $response;
my $snmpkey;
my $answer;
my $key;
my ( $session, $host ) = @_;
# Determine if we have a host name or IP addr
if ( $host =~ /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/ ){
#print "\nI found an IP address\n\n";
} else {
$host = get_ip ( $host );
#print "\nWe have a host name $host\n\n";
}
# Quit if results not found
if ( !defined( $response = $session->get_table($snmpIPAdEntIfIndex) ) ) {
$answer = $session->error;
$session->close;
$state = 'CRITICAL';
$session->close;
exit $STATUS_CODE{$state};
}
my %resp = %{$response};
# foreach $key ( keys %{$response} ) {
if ( $index_list ){
print ("\nInterfaces found:\n");
print (" IP Addr\tIndex\n");
print ("------------------------\n");
}
# Check each returned value
foreach $key ( keys %resp ) {
if ( $index_list ){
my $index_addr = substr $key, 21;
print ($index_addr,"\t ",$resp{$key},"\n");
}
# Check for ip address mathcin in returned index results
if ( $key =~ /$host$/ ) {
$snmpkey = $resp{$key};
}
}
unless ( defined $snmpkey ) {
$session->close;
$state = 'CRITICAL';
printf "$state: Could not match $host \n";
exit $STATUS_CODE{$state};
}
return $snmpkey;
}
sub fetch_ifdescr {
my $state;
my $response;
my $snmpkey;
my $answer;
my $key;
my ( $session, $ifdescr ) = @_;
if ( !defined( $response = $session->get_table($snmpIfDescr) ) ) {
$answer = $session->error;
$session->close;
$state = 'CRITICAL';
$session->close;
exit $STATUS_CODE{$state};
}
foreach $key ( keys %{$response} ) {
# added 20070816 by oer: remove trailing 0 Byte for Windows :-(
my $resp=$response->{$key};
$resp =~ s/\x00//;
my $test = defined($use_reg)
? $resp =~ /$ifdescr/
: $resp eq $ifdescr;
if ($test) {
###if ( $resp =~ /^$ifdescr$/ ) {
###if ( $resp =~ /$ifdescr/ ) {
### print "$resp \n";
###if ( $response->{$key} =~ /^$ifdescr$/ ) {
$key =~ /.*\.(\d+)$/;
$snmpkey = $1;
# print "$ifdescr = $key / $snmpkey \n"; #debug
}
}
unless ( defined $snmpkey ) {
$session->close;
$state = 'CRITICAL';
printf "$state: Could not match $ifdescr \n";
exit $STATUS_CODE{$state};
}
return $snmpkey;
}
#added 20050416 by mw
#Converts an input value to value in bits
sub bits2bytes {
return unit2bytes(@_) / 8;
}
#added 20050416 by mw
#Converts an input value to value in bytes
sub unit2bytes {
my ( $value, $unit ) = @_;
if ( $unit eq "g" ) {
return $value * 1024 * 1024 * 1024;
}
elsif ( $unit eq "m" ) {
return $value * 1024 * 1024;
}
elsif ( $unit eq "k" ) {
return $value * 1024;
}
elsif ( $unit eq "b" ) {
return $value * 1;
}
else {
print "You have to supply a supported unit\n";
exit $STATUS_CODE{'UNKNOWN'};
}
}
#added 20050414 by mw
#This function detects if an overflow occurs. If so, it returns
#a computed value for $bytes.
#If there is no counter overflow it simply returns the origin value of $bytes.
#IF there is a Counter reboot wrap, just use previous output.
sub counter_overflow {
my ( $bytes, $last_bytes, $max_bytes ) = @_;
$bytes += $max_bytes if ( $bytes < $last_bytes );
$bytes = $last_bytes if ( $bytes < $last_bytes );
return $bytes;
}
# Added 20100202 by gj
# Print results and exit script
sub stop {
my $result = shift;
my $exit_code = shift;
print $result . "\n";
exit ( $STATUS_CODE{$exit_code} );
}
# Added 20100405 by gj
# Lookup hosts ip address
sub get_ip {
use Net::DNS;
my ( $host_name ) = @_;
my $res = Net::DNS::Resolver->new;
my $query = $res->search($host_name);
if ($query) {
foreach my $rr ($query->answer) {
next unless $rr->type eq "A";
#print $rr->address, "\n";
return $rr->address;
}
} else {
stop("Error: IP address not resolved\n","UNKNOWN");
}
}
#cosmetic changes 20050614 by mw
#Couldn't sustain "HERE";-), either.
sub print_usage {
print <<EOU;
Usage: check_iftraffic3.pl -H host [ -C community_string ] [ -i if_index|if_descr ] [ -r ] [ -b if_max_speed_in | -I if_max_speed_in ] [ -O if_max_speed_out ] [ -u ] [ -B ] [ -A IP Address ] [ -L ] [ -M ] [ -w warn ] [ -c crit ]
Example 1: check_iftraffic3.pl -H host1 -C sneaky
Example 2: check_iftraffic3.pl -H host1 -C sneaky -i "Intel Pro" -r -B
Example 3: check_iftraffic3.pl -H host1 -C sneaky -i 5
Example 4: check_iftraffic3.pl -H host1 -C sneaky -i 5 -B -b 100 -u m
Example 5: check_iftraffic3.pl -H host1 -C sneaky -i 5 -B -b 20 -O 5 -u m
Example 6: check_iftraffic3.pl -H host1 -C sneaky -A 192.168.1.1 -B -b 100 -u m
Options:
-H, --host STRING or IPADDRESS
Check interface on the indicated host.
-B, --bits
Display results in bits per second b/s (default: Bytes/s)
-C, --community STRING
SNMP Community.
-r, --regexp
Use regexp to match NAME in description OID
-i, --interface STRING
Interface Name
-b, --bandwidth INTEGER
-I, --inBandwidth INTEGER
Interface maximum speed in kilo/mega/giga/bits per second. Applied to
both IN and OUT if no second (-O) max speed is provided.
-O, --outBandwidth INTEGER
Interface maximum speed in kilo/mega/giga/bits per second. Applied to
OUT traffic. Uses the same units value given for -b.
-u, --units STRING
g=gigabits/s,m=megabits/s,k=kilobits/s,b=bits/s. Required if -b, -I, or
-O are used.
-w, --warning INTEGER
% of bandwidth usage necessary to result in warning status (default: 85%)
-c, --critical INTEGER
% of bandwidth usage necessary to result in critical status (default: 98%)
-M, --max INTEGER
Max Counter Value of net devices in kilo/mega/giga/bytes.
-A, --address STRING (IP Address)
IP Address to use when determining the interface index to use. Can be
used when the index changes frequently or as in the case of Windows
servers the index is different depending on the NIC installed.
-L, --list FLAG (on/off)
Tell plugin to list available interfaces. This is not supported inside
of Nagios, but may be useful from the command line.
EOU
}

View File

@@ -0,0 +1,90 @@
###############################################################################
# COMMANDS.CFG - SAMPLE COMMAND DEFINITIONS FOR NAGIOS
###############################################################################
################################################################################
# NOTIFICATION COMMANDS
################################################################################
# 'notify-host-by-email' command definition
define command{
command_name notify-host-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Host Alert: $HOSTNAME$ is $HOSTSTATE$ **" $CONTACTEMAIL$
}
# 'notify-service-by-email' command definition
define command{
command_name notify-service-by-email
command_line /usr/bin/printf "%b" "***** Nagios *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$\n" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$
}
################################################################################
# HOST CHECK COMMANDS
################################################################################
# On Debian, check-host-alive is being defined from within the
# nagios-plugins-basic package
define command{
command_name check_snmp_storage
command_line $USER1$/check_snmp_storage.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -m $ARG3$ -w $ARG4$ -c $ARG5$
}
define command{
command_name check_snmp_load
command_line $USER1$/check_snmp_load.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -T $ARG3$ -w $ARG4$ -c $ARG5$
}
define command{
command_name check_snmp_mem
command_line $USER1$/check_snmp_mem.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ $ARG3$ -w $ARG4$ -c $ARG5$
}
define command{
command_name check_snmp_int
command_line $USER1$/check_snmp_netint.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -a -m -k -M -w $ARG4$ -c $ARG5$
}
define command{
command_name check_iftraffic3
#command_name check_win_int
#command_line $USER1$/check_iftraffic3.pl -H $HOSTADDRESS$ -C $ARG1$
#command_line $USER1$/check_snmp_int.pl -H $HOSTADDRESS$ -C $ARG1$ $ARG2$ -n $ARG3$ -k -M -g -w $ARG4$ -c $ARG5$
command_line $USER1$/check_iftraffic3.pl -H $HOSTADDRESS$ -C $ARG1$ -i $ARG2$ -w $ARG3$ -c $ARG4$
}
define command{
command_name check_snmp
command_line $USER1$/check_snmp -H $HOSTADDRESS$ $ARG1$
}
###############################
##WINDOWS
###############################
define command{
command_name check_nt
command_line $USER1$/check_nt -H $HOSTADDRESS$ -s root -p 12489 -v $ARG1$ $ARG2$
}
################################################################################
# PERFORMANCE DATA COMMANDS
################################################################################
# 'process-host-perfdata' command definition
define command{
command_name process-host-perfdata
command_line /usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /var/lib/nagios3/host-perfdata.out
}
# 'process-service-perfdata' command definition
define command{
command_name process-service-perfdata
command_line /usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\n" >> /var/lib/nagios3/service-perfdata.out
}

View File

@@ -0,0 +1,59 @@
###############################################################################
# contacts.cfg
###############################################################################
###############################################################################
###############################################################################
#
# CONTACTS
#
###############################################################################
###############################################################################
# In this simple config file, a single contact will receive all alerts.
#define contact{
# contact_name root
# alias Root
# service_notification_period 24x7
# host_notification_period 24x7
# service_notification_options w,u,c,r
# host_notification_options d,r
# service_notification_commands notify-service-by-email
# host_notification_commands notify-host-by-email
# email root@localhost
# }
define contact{
contact_name admin
alias Administrateur
service_notification_period 24x7
host_notification_period 24x7
service_notification_options w,u,c,r
host_notification_options d,r
service_notification_commands notify-service-by-email
host_notification_commands notify-host-by-email
email icinga.ppe31@gmail.com
}
###############################################################################
###############################################################################
#
# CONTACT GROUPS
#
###############################################################################
###############################################################################
# We only have one contact in this simple configuration file, so there is
# no need to create more than one contact group.
define contactgroup{
contactgroup_name admins
alias Nagios Administrators
members admin
}

View File

@@ -0,0 +1,11 @@
# 'check_dns' command definition
define command{
command_name check_dns
command_line /usr/lib/nagios/plugins/check_dns -H www.dfco.fr -s '$HOSTADDRESS$'
}
# 'check_dig' command definition
define command{
command_name check_dig
command_line /usr/lib/nagios/plugins/check_dig -H '$HOSTADDRESS$' -l '$ARG1$'
}

View File

@@ -0,0 +1,74 @@
# Some generic hostgroup definitions
define hostgroup {
hostgroup_name all
alias All Servers
members *
}
define hostgroup {
hostgroup_name localhost
alias Debian GNU/Linux Servers
members localhost
}
define hostgroup {
hostgroup_name debian-servers
alias Serveurs distant
members s-infra, s-proxy, r-int, r-ext, s-adm, s-test
}
define hostgroup { 
hostgroup_name ssh-servers
alias acces SSH
members s-adm, s-infra, s-proxy, r-int, r-ext, localhost, s-test, gwsio2
}
define hostgroup { 
hostgroup_name dns-servers
alias serveurs-dns
members s-infra, srv-2012
}
define hostgroup { 
hostgroup_name dhcp-servers
alias serveurs-dhcp
members r-int, srv-2012
}
define hostgroup {
hostgroup_name http-servers
alias serveurs-web
members localhost
}
#define hostgroup {
# hostgroup_name email-servers
# alias serveurs-email
# members s-mess
# }
define hostgroup { 
hostgroup_name proxy-servers
alias serveurs-proxy
members s-proxy
}
define hostgroup{
hostgroup_name windows-servers
alias windows-servers
members srv-2012
}
#define hostgroup{
# hostgroup_name switch
# alias switch
# members netgear
#}
define hostgroup{
hostgroup_name uptimegrp
alias uptimegrp
members s-infra, s-proxy, r-int, r-ext, s-adm, s-test
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,15 @@
# If you are confused about this command definition, cause you was
# reading other suggestions, please have a look into
# /usr/share/doc/nagios-plugins/README.Debian
# 'check_nt' command definition
#define command {
# command_name check_nt
# command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -v '$ARG1$'
#}
# 'check_nscp' command definition
define command {
command_name check_nscp
command_line /usr/lib/nagios/plugins/check_nt -H '$HOSTADDRESS$' -p 12489 -v '$ARG1$'
}

View File

@@ -0,0 +1,106 @@
define service {
hostgroup_name http-servers
service_description HTTP
check_command check_http
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service {
hostgroup_name ssh-servers
service_description SSH
check_command check_ssh
use generic-service
notification_interval 0 ; set > 0 if you want to be renotified
}
define service{
use generic-service
hostgroup_name debian-servers
service_description Espace disque
check_command check_snmp_storage!public!--v2c!"^/$|tmp|usr|var"!90!95
}
define service{
use generic-service
hostgroup_name debian-servers
service_description Charge machine
check_command check_snmp_load!public!--v2c!netsl!2,1,1!3,2,2
}
define service{
use generic-service
hostgroup_name localhost
service_description Charge machine
check_command check_load!5.0!4.0!3.0!10.0!6.0!4.0
}
define service{
use generic-service
hostgroup_name debian-servers
service_description RAM
check_command check_snmp_mem!public!--v2c!-N!95,60!99,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Version NSClient++
check_command check_nt!CLIENTVERSION
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Charge CPU
check_command check_nt!CPULOAD!-l 5,80,90,15,80,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Uptime
check_command check_nt!UPTIME
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Mem Use
check_command check_nt!MEMUSE!80,90
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Disk Space
check_command check_nt!USEDDISKSPACE!-l C!10,5
}
define service{
use generic-service
hostgroup_name windows-servers
service_description Service DNS
check_command check_nt!SERVICESTATE!-l W32Time,"Client DNS"
}
define service{
use generic-service
hostgroup_name uptimegrp
service_description Uptime
check_command check_snmp!-C public -o 1.3.6.1.2.1.1.3.0
}
define service{
use generic-service
hostgroup_name dns-servers
service_description DNS Ext
check_command check_dns
}
#define service{
# use generic-service
# hostgroup_name dhcp-servers
# service_description Service DHCP
# check_command check_dhcp
#}

View File

@@ -0,0 +1,12 @@
---
- name: restart icinga
service: name=icinga state=restarted
- name: stop icinga
service: name=icinga state=stopped
- name: start icinga
service: name=icinga state=started
- name: restart apache
service: name=apache2 state=restarted

View File

@@ -0,0 +1,161 @@
---
- name: Installation apache2
apt: name=apache2 state=present
- name: Installation snmp
apt: name=snmp state=present
- name: Installation de icinga
apt: name=icinga state=present
- name: Installation de nagios-plugins
apt: name=nagios-plugins state=present
- name: Installation de nagios-snmp-plugins
apt: name=nagios-snmp-plugins state=present
- name: Installation des dépendances dns
apt: name=libnet-dns-perl state=present
#- name: Copie de fichier apache.conf
# copy: remote_src=true src=/etc/icinga/apache2.conf dest=/etc/apache2/sites-available/icinga.conf
#- name: activation du site de icinga
# shell: a2ensite icinga
# notify:
# - restart icinga
- name: changement de mot de passe de icingaadmin
shell: htpasswd -dbc /etc/icinga/htpasswd.users icingaadmin root
- name: Copie du fichier commands.cfg
copy: src=commands.cfg dest=/etc/icinga/commands.cfg
- name: Copie du fichier icinga.cfg
copy: src=icinga.cfg dest=/etc/icinga
- name: Copie du fichier contact
copy: src=contacts_icinga.cfg dest=/etc/icinga/objects
- name: Copie du fichier s-infra.cfg
copy: src=cfg/s-infra.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier s-proxy.cfg
copy: src=cfg/s-proxy.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier s-adm.cfg
copy: src=cfg/s-adm.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier r-int.cfg
copy: src=cfg/r-int.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier r-ext.cfg
copy: src=cfg/r-ext.cfg dest=/etc/icinga/objects
notify:
- restart icinga
#- name: Copie du fichier netgear
# copy: src=cfg/netgear.cfg dest=/etc/icinga/objects
# notify:
# - restart icinga
- name: Copie du fichier serveur
copy: src=cfg/srv-2012.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier gwsio2
copy: src=cfg/gwsio2.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier s-test
copy: src=cfg/s-test.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier hostgroup
copy: src=hostgroups_icinga.cfg dest=/etc/icinga/objects
notify:
- restart icinga
- name: Copie du fichier services
copy: src=services_icinga.cfg dest=/etc/icinga/objects
notify:
- restart icinga
#- name: attribution des droits dossier icinga rw
# file:
# path: /var/lib/icinga/rw
# owner: nagios
# mode: 2710
# recurse: yes
# notify:
# - restart icinga
#- name: attribution des droits dossier icinga
# file:
# path: /var/lib/icinga
# owner: nagios
# mode: 751
# recurse: yes
# notify:
# - restart icinga
#- file:
# path: /var/lib/icinga/rw
# state: directory
# mode: 2770
# notify:
# - stop icinga
#- name: attribution des droits dossier var lib icinga
# shell: chmod 2770 /var/lib/icinga/rw
# notify:
# - stop icinga
#- name: attribution des droits dossier var lib icinga
# file:
# path: /var/lib/icinga/rw
# owner: www-data
# mode: 2710
# recurse: yes
# notify:
# - restart icinga
#- service:
# name: apache2
# state: restarted
# notify:
# - start icinga
#- name: attribution des droits dossier var lib icinga
# shell: apache2ctl restart
# notify:
# - start icinga
- name: Changement droit notif
shell: chmod 644 /var/log/icinga/icinga.log
- name: copie nt.cfg
copy: src=nt.cfg dest=/etc/nagios-plugins/config
#- name: copie dns.cfg
# copy: remote_src=true src=dns.cfg dest=/etc/nagios-plugins/config
- name: copie check traffic
copy: src=check_iftraffic3.pl dest=/usr/lib/nagios/plugins
- name: modif des droits plugin traffic
shell: chmod 755 /usr/lib/nagios/plugins/check_iftraffic3.pl
- name: message d'information
debug: msg="Pour superviser le Windows, il faut installer NSClient++"