Premier commit
This commit is contained in:
59
roles/icinga-fk/files/cfg/contacts_icinga.cfg
Normal file
59
roles/icinga-fk/files/cfg/contacts_icinga.cfg
Normal 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
|
||||
}
|
13
roles/icinga-fk/files/cfg/extinfo_icinga.cfg
Normal file
13
roles/icinga-fk/files/cfg/extinfo_icinga.cfg
Normal 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
|
||||
}
|
19
roles/icinga-fk/files/cfg/generic-host_icinga.cfg
Normal file
19
roles/icinga-fk/files/cfg/generic-host_icinga.cfg
Normal 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!
|
||||
}
|
26
roles/icinga-fk/files/cfg/generic-service_icinga.cfg
Normal file
26
roles/icinga-fk/files/cfg/generic-service_icinga.cfg
Normal 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!
|
||||
}
|
14
roles/icinga-fk/files/cfg/gwsio2.cfg
Normal file
14
roles/icinga-fk/files/cfg/gwsio2.cfg
Normal 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
|
||||
}
|
74
roles/icinga-fk/files/cfg/hostgroups_icinga.cfg
Normal file
74
roles/icinga-fk/files/cfg/hostgroups_icinga.cfg
Normal 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
|
||||
}
|
||||
|
60
roles/icinga-fk/files/cfg/localhost_icinga.cfg
Normal file
60
roles/icinga-fk/files/cfg/localhost_icinga.cfg
Normal 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
|
||||
}
|
16
roles/icinga-fk/files/cfg/netgear.cfg
Normal file
16
roles/icinga-fk/files/cfg/netgear.cfg
Normal 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
|
||||
}
|
||||
|
13
roles/icinga-fk/files/cfg/r-ext.cfg
Normal file
13
roles/icinga-fk/files/cfg/r-ext.cfg
Normal 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
|
||||
}
|
13
roles/icinga-fk/files/cfg/r-int.cfg
Normal file
13
roles/icinga-fk/files/cfg/r-int.cfg
Normal 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
|
||||
}
|
14
roles/icinga-fk/files/cfg/s-adm.cfg
Normal file
14
roles/icinga-fk/files/cfg/s-adm.cfg
Normal 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
|
||||
}
|
||||
|
14
roles/icinga-fk/files/cfg/s-infra.cfg
Normal file
14
roles/icinga-fk/files/cfg/s-infra.cfg
Normal 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
|
||||
}
|
||||
|
13
roles/icinga-fk/files/cfg/s-proxy.cfg
Normal file
13
roles/icinga-fk/files/cfg/s-proxy.cfg
Normal 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
|
||||
}
|
13
roles/icinga-fk/files/cfg/s-test.cfg
Normal file
13
roles/icinga-fk/files/cfg/s-test.cfg
Normal 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
|
||||
}
|
106
roles/icinga-fk/files/cfg/services_icinga.cfg
Normal file
106
roles/icinga-fk/files/cfg/services_icinga.cfg
Normal 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
|
||||
#}
|
16
roles/icinga-fk/files/cfg/srv-2012.cfg
Normal file
16
roles/icinga-fk/files/cfg/srv-2012.cfg
Normal 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
|
||||
}
|
||||
|
50
roles/icinga-fk/files/cfg/timeperiods_icinga.cfg
Normal file
50
roles/icinga-fk/files/cfg/timeperiods_icinga.cfg
Normal 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
|
643
roles/icinga-fk/files/check_iftraffic3.pl
Executable file
643
roles/icinga-fk/files/check_iftraffic3.pl
Executable 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
|
||||
|
||||
}
|
||||
|
90
roles/icinga-fk/files/commands.cfg
Normal file
90
roles/icinga-fk/files/commands.cfg
Normal 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
|
||||
}
|
59
roles/icinga-fk/files/contacts_icinga.cfg
Normal file
59
roles/icinga-fk/files/contacts_icinga.cfg
Normal 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
|
||||
}
|
11
roles/icinga-fk/files/dns.cfg
Normal file
11
roles/icinga-fk/files/dns.cfg
Normal 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$'
|
||||
}
|
1494
roles/icinga-fk/files/icinga.cfg
Normal file
1494
roles/icinga-fk/files/icinga.cfg
Normal file
File diff suppressed because it is too large
Load Diff
27
roles/icinga-fk/files/icinga.conf
Normal file
27
roles/icinga-fk/files/icinga.conf
Normal file
@@ -0,0 +1,27 @@
|
||||
# apache configuration for icinga
|
||||
|
||||
ScriptAlias /cgi-bin/icinga /usr/lib/cgi-bin/icinga
|
||||
|
||||
# Where the stylesheets (config files) reside
|
||||
Alias /icinga/stylesheets /etc/icinga/stylesheets
|
||||
|
||||
# Where the HTML pages live
|
||||
Alias /icinga /usr/share/icinga/htdocs
|
||||
|
||||
<DirectoryMatch "^(?:/usr/share/icinga/htdocs|/usr/lib/cgi-bin/icinga|/etc/icinga/stylesheets)/">
|
||||
Options FollowSymLinks
|
||||
|
||||
DirectoryIndex index.html
|
||||
|
||||
AllowOverride AuthConfig
|
||||
# Require all granted
|
||||
|
||||
AuthName "Icinga Access"
|
||||
AuthType Basic
|
||||
AuthUserFile /etc/icinga/htpasswd.users
|
||||
Require valid-user
|
||||
</DirectoryMatch>
|
||||
|
||||
<Directory "/usr/share/javascript/">
|
||||
Options FollowSymLinks MultiViews
|
||||
</Directory>
|
15
roles/icinga-fk/files/nt.cfg
Normal file
15
roles/icinga-fk/files/nt.cfg
Normal 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/monitoring-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$'
|
||||
}
|
106
roles/icinga-fk/files/services_icinga.cfg
Normal file
106
roles/icinga-fk/files/services_icinga.cfg
Normal 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
|
||||
#}
|
12
roles/icinga-fk/handlers/main.yml
Normal file
12
roles/icinga-fk/handlers/main.yml
Normal 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
|
104
roles/icinga-fk/tasks/main.yml
Normal file
104
roles/icinga-fk/tasks/main.yml
Normal file
@@ -0,0 +1,104 @@
|
||||
---
|
||||
- name: Installation apache2
|
||||
apt:
|
||||
name:
|
||||
- apache2
|
||||
- snmp
|
||||
- icinga
|
||||
- nagios-snmp-plugins
|
||||
- python-passlib
|
||||
state: present
|
||||
|
||||
- name: Copie de fichier icinga.conf pour apache
|
||||
copy: src=icinga.conf dest=/etc/apache2/sites-enabled/
|
||||
notify:
|
||||
- restart icinga
|
||||
|
||||
- name: Copier le fichier commands.cfg pour icinga
|
||||
copy: src=commands.cfg dest=/etc/icinga/
|
||||
notify:
|
||||
- restart icinga
|
||||
|
||||
- name: Commente la ligne qui pose problème dans nt.cfg
|
||||
copy: src=nt.cfg dest=/etc/nagios-plugins/config/
|
||||
notify:
|
||||
- restart icinga
|
||||
|
||||
- name: macro pour test hdd
|
||||
replace:
|
||||
dest: /etc/icinga/icinga.cfg
|
||||
regexp: 'keep_unknown_macros=0'
|
||||
replace: 'keep_unknown_macros=1'
|
||||
backup : yes
|
||||
notify:
|
||||
- restart icinga
|
||||
|
||||
- name: Changement de mot de passe de icingaadmin
|
||||
htpasswd:
|
||||
path: /etc/icinga/htpasswd.users
|
||||
name: icingaadmin
|
||||
password: root
|
||||
|
||||
|
||||
- name: Copie du fichier contact
|
||||
copy: src=contacts_icinga.cfg dest=/etc/icinga/objects
|
||||
|
||||
- name: Copie du fichier s-infra s-proxy s-adm r-int r-ext srv-2012 gwsio2 s-test hostgroup
|
||||
synchronize:
|
||||
src: 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
|
||||
|
||||
|
||||
- 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
|
||||
|
||||
#- name: Changement droit notif
|
||||
# shell: chmod 644 /var/log/icinga/icinga.log
|
||||
|
||||
|
||||
#- 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++"
|
||||
|
||||
- name: redemarrage apache
|
||||
shell: service apache2 restart
|
Reference in New Issue
Block a user