diff options
author | mh <mh@immerda.ch> | 2010-06-28 19:28:27 +0200 |
---|---|---|
committer | mh <mh@immerda.ch> | 2010-06-28 19:28:27 +0200 |
commit | c25c57f3945a7edf66bedaa34fa4af62a803d174 (patch) | |
tree | 863c61e2de0c258c859527e14e86b47ffd8f0bb1 | |
parent | 77f601607093b7fb22f3498574d0dedd2cbe01d9 (diff) | |
parent | 5d5ec8c28d0fe39359af8db159b14faeae397e1f (diff) |
merge with lavamind
47 files changed, 2772 insertions, 899 deletions
@@ -5,20 +5,24 @@ This modules was inspired and based on the work of David Schmitt The immerda project group adapted and improved this module. Mainly we made it using the new native puppet nagios commands as well we made it more modular to fit for multidistro usage. -However as we used Centos, we couldn't test the original Debian -extension of David Schmitt, integration of more distros have to prove -this concept. + +In it's current form, this module can be used on CentOS and Debian. + Overview ======== To use the nagios resources, activate storeconfigs on the puppetmaster. + Monitor ------- -On one node the "nagios" class has to be included. This installes nagios and -apache2 and installs the cgi +On one node the "nagios" class has to be included. By default this installs +apache using the "apache" module. To use lighttpd instead, include +"nagios::lighttpd", or, if the web server is not to be managed by puppet, +include "nagios::headless". + Hosts ----- @@ -27,10 +31,13 @@ On a node which shall be monitored with nagios, include the "nagios::target". This just creates a host declaration for this hosts "$fqdn". Set the $nagios_parent variable in the node scope for enabling the reachability features of nagios. If a node needs more customisation, use the -"nagios::host" component directly. +native "@@nagios_host" type directly (the double-ampersand declares the object +as an exported resource). -To monitor hosts not managed by puppet, add "nagios::extra_host"s to the -monitoring node. These can be used as intermediate $nagios_parent's +To monitor hosts not managed by puppet, add "nagios_host" objects to the +monitoring node. The required parameters are "alias", "address" and "use". If +you don't specify a proper nagios template with the "use" parameter, some extra +parameters are needed. You may look up the nagios documentation for this. Services @@ -40,23 +47,21 @@ Services can be monitored by using the "nagios::service" component. The simplest form is:: - nagios::service { check_dns: } + nagios::service { 'check_http': + check_command => 'http_port!80', + } The intention being obviously to put such declarations into a component defining a service, thereby being automatically applied together with all instances of the service. -Caveats -======= - +Obviously, the check command must either be defined using nagios_command objects +(some are supplied in nagios::defaults::commands) or in the nagios configuration +files directly. -Performance ------------ -A major drawback is that currently the needed storeconfig setting and -subsequent filling of the database is really a drag on performance. 0.22.1 -for example breaks at approximatly 120 monitored services (depends on H/W of -course). 0.22.3 has improved that my a factor of 3-4. +Caveats +======= Consistency/Validation/Verification @@ -68,24 +73,45 @@ neither automatically valid - it is not guaranteed that all components declare a nagios::service - and even if the configuration is valid it definitly is unverified, since that is always a judgment call for an external observer. + +Removal of nagios objects +------------------------- + +This module does not automatically purge nagios objects such as hosts and +services that become absent from the manifests. One must set ensure => absent +to guarantee the removal of nagios objects from the configuration as desired. + + +Templates not supported using native types +------------------------------------------ + +Templates of hosts and services cannot yet be defined using native types. In +this module, they are provided using a file resource by the class +nagios::defaults::templates + +See : http://projects.reductivelabs.com/issues/1180 + + Variables ========= Options to change the behavior of the nagios module: -- nagios_allow_external_cmd: set it to true, if you'd like to ensure that apache can - write to the external command file. Mandatory using - external commands. +- nagios_allow_external_cmd: Set to true, if you'd like to ensure that your http + daemon can write to the external command file. You + may also need to flip "check_external_commands" in + "nagios.cfg" to enable this functionality. Examples ======== -Usage example:: +Usage example: node nagios { - include nagios + include nagios::apache + include nagios::defaults # Declare another nagios command nagios::command { http_port: command_line @@ -93,13 +119,17 @@ node nagios { $HOSTADDRESS$' # Declare unmanaged hosts - nagios_extra_host { - "router01": - parent => "gateway", - ip => "10.0.0.1"; - "router02": - parent => "router01", - ip => "192.168.0.1"; + nagios_host { + 'router01.mydomain.com': + alias => 'router01', + notes => 'MyDomain Gateway', + address => "10.0.0.1", + use => 'generic-host'; + "router02.mydomain.com": + alias => 'router02', + address => '192.168.0.1', + parents => 'router01', + use => 'generic-host'; } } @@ -108,8 +138,8 @@ $HOSTADDRESS$' node target { # Monitor this host - $nagios_parent = "router01" - include nagios_target + $nagios_parent = 'router01' + include nagios::target # monitor a service $apache2_port = 8080 @@ -122,6 +152,14 @@ node target { } +TODO +==== + +- Provide a default http vhost +- Add facility to deploy nagios plugins +- Add more useful commands and services +- When Puppet will support them, supply nagios templates using native types + License ======= diff --git a/files/configs/CentOS/commands.cfg b/files/configs/CentOS/commands.cfg deleted file mode 100644 index 2b1889c..0000000 --- a/files/configs/CentOS/commands.cfg +++ /dev/null @@ -1,255 +0,0 @@ -################################################################################ -# Sample command definitions for Nagios 2.10 -# -# Read the documentation for more information on this configuration file. I've -# provided some comments here, but things may not be so clear without further -# explanation, so make sure to read the HTML documentation! -# -# Last Modified: 11-21-2006 -# -################################################################################ - - -################################################################################ -# COMMAND DEFINITIONS -# -# SYNTAX: -# -# define command{ -# template <templatename> -# name <objectname> -# command_name <commandname> -# command_line <commandline> -# } -# -# WHERE: -# -# <templatename> = object name of another command definition that should be -# used as a template for this definition (optional) -# <objectname> = object name of command definition, referenced by other -# command definitions that use it as a template (optional) -# <commandname> = name of the command, as recognized/used by Nagios -# <commandline> = command line -# -################################################################################ - - - - -################################################################################ -# -# SAMPLE SERVICE CHECK COMMANDS -# -# These are some example service check commands. They may or may not work on -# your system, as they must be modified for your plugins. See the HTML -# documentation on the plugins for examples of how to configure command definitions. -# -################################################################################ - - -################################################################################ -# NOTE: The following 'check_local_...' functions are designed to monitor -# various metrics on the host that Nagios is running on (i.e. this one). -################################################################################ - -# 'check_local_disk' command definition -define command{ - command_name check_local_disk - command_line $USER1$/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$ - } - - -# 'check_local_load' command definition -define command{ - command_name check_local_load - command_line $USER1$/check_load -w $ARG1$ -c $ARG2$ - } - - -# 'check_local_procs' command definition -define command{ - command_name check_local_procs - command_line $USER1$/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$ - } - - -# 'check_local_users' command definition -define command{ - command_name check_local_users - command_line $USER1$/check_users -w $ARG1$ -c $ARG2$ - } - - - -################################################################################ -# NOTE: The following 'check_...' commands are used to monitor services on -# both local and remote hosts. -################################################################################ - -# 'check_dns' command definition -define command{ - command_name check_dns - command_line $USER1$/check_dns -H www.yahoo.com -s $HOSTADDRESS$ - } - - -# 'check_ftp' command definition -define command{ - command_name check_ftp - command_line $USER1$/check_ftp -H $HOSTADDRESS$ - } - - -# 'check_hpjd' command definition -define command{ - command_name check_hpjd - command_line $USER1$/check_hpjd -H $HOSTADDRESS$ -C public - } - - -# 'check_http' command definition -define command{ - command_name check_http - command_line $USER1$/check_http -H $HOSTADDRESS$ - } - - -# 'check_nntp' command definition -define command{ - command_name check_nntp - command_line $USER1$/check_nntp -H $HOSTADDRESS$ - } - - -# 'check_ping' command definition -define command{ - command_name check_ping - command_line $USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$ -p 5 - } - - -# 'check_pop' command definition -define command{ - command_name check_pop - command_line $USER1$/check_pop -H $HOSTADDRESS$ - } - - -# 'check_smtp' command definition -define command{ - command_name check_smtp - command_line $USER1$/check_smtp -H $HOSTADDRESS$ - } - - -# 'check_tcp' command definition -define command{ - command_name check_tcp - command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$ - } - - -# 'check_telnet' command definition -define command{ - command_name check_telnet - command_line $USER1$/check_tcp -H $HOSTADDRESS$ -p 23 - } - - -# 'check_udp' command definition -define command{ - command_name check_udp - command_line $USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$ - } - - - - -################################################################################ -# -# SAMPLE HOST CHECK COMMANDS -# -################################################################################ - - -# This command checks to see if a host is "alive" by pinging it -# The check must result in a 100% packet loss or 5 second (5000ms) round trip -# average time to produce a critical error. -# Note: Only one ICMP echo packet is sent (determined by the '-p 1' argument) - -# 'check-host-alive' command definition -define command{ - command_name check-host-alive - command_line $USER1$/check_ping -H $HOSTADDRESS$ -w 3000.0,80% -c 5000.0,100% -p 1 - } - - - - -################################################################################ -# -# SAMPLE NOTIFICATION COMMANDS -# -# These are some example notification commands. They may or may not work on -# your system without modification. As an example, some systems will require -# you to use "/usr/bin/mailx" instead of "/usr/bin/mail" in the commands below. -# -################################################################################ - - -# 'host-notify-by-email' command definition -define command{ - command_name host-notify-by-email - command_line /usr/bin/printf "%b" "***** Nagios 2.10 *****\n\nNotification Type: $NOTIFICATIONTYPE$\nHost: $HOSTNAME$\nState: $HOSTSTATE$\nAddress: $HOSTADDRESS$\nInfo: $HOSTOUTPUT$\n\nDate/Time: $LONGDATETIME$\n" | /bin/mail -s "Host $HOSTSTATE$ alert for $HOSTNAME$!" $CONTACTEMAIL$ - } - - -# 'host-notify-by-epager' command definition -define command{ - command_name host-notify-by-epager - command_line /usr/bin/printf "%b" "Host '$HOSTALIAS$' is $HOSTSTATE$\nInfo: $HOSTOUTPUT$\nTime: $LONGDATETIME$" | /bin/mail -s "$NOTIFICATIONTYPE$ alert - Host $HOSTNAME$ is $HOSTSTATE$" $CONTACTPAGER$ - } - -# 'notify-by-email' command definition -define command{ - command_name notify-by-email - command_line /usr/bin/printf "%b" "***** Nagios 2.10 *****\n\nNotification Type: $NOTIFICATIONTYPE$\n\nService: $SERVICEDESC$\nHost: $HOSTALIAS$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\n\nDate/Time: $LONGDATETIME$\n\nAdditional Info:\n\n$SERVICEOUTPUT$" | /bin/mail -s "** $NOTIFICATIONTYPE$ alert - $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$ - } - - -# 'notify-by-epager' command definition -define command{ - command_name notify-by-epager - command_line /usr/bin/printf "%b" "Service: $SERVICEDESC$\nHost: $HOSTNAME$\nAddress: $HOSTADDRESS$\nState: $SERVICESTATE$\nInfo: $SERVICEOUTPUT$\nDate: $LONGDATETIME$" | /bin/mail -s "$NOTIFICATIONTYPE$: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$" $CONTACTPAGER$ - } - - - - - -################################################################################ -# -# SAMPLE PERFORMANCE DATA COMMANDS -# -# These are sample performance data commands that can be used to send performance -# data output to two text files (one for hosts, another for services). If you -# plan on simply writing performance data out to a file, consider using the -# host_perfdata_file and service_perfdata_file options in the main config file. -# -################################################################################ - - -# '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/log/nagios/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/log/nagios/service-perfdata.out - } - - diff --git a/files/configs/CentOS/localhost.cfg b/files/configs/CentOS/localhost.cfg deleted file mode 100644 index 25dd23f..0000000 --- a/files/configs/CentOS/localhost.cfg +++ /dev/null @@ -1,309 +0,0 @@ -############################################################################### -# LOCALHOST.CFG - SAMPLE OBJECT CONFIG FILE FOR MONITORING THIS MACHINE -# -# Last Modified: 11-27-2006 -# -# NOTE: This config file is intended to servce as an *extremely* simple -# example of how you can create your object configuration file(s). -# -############################################################################### - - - -############################################################################### -############################################################################### -# -# TIME PERIODS -# -############################################################################### -############################################################################### - -# 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 - } - - -# 'workhours' timeperiod definition -define timeperiod{ - timeperiod_name workhours - alias "Normal" Working 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 - } - - -# 'nonworkhours' timeperiod definition -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 - } - - -# 'none' timeperiod definition -define timeperiod{ - timeperiod_name none - alias No Time Is A Good Time - } - - - -############################################################################### -############################################################################### -# -# COMMANDS -# -############################################################################### -############################################################################### - -# NOTE: Sample command definitions can now be found in the sample commands.cfg -# file - - - - -############################################################################### -############################################################################### -# -# CONTACTS -# -############################################################################### -############################################################################### - -# In this simple config file, a single contact will receive all alerts. -# This assumes that you have an account (or email alias) called -# "nagios-admin" on the local host. - -define contact{ - contact_name nagios-admin - alias Nagios Admin - service_notification_period 24x7 - host_notification_period 24x7 - service_notification_options w,u,c,r - host_notification_options d,r - service_notification_commands notify-by-email - host_notification_commands host-notify-by-email - email nagios-admin - } - - - -############################################################################### -############################################################################### -# -# 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 nagios-admin - } - - - -############################################################################### -############################################################################### -# -# HOSTS -# -############################################################################### -############################################################################### - -# 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 - notification_period 24x7 ; Send host notifications at any time - register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! - } - - -# Linux host definition template - This is NOT a real host, just a template! - -define host{ - name linux-server ; The name of this host template - use generic-host ; This template inherits other values from the generic-host template - check_period 24x7 ; By default, Linux hosts are checked round the clock - max_check_attempts 10 ; Check each Linux host 10 times (max) - check_command check-host-alive ; Default command to check Linux hosts - notification_period workhours ; Linux admins hate to be woken up, so we only notify during the day - ; Note that the notification_period variable is being overridden from - ; the value that is inherited from the generic-host template! - notification_interval 120 ; Resend notification every 2 hours - notification_options d,u,r ; Only send notifications for specific host states - contact_groups admins ; Notifications get sent to the admins by default - register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE! - } - - -# Since this is a simple configuration file, we only monitor one host - the -# local host (this machine). - -define host{ - use linux-server ; Name of host template to use - ; This host definition will inherit all variables that are defined - ; in (or inherited by) the linux-server host template definition. - host_name localhost - alias localhost - address 127.0.0.1 - } - - - -############################################################################### -############################################################################### -# -# HOST GROUPS -# -############################################################################### -############################################################################### - -# We only have one host in our simple config file, so there is no need to -# create more than one hostgroup. - -define hostgroup{ - hostgroup_name test - alias Test Servers - members localhost - } - - - -############################################################################### -############################################################################### -# -# SERVICES -# -############################################################################### -############################################################################### - -# Generic service definition template - This is NOT a real service, just a template! - -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 - is_volatile 0 ; The service is not volatile - register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! - } - - -# Local service definition template - This is NOT a real service, just a template! - -define service{ - name local-service ; The name of this service template - use generic-service ; Inherit default values from the generic-service definition - check_period 24x7 ; The service can be checked at any time of the day - max_check_attempts 4 ; Re-check the service up to 4 times in order to determine its final (hard) state - normal_check_interval 5 ; Check the service every 5 minutes under normal conditions - retry_check_interval 1 ; Re-check the service every minute until a hard state can be determined - contact_groups admins ; Notifications get sent out to everyone in the 'admins' group - notification_options w,u,c,r ; Send notifications about warning, unknown, critical, and recovery events - notification_interval 60 ; Re-notify about service problems every hour - notification_period 24x7 ; Notifications can be sent out at any time - register 0 ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE! - } - - -# Define a service to "ping" the local machine - -define service{ - use local-service ; Name of service template to use - host_name localhost - service_description PING - check_command check_ping!100.0,20%!500.0,60% - } - - -# 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 local-service ; Name of service template to use - host_name localhost - service_description Root Partition - check_command check_local_disk!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 local-service ; Name of service template to use - host_name localhost - service_description Current Users - check_command check_local_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 users. - -define service{ - use local-service ; Name of service template to use - host_name localhost - service_description Total Processes - check_command check_local_procs!250!400!RSZDT - } - - - -# Define a service to check the load on the local machine. - -define service{ - use local-service ; Name of service template to use - host_name localhost - service_description Current Load - check_command check_local_load!5.0,4.0,3.0!10.0,6.0,4.0 - } - - - diff --git a/files/configs/CentOS/nagios.cfg b/files/configs/CentOS/nagios.cfg index c3194c8..1354bf8 100644 --- a/files/configs/CentOS/nagios.cfg +++ b/files/configs/CentOS/nagios.cfg @@ -30,53 +30,8 @@ log_file=/var/log/nagios/nagios.log # This can be very useful if you want to keep command definitions # separate from host and contact definitions... -# all puppet native command paths -cfg_file=/etc/nagios/nagios_command.cfg -cfg_file=/etc/nagios/nagios_contact.cfg -cfg_file=/etc/nagios/nagios_contactgroup.cfg -cfg_file=/etc/nagios/nagios_host.cfg -cfg_file=/etc/nagios/nagios_hostextinfo.cfg -cfg_file=/etc/nagios/nagios_hostgroup.cfg -cfg_file=/etc/nagios/nagios_hostgroupescalation.cfg -cfg_file=/etc/nagios/nagios_service.cfg -cfg_file=/etc/nagios/nagios_servicedependency.cfg -cfg_file=/etc/nagios/nagios_serviceescalation.cfg -cfg_file=/etc/nagios/nagios_serviceextinfo.cfg -cfg_file=/etc/nagios/nagios_timeperdiod.cfg - -# Command definitions -cfg_file=/etc/nagios/commands.cfg - -# Host and service definitions for monitoring this machine -cfg_file=/etc/nagios/localhost.cfg - - -# You can split other types of object definitions across several -# config files if you wish (as done here), or keep them all in a -# single config file. - -#cfg_file=/etc/nagios/contactgroups.cfg -#cfg_file=/etc/nagios/contacts.cfg -#cfg_file=/etc/nagios/dependencies.cfg -#cfg_file=/etc/nagios/escalations.cfg -#cfg_file=/etc/nagios/hostgroups.cfg -#cfg_file=/etc/nagios/hosts.cfg -#cfg_file=/etc/nagios/services.cfg -#cfg_file=/etc/nagios/timeperiods.cfg - -# Extended host/service info definitions are now stored along with -# other object definitions: -#cfg_file=/etc/nagios/hostextinfo.cfg -#cfg_file=/etc/nagios/serviceextinfo.cfg - -# You can also tell Nagios to process all config files (with a .cfg -# extension) in a particular directory by using the cfg_dir -# directive as shown below: - -#cfg_dir=/etc/nagios/servers -#cfg_dir=/etc/nagios/printers -#cfg_dir=/etc/nagios/switches -#cfg_dir=/etc/nagios/routers +# Puppet-managed configuration files +cfg_dir=/etc/nagios/conf.d diff --git a/files/configs/Debian/cgi.cfg b/files/configs/Debian/cgi.cfg new file mode 100644 index 0000000..103db8a --- /dev/null +++ b/files/configs/Debian/cgi.cfg @@ -0,0 +1,330 @@ +################################################################# +# +# CGI.CFG - Sample CGI Configuration File for Nagios +# +################################################################# + + +# MAIN CONFIGURATION FILE +# This tells the CGIs where to find your main configuration file. +# The CGIs will read the main and host config files for any other +# data they might need. + +main_config_file=/etc/nagios3/nagios.cfg + + + +# PHYSICAL HTML PATH +# This is the path where the HTML files for Nagios reside. This +# value is used to locate the logo images needed by the statusmap +# and statuswrl CGIs. + +physical_html_path=/usr/share/nagios3/htdocs + + + +# URL HTML PATH +# This is the path portion of the URL that corresponds to the +# physical location of the Nagios HTML files (as defined above). +# This value is used by the CGIs to locate the online documentation +# and graphics. If you access the Nagios pages with an URL like +# http://www.myhost.com/nagios, this value should be '/nagios' +# (without the quotes). + +url_html_path=/nagios3 + + + +# CONTEXT-SENSITIVE HELP +# This option determines whether or not a context-sensitive +# help icon will be displayed for most of the CGIs. +# Values: 0 = disables context-sensitive help +# 1 = enables context-sensitive help + +show_context_help=1 + + + +# PENDING STATES OPTION +# This option determines what states should be displayed in the web +# interface for hosts/services that have not yet been checked. +# Values: 0 = leave hosts/services that have not been check yet in their original state +# 1 = mark hosts/services that have not been checked yet as PENDING + +use_pending_states=1 + +nagios_check_command=/usr/lib/nagios/plugins/check_nagios /var/cache/nagios3/status.dat 5 '/usr/sbin/nagios3' + + +# AUTHENTICATION USAGE +# This option controls whether or not the CGIs will use any +# authentication when displaying host and service information, as +# well as committing commands to Nagios for processing. +# +# Read the HTML documentation to learn how the authorization works! +# +# NOTE: It is a really *bad* idea to disable authorization, unless +# you plan on removing the command CGI (cmd.cgi)! Failure to do +# so will leave you wide open to kiddies messing with Nagios and +# possibly hitting you with a denial of service attack by filling up +# your drive by continuously writing to your command file! +# +# Setting this value to 0 will cause the CGIs to *not* use +# authentication (bad idea), while any other value will make them +# use the authentication functions (the default). + +use_authentication=1 + + + + +# x509 CERT AUTHENTICATION +# When enabled, this option allows you to use x509 cert (SSL) +# authentication in the CGIs. This is an advanced option and should +# not be enabled unless you know what you're doing. + +use_ssl_authentication=0 + + + + +# DEFAULT USER +# Setting this variable will define a default user name that can +# access pages without authentication. This allows people within a +# secure domain (i.e., behind a firewall) to see the current status +# without authenticating. You may want to use this to avoid basic +# authentication if you are not using a secure server since basic +# authentication transmits passwords in the clear. +# +# Important: Do not define a default username unless you are +# running a secure web server and are sure that everyone who has +# access to the CGIs has been authenticated in some manner! If you +# define this variable, anyone who has not authenticated to the web +# server will inherit all rights you assign to this user! + +#default_user_name=guest + + + +# SYSTEM/PROCESS INFORMATION ACCESS +# This option is a comma-delimited list of all usernames that +# have access to viewing the Nagios process information as +# provided by the Extended Information CGI (extinfo.cgi). By +# default, *no one* has access to this unless you choose to +# not use authorization. You may use an asterisk (*) to +# authorize any user who has authenticated to the web server. + +authorized_for_system_information=nagiosadmin + + + +# CONFIGURATION INFORMATION ACCESS +# This option is a comma-delimited list of all usernames that +# can view ALL configuration information (hosts, commands, etc). +# By default, users can only view configuration information +# for the hosts and services they are contacts for. You may use +# an asterisk (*) to authorize any user who has authenticated +# to the web server. + +authorized_for_configuration_information=nagiosadmin + + + +# SYSTEM/PROCESS COMMAND ACCESS +# This option is a comma-delimited list of all usernames that +# can issue shutdown and restart commands to Nagios via the +# command CGI (cmd.cgi). Users in this list can also change +# the program mode to active or standby. By default, *no one* +# has access to this unless you choose to not use authorization. +# You may use an asterisk (*) to authorize any user who has +# authenticated to the web server. + +authorized_for_system_commands=nagiosadmin + + + +# GLOBAL HOST/SERVICE VIEW ACCESS +# These two options are comma-delimited lists of all usernames that +# can view information for all hosts and services that are being +# monitored. By default, users can only view information +# for hosts or services that they are contacts for (unless you +# you choose to not use authorization). You may use an asterisk (*) +# to authorize any user who has authenticated to the web server. + + +authorized_for_all_services=nagiosadmin +authorized_for_all_hosts=nagiosadmin + + + +# GLOBAL HOST/SERVICE COMMAND ACCESS +# These two options are comma-delimited lists of all usernames that +# can issue host or service related commands via the command +# CGI (cmd.cgi) for all hosts and services that are being monitored. +# By default, users can only issue commands for hosts or services +# that they are contacts for (unless you you choose to not use +# authorization). You may use an asterisk (*) to authorize any +# user who has authenticated to the web server. + +authorized_for_all_service_commands=nagiosadmin +authorized_for_all_host_commands=nagiosadmin + + + + +# STATUSMAP BACKGROUND IMAGE +# This option allows you to specify an image to be used as a +# background in the statusmap CGI. It is assumed that the image +# resides in the HTML images path (i.e. /usr/local/nagios/share/images). +# This path is automatically determined by appending "/images" +# to the path specified by the 'physical_html_path' directive. +# Note: The image file may be in GIF, PNG, JPEG, or GD2 format. +# However, I recommend that you convert your image to GD2 format +# (uncompressed), as this will cause less CPU load when the CGI +# generates the image. + +#statusmap_background_image=smbackground.gd2 + + + +# DEFAULT STATUSMAP LAYOUT METHOD +# This option allows you to specify the default layout method +# the statusmap CGI should use for drawing hosts. If you do +# not use this option, the default is to use user-defined +# coordinates. Valid options are as follows: +# 0 = User-defined coordinates +# 1 = Depth layers +# 2 = Collapsed tree +# 3 = Balanced tree +# 4 = Circular +# 5 = Circular (Marked Up) + +default_statusmap_layout=5 + + + +# DEFAULT STATUSWRL LAYOUT METHOD +# This option allows you to specify the default layout method +# the statuswrl (VRML) CGI should use for drawing hosts. If you +# do not use this option, the default is to use user-defined +# coordinates. Valid options are as follows: +# 0 = User-defined coordinates +# 2 = Collapsed tree +# 3 = Balanced tree +# 4 = Circular + +default_statuswrl_layout=4 + + + +# STATUSWRL INCLUDE +# This option allows you to include your own objects in the +# generated VRML world. It is assumed that the file +# resides in the HTML path (i.e. /usr/local/nagios/share). + +#statuswrl_include=myworld.wrl + + + +# PING SYNTAX +# This option determines what syntax should be used when +# attempting to ping a host from the WAP interface (using +# the statuswml CGI. You must include the full path to +# the ping binary, along with all required options. The +# $HOSTADDRESS$ macro is substituted with the address of +# the host before the command is executed. +# Please note that the syntax for the ping binary is +# notorious for being different on virtually ever *NIX +# OS and distribution, so you may have to tweak this to +# work on your system. + +ping_syntax=/bin/ping -n -U -c 5 $HOSTADDRESS$ + + + +# REFRESH RATE +# This option allows you to specify the refresh rate in seconds +# of various CGIs (status, statusmap, extinfo, and outages). + +refresh_rate=90 + + + +# ESCAPE HTML TAGS +# This option determines whether HTML tags in host and service +# status output is escaped in the web interface. If enabled, +# your plugin output will not be able to contain clickable links. + +escape_html_tags=1 + + + + +# SOUND OPTIONS +# These options allow you to specify an optional audio file +# that should be played in your browser window when there are +# problems on the network. The audio files are used only in +# the status CGI. Only the sound for the most critical problem +# will be played. Order of importance (higher to lower) is as +# follows: unreachable hosts, down hosts, critical services, +# warning services, and unknown services. If there are no +# visible problems, the sound file optionally specified by +# 'normal_sound' variable will be played. +# +# +# <varname>=<sound_file> +# +# Note: All audio files must be placed in the /media subdirectory +# under the HTML path (i.e. /usr/local/nagios/share/media/). + +#host_unreachable_sound=hostdown.wav +#host_down_sound=hostdown.wav +#service_critical_sound=critical.wav +#service_warning_sound=warning.wav +#service_unknown_sound=warning.wav +#normal_sound=noproblem.wav + + + +# URL TARGET FRAMES +# These options determine the target frames in which notes and +# action URLs will open. + +action_url_target=_blank +notes_url_target=_blank + + + + +# LOCK AUTHOR NAMES OPTION +# This option determines whether users can change the author name +# when submitting comments, scheduling downtime. If disabled, the +# author names will be locked into their contact name, as defined in Nagios. +# Values: 0 = allow editing author names +# 1 = lock author names (disallow editing) + +lock_author_names=1 + + + + +# SPLUNK INTEGRATION OPTIONS +# These options allow you to enable integration with Splunk +# in the web interface. If enabled, you'll be presented with +# "Splunk It" links in various places in the CGIs (log file, +# alert history, host/service detail, etc). Useful if you're +# trying to research why a particular problem occurred. +# For more information on Splunk, visit http://www.splunk.com/ + +# This option determines whether the Splunk integration is enabled +# Values: 0 = disable Splunk integration +# 1 = enable Splunk integration + +#enable_splunk_integration=1 + + +# This option should be the URL used to access your instance of Splunk + +#splunk_url=http://127.0.0.1:8000/ + + diff --git a/files/configs/Debian/nagios.cfg b/files/configs/Debian/nagios.cfg new file mode 100644 index 0000000..a588f55 --- /dev/null +++ b/files/configs/Debian/nagios.cfg @@ -0,0 +1,1272 @@ +############################################################################## +# +# NAGIOS.CFG - Sample Main Config File for Nagios +# +# +############################################################################## + + +# LOG FILE +# This is the main log file where service and host events are logged +# for historical purposes. This should be the first option specified +# in the config file!!! + +log_file=/var/log/nagios3/nagios.log + + + +# OBJECT CONFIGURATION FILE(S) +# These are the object configuration files in which you define hosts, +# host groups, contacts, contact groups, services, etc. +# You can split your object definitions across several config files +# if you wish (as shown below), or keep them all in a single config file. + +# Puppet-managed configuration files +cfg_dir=/etc/nagios3/conf.d + +# Debian also defaults to using the check commands defined by the debian +# nagios-plugins package +#cfg_dir=/etc/nagios-plugins/config + + + +# OBJECT CACHE FILE +# This option determines where object definitions are cached when +# Nagios starts/restarts. The CGIs read object definitions from +# this cache file (rather than looking at the object config files +# directly) in order to prevent inconsistencies that can occur +# when the config files are modified after Nagios starts. + +object_cache_file=/var/cache/nagios3/objects.cache + + + +# PRE-CACHED OBJECT FILE +# This options determines the location of the precached object file. +# If you run Nagios with the -p command line option, it will preprocess +# your object configuration file(s) and write the cached config to this +# file. You can then start Nagios with the -u option to have it read +# object definitions from this precached file, rather than the standard +# object configuration files (see the cfg_file and cfg_dir options above). +# Using a precached object file can speed up the time needed to (re)start +# the Nagios process if you've got a large and/or complex configuration. +# Read the documentation section on optimizing Nagios to find our more +# about how this feature works. + +precached_object_file=/var/lib/nagios3/objects.precache + + + +# RESOURCE FILE +# This is an optional resource file that contains $USERx$ macro +# definitions. Multiple resource files can be specified by using +# multiple resource_file definitions. The CGIs will not attempt to +# read the contents of resource files, so information that is +# considered to be sensitive (usernames, passwords, etc) can be +# defined as macros in this file and restrictive permissions (600) +# can be placed on this file. + +resource_file=/etc/nagios3/private/resource.cfg + + + +# STATUS FILE +# This is where the current status of all monitored services and +# hosts is stored. Its contents are read and processed by the CGIs. +# The contents of the status file are deleted every time Nagios +# restarts. + +status_file=/var/cache/nagios3/status.dat + + + +# STATUS FILE UPDATE INTERVAL +# This option determines the frequency (in seconds) that +# Nagios will periodically dump program, host, and +# service status data. + +status_update_interval=10 + + + +# NAGIOS USER +# This determines the effective user that Nagios should run as. +# You can either supply a username or a UID. + +nagios_user=nagios + + + +# NAGIOS GROUP +# This determines the effective group that Nagios should run as. +# You can either supply a group name or a GID. + +nagios_group=nagios + + + +# EXTERNAL COMMAND OPTION +# This option allows you to specify whether or not Nagios should check +# for external commands (in the command file defined below). By default +# Nagios will *not* check for external commands, just to be on the +# cautious side. If you want to be able to use the CGI command interface +# you will have to enable this. +# Values: 0 = disable commands, 1 = enable commands + +check_external_commands=0 + + + +# EXTERNAL COMMAND CHECK INTERVAL +# This is the interval at which Nagios should check for external commands. +# This value works of the interval_length you specify later. If you leave +# that at its default value of 60 (seconds), a value of 1 here will cause +# Nagios to check for external commands every minute. If you specify a +# number followed by an "s" (i.e. 15s), this will be interpreted to mean +# actual seconds rather than a multiple of the interval_length variable. +# Note: In addition to reading the external command file at regularly +# scheduled intervals, Nagios will also check for external commands after +# event handlers are executed. +# NOTE: Setting this value to -1 causes Nagios to check the external +# command file as often as possible. + +#command_check_interval=15s +command_check_interval=-1 + + + +# EXTERNAL COMMAND FILE +# This is the file that Nagios checks for external command requests. +# It is also where the command CGI will write commands that are submitted +# by users, so it must be writeable by the user that the web server +# is running as (usually 'nobody'). Permissions should be set at the +# directory level instead of on the file, as the file is deleted every +# time its contents are processed. +# Debian Users: In case you didn't read README.Debian yet, _NOW_ is the +# time to do it. + +command_file=/var/lib/nagios3/rw/nagios.cmd + + + +# EXTERNAL COMMAND BUFFER SLOTS +# This settings is used to tweak the number of items or "slots" that +# the Nagios daemon should allocate to the buffer that holds incoming +# external commands before they are processed. As external commands +# are processed by the daemon, they are removed from the buffer. + +external_command_buffer_slots=4096 + + + +# LOCK FILE +# This is the lockfile that Nagios will use to store its PID number +# in when it is running in daemon mode. + +lock_file=/var/run/nagios3/nagios3.pid + + + +# TEMP FILE +# This is a temporary file that is used as scratch space when Nagios +# updates the status log, cleans the comment file, etc. This file +# is created, used, and deleted throughout the time that Nagios is +# running. + +temp_file=/var/cache/nagios3/nagios.tmp + + + +# TEMP PATH +# This is path where Nagios can create temp files for service and +# host check results, etc. + +temp_path=/tmp + + + +# EVENT BROKER OPTIONS +# Controls what (if any) data gets sent to the event broker. +# Values: 0 = Broker nothing +# -1 = Broker everything +# <other> = See documentation + +event_broker_options=-1 + + + +# EVENT BROKER MODULE(S) +# This directive is used to specify an event broker module that should +# by loaded by Nagios at startup. Use multiple directives if you want +# to load more than one module. Arguments that should be passed to +# the module at startup are seperated from the module path by a space. +# +#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING !!! WARNING +#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! +# +# Do NOT overwrite modules while they are being used by Nagios or Nagios +# will crash in a fiery display of SEGFAULT glory. This is a bug/limitation +# either in dlopen(), the kernel, and/or the filesystem. And maybe Nagios... +# +# The correct/safe way of updating a module is by using one of these methods: +# 1. Shutdown Nagios, replace the module file, restart Nagios +# 2. Delete the original module file, move the new module file into place, restart Nagios +# +# Example: +# +# broker_module=<modulepath> [moduleargs] + +#broker_module=/somewhere/module1.o +#broker_module=/somewhere/module2.o arg1 arg2=3 debug=0 + + + +# LOG ROTATION METHOD +# This is the log rotation method that Nagios should use to rotate +# the main log file. Values are as follows.. +# n = None - don't rotate the log +# h = Hourly rotation (top of the hour) +# d = Daily rotation (midnight every day) +# w = Weekly rotation (midnight on Saturday evening) +# m = Monthly rotation (midnight last day of month) + +log_rotation_method=d + + + +# LOG ARCHIVE PATH +# This is the directory where archived (rotated) log files should be +# placed (assuming you've chosen to do log rotation). + +log_archive_path=/var/log/nagios3/archives + + + +# LOGGING OPTIONS +# If you want messages logged to the syslog facility, as well as the +# Nagios log file set this option to 1. If not, set it to 0. + +use_syslog=1 + + + +# NOTIFICATION LOGGING OPTION +# If you don't want notifications to be logged, set this value to 0. +# If notifications should be logged, set the value to 1. + +log_notifications=1 + + + +# SERVICE RETRY LOGGING OPTION +# If you don't want service check retries to be logged, set this value +# to 0. If retries should be logged, set the value to 1. + +log_service_retries=1 + + + +# HOST RETRY LOGGING OPTION +# If you don't want host check retries to be logged, set this value to +# 0. If retries should be logged, set the value to 1. + +log_host_retries=1 + + + +# EVENT HANDLER LOGGING OPTION +# If you don't want host and service event handlers to be logged, set +# this value to 0. If event handlers should be logged, set the value +# to 1. + +log_event_handlers=1 + + + +# INITIAL STATES LOGGING OPTION +# If you want Nagios to log all initial host and service states to +# the main log file (the first time the service or host is checked) +# you can enable this option by setting this value to 1. If you +# are not using an external application that does long term state +# statistics reporting, you do not need to enable this option. In +# this case, set the value to 0. + +log_initial_states=0 + + + +# EXTERNAL COMMANDS LOGGING OPTION +# If you don't want Nagios to log external commands, set this value +# to 0. If external commands should be logged, set this value to 1. +# Note: This option does not include logging of passive service +# checks - see the option below for controlling whether or not +# passive checks are logged. + +log_external_commands=1 + + + +# PASSIVE CHECKS LOGGING OPTION +# If you don't want Nagios to log passive host and service checks, set +# this value to 0. If passive checks should be logged, set +# this value to 1. + +log_passive_checks=1 + + + +# GLOBAL HOST AND SERVICE EVENT HANDLERS +# These options allow you to specify a host and service event handler +# command that is to be run for every host or service state change. +# The global event handler is executed immediately prior to the event +# handler that you have optionally specified in each host or +# service definition. The command argument is the short name of a +# command definition that you define in your host configuration file. +# Read the HTML docs for more information. + +#global_host_event_handler=somecommand +#global_service_event_handler=somecommand + + + +# SERVICE INTER-CHECK DELAY METHOD +# This is the method that Nagios should use when initially +# "spreading out" service checks when it starts monitoring. The +# default is to use smart delay calculation, which will try to +# space all service checks out evenly to minimize CPU load. +# Using the dumb setting will cause all checks to be scheduled +# at the same time (with no delay between them)! This is not a +# good thing for production, but is useful when testing the +# parallelization functionality. +# n = None - don't use any delay between checks +# d = Use a "dumb" delay of 1 second between checks +# s = Use "smart" inter-check delay calculation +# x.xx = Use an inter-check delay of x.xx seconds + +service_inter_check_delay_method=s + + + +# MAXIMUM SERVICE CHECK SPREAD +# This variable determines the timeframe (in minutes) from the +# program start time that an initial check of all services should +# be completed. Default is 30 minutes. + +max_service_check_spread=30 + + + +# SERVICE CHECK INTERLEAVE FACTOR +# This variable determines how service checks are interleaved. +# Interleaving the service checks allows for a more even +# distribution of service checks and reduced load on remote +# hosts. Setting this value to 1 is equivalent to how versions +# of Nagios previous to 0.0.5 did service checks. Set this +# value to s (smart) for automatic calculation of the interleave +# factor unless you have a specific reason to change it. +# s = Use "smart" interleave factor calculation +# x = Use an interleave factor of x, where x is a +# number greater than or equal to 1. + +service_interleave_factor=s + + + +# HOST INTER-CHECK DELAY METHOD +# This is the method that Nagios should use when initially +# "spreading out" host checks when it starts monitoring. The +# default is to use smart delay calculation, which will try to +# space all host checks out evenly to minimize CPU load. +# Using the dumb setting will cause all checks to be scheduled +# at the same time (with no delay between them)! +# n = None - don't use any delay between checks +# d = Use a "dumb" delay of 1 second between checks +# s = Use "smart" inter-check delay calculation +# x.xx = Use an inter-check delay of x.xx seconds + +host_inter_check_delay_method=s + + + +# MAXIMUM HOST CHECK SPREAD +# This variable determines the timeframe (in minutes) from the +# program start time that an initial check of all hosts should +# be completed. Default is 30 minutes. + +max_host_check_spread=30 + + + +# MAXIMUM CONCURRENT SERVICE CHECKS +# This option allows you to specify the maximum number of +# service checks that can be run in parallel at any given time. +# Specifying a value of 1 for this variable essentially prevents +# any service checks from being parallelized. A value of 0 +# will not restrict the number of concurrent checks that are +# being executed. + +max_concurrent_checks=0 + + + +# HOST AND SERVICE CHECK REAPER FREQUENCY +# This is the frequency (in seconds!) that Nagios will process +# the results of host and service checks. + +check_result_reaper_frequency=10 + + + + +# MAX CHECK RESULT REAPER TIME +# This is the max amount of time (in seconds) that a single +# check result reaper event will be allowed to run before +# returning control back to Nagios so it can perform other +# duties. + +max_check_result_reaper_time=30 + + + + +# CHECK RESULT PATH +# This is directory where Nagios stores the results of host and +# service checks that have not yet been processed. +# +# Note: Make sure that only one instance of Nagios has access +# to this directory! + +check_result_path=/var/lib/nagios3/spool/checkresults + + + + +# MAX CHECK RESULT FILE AGE +# This option determines the maximum age (in seconds) which check +# result files are considered to be valid. Files older than this +# threshold will be mercilessly deleted without further processing. + +max_check_result_file_age=3600 + + + + +# CACHED HOST CHECK HORIZON +# This option determines the maximum amount of time (in seconds) +# that the state of a previous host check is considered current. +# Cached host states (from host checks that were performed more +# recently that the timeframe specified by this value) can immensely +# improve performance in regards to the host check logic. +# Too high of a value for this option may result in inaccurate host +# states being used by Nagios, while a lower value may result in a +# performance hit for host checks. Use a value of 0 to disable host +# check caching. + +cached_host_check_horizon=15 + + + +# CACHED SERVICE CHECK HORIZON +# This option determines the maximum amount of time (in seconds) +# that the state of a previous service check is considered current. +# Cached service states (from service checks that were performed more +# recently that the timeframe specified by this value) can immensely +# improve performance in regards to predictive dependency checks. +# Use a value of 0 to disable service check caching. + +cached_service_check_horizon=15 + + + +# ENABLE PREDICTIVE HOST DEPENDENCY CHECKS +# This option determines whether or not Nagios will attempt to execute +# checks of hosts when it predicts that future dependency logic test +# may be needed. These predictive checks can help ensure that your +# host dependency logic works well. +# Values: +# 0 = Disable predictive checks +# 1 = Enable predictive checks (default) + +enable_predictive_host_dependency_checks=1 + + + +# ENABLE PREDICTIVE SERVICE DEPENDENCY CHECKS +# This option determines whether or not Nagios will attempt to execute +# checks of service when it predicts that future dependency logic test +# may be needed. These predictive checks can help ensure that your +# service dependency logic works well. +# Values: +# 0 = Disable predictive checks +# 1 = Enable predictive checks (default) + +enable_predictive_service_dependency_checks=1 + + + +# SOFT STATE DEPENDENCIES +# This option determines whether or not Nagios will use soft state +# information when checking host and service dependencies. Normally +# Nagios will only use the latest hard host or service state when +# checking dependencies. If you want it to use the latest state (regardless +# of whether its a soft or hard state type), enable this option. +# Values: +# 0 = Don't use soft state dependencies (default) +# 1 = Use soft state dependencies + +soft_state_dependencies=0 + + + +# TIME CHANGE ADJUSTMENT THRESHOLDS +# These options determine when Nagios will react to detected changes +# in system time (either forward or backwards). + +#time_change_threshold=900 + + + +# AUTO-RESCHEDULING OPTION +# This option determines whether or not Nagios will attempt to +# automatically reschedule active host and service checks to +# "smooth" them out over time. This can help balance the load on +# the monitoring server. +# WARNING: THIS IS AN EXPERIMENTAL FEATURE - IT CAN DEGRADE +# PERFORMANCE, RATHER THAN INCREASE IT, IF USED IMPROPERLY + +auto_reschedule_checks=0 + + + +# AUTO-RESCHEDULING INTERVAL +# This option determines how often (in seconds) Nagios will +# attempt to automatically reschedule checks. This option only +# has an effect if the auto_reschedule_checks option is enabled. +# Default is 30 seconds. +# WARNING: THIS IS AN EXPERIMENTAL FEATURE - IT CAN DEGRADE +# PERFORMANCE, RATHER THAN INCREASE IT, IF USED IMPROPERLY + +auto_rescheduling_interval=30 + + + +# AUTO-RESCHEDULING WINDOW +# This option determines the "window" of time (in seconds) that +# Nagios will look at when automatically rescheduling checks. +# Only host and service checks that occur in the next X seconds +# (determined by this variable) will be rescheduled. This option +# only has an effect if the auto_reschedule_checks option is +# enabled. Default is 180 seconds (3 minutes). +# WARNING: THIS IS AN EXPERIMENTAL FEATURE - IT CAN DEGRADE +# PERFORMANCE, RATHER THAN INCREASE IT, IF USED IMPROPERLY + +auto_rescheduling_window=180 + + + +# SLEEP TIME +# This is the number of seconds to sleep between checking for system +# events and service checks that need to be run. + +sleep_time=0.25 + + + +# TIMEOUT VALUES +# These options control how much time Nagios will allow various +# types of commands to execute before killing them off. Options +# are available for controlling maximum time allotted for +# service checks, host checks, event handlers, notifications, the +# ocsp command, and performance data commands. All values are in +# seconds. + +service_check_timeout=60 +host_check_timeout=30 +event_handler_timeout=30 +notification_timeout=30 +ocsp_timeout=5 +perfdata_timeout=5 + + + +# RETAIN STATE INFORMATION +# This setting determines whether or not Nagios will save state +# information for services and hosts before it shuts down. Upon +# startup Nagios will reload all saved service and host state +# information before starting to monitor. This is useful for +# maintaining long-term data on state statistics, etc, but will +# slow Nagios down a bit when it (re)starts. Since its only +# a one-time penalty, I think its well worth the additional +# startup delay. + +retain_state_information=1 + + + +# STATE RETENTION FILE +# This is the file that Nagios should use to store host and +# service state information before it shuts down. The state +# information in this file is also read immediately prior to +# starting to monitor the network when Nagios is restarted. +# This file is used only if the preserve_state_information +# variable is set to 1. + +state_retention_file=/var/lib/nagios3/retention.dat + + + +# RETENTION DATA UPDATE INTERVAL +# This setting determines how often (in minutes) that Nagios +# will automatically save retention data during normal operation. +# If you set this value to 0, Nagios will not save retention +# data at regular interval, but it will still save retention +# data before shutting down or restarting. If you have disabled +# state retention, this option has no effect. + +retention_update_interval=60 + + + +# USE RETAINED PROGRAM STATE +# This setting determines whether or not Nagios will set +# program status variables based on the values saved in the +# retention file. If you want to use retained program status +# information, set this value to 1. If not, set this value +# to 0. + +use_retained_program_state=1 + + + +# USE RETAINED SCHEDULING INFO +# This setting determines whether or not Nagios will retain +# the scheduling info (next check time) for hosts and services +# based on the values saved in the retention file. If you +# If you want to use retained scheduling info, set this +# value to 1. If not, set this value to 0. + +use_retained_scheduling_info=1 + + + +# RETAINED ATTRIBUTE MASKS (ADVANCED FEATURE) +# The following variables are used to specify specific host and +# service attributes that should *not* be retained by Nagios during +# program restarts. +# +# The values of the masks are bitwise ANDs of values specified +# by the "MODATTR_" definitions found in include/common.h. +# For example, if you do not want the current enabled/disabled state +# of flap detection and event handlers for hosts to be retained, you +# would use a value of 24 for the host attribute mask... +# MODATTR_EVENT_HANDLER_ENABLED (8) + MODATTR_FLAP_DETECTION_ENABLED (16) = 24 + +# This mask determines what host attributes are not retained +retained_host_attribute_mask=0 + +# This mask determines what service attributes are not retained +retained_service_attribute_mask=0 + +# These two masks determine what process attributes are not retained. +# There are two masks, because some process attributes have host and service +# options. For example, you can disable active host checks, but leave active +# service checks enabled. +retained_process_host_attribute_mask=0 +retained_process_service_attribute_mask=0 + +# These two masks determine what contact attributes are not retained. +# There are two masks, because some contact attributes have host and +# service options. For example, you can disable host notifications for +# a contact, but leave service notifications enabled for them. +retained_contact_host_attribute_mask=0 +retained_contact_service_attribute_mask=0 + + + +# INTERVAL LENGTH +# This is the seconds per unit interval as used in the +# host/contact/service configuration files. Setting this to 60 means +# that each interval is one minute long (60 seconds). Other settings +# have not been tested much, so your mileage is likely to vary... + +interval_length=60 + + + +# AGGRESSIVE HOST CHECKING OPTION +# If you don't want to turn on aggressive host checking features, set +# this value to 0 (the default). Otherwise set this value to 1 to +# enable the aggressive check option. Read the docs for more info +# on what aggressive host check is or check out the source code in +# base/checks.c + +use_aggressive_host_checking=0 + + + +# SERVICE CHECK EXECUTION OPTION +# This determines whether or not Nagios will actively execute +# service checks when it initially starts. If this option is +# disabled, checks are not actively made, but Nagios can still +# receive and process passive check results that come in. Unless +# you're implementing redundant hosts or have a special need for +# disabling the execution of service checks, leave this enabled! +# Values: 1 = enable checks, 0 = disable checks + +execute_service_checks=1 + + + +# PASSIVE SERVICE CHECK ACCEPTANCE OPTION +# This determines whether or not Nagios will accept passive +# service checks results when it initially (re)starts. +# Values: 1 = accept passive checks, 0 = reject passive checks + +accept_passive_service_checks=1 + + + +# HOST CHECK EXECUTION OPTION +# This determines whether or not Nagios will actively execute +# host checks when it initially starts. If this option is +# disabled, checks are not actively made, but Nagios can still +# receive and process passive check results that come in. Unless +# you're implementing redundant hosts or have a special need for +# disabling the execution of host checks, leave this enabled! +# Values: 1 = enable checks, 0 = disable checks + +execute_host_checks=1 + + + +# PASSIVE HOST CHECK ACCEPTANCE OPTION +# This determines whether or not Nagios will accept passive +# host checks results when it initially (re)starts. +# Values: 1 = accept passive checks, 0 = reject passive checks + +accept_passive_host_checks=1 + + + +# NOTIFICATIONS OPTION +# This determines whether or not Nagios will sent out any host or +# service notifications when it is initially (re)started. +# Values: 1 = enable notifications, 0 = disable notifications + +enable_notifications=1 + + + +# EVENT HANDLER USE OPTION +# This determines whether or not Nagios will run any host or +# service event handlers when it is initially (re)started. Unless +# you're implementing redundant hosts, leave this option enabled. +# Values: 1 = enable event handlers, 0 = disable event handlers + +enable_event_handlers=1 + + + +# PROCESS PERFORMANCE DATA OPTION +# This determines whether or not Nagios will process performance +# data returned from service and host checks. If this option is +# enabled, host performance data will be processed using the +# host_perfdata_command (defined below) and service performance +# data will be processed using the service_perfdata_command (also +# defined below). Read the HTML docs for more information on +# performance data. +# Values: 1 = process performance data, 0 = do not process performance data + +process_performance_data=0 + + + +# HOST AND SERVICE PERFORMANCE DATA PROCESSING COMMANDS +# These commands are run after every host and service check is +# performed. These commands are executed only if the +# enable_performance_data option (above) is set to 1. The command +# argument is the short name of a command definition that you +# define in your host configuration file. Read the HTML docs for +# more information on performance data. + +#host_perfdata_command=process-host-perfdata +#service_perfdata_command=process-service-perfdata + + + +# HOST AND SERVICE PERFORMANCE DATA FILES +# These files are used to store host and service performance data. +# Performance data is only written to these files if the +# enable_performance_data option (above) is set to 1. + +#host_perfdata_file=/tmp/host-perfdata +#service_perfdata_file=/tmp/service-perfdata + + + +# HOST AND SERVICE PERFORMANCE DATA FILE TEMPLATES +# These options determine what data is written (and how) to the +# performance data files. The templates may contain macros, special +# characters (\t for tab, \r for carriage return, \n for newline) +# and plain text. A newline is automatically added after each write +# to the performance data file. Some examples of what you can do are +# shown below. + +#host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$ +#service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$ + + + +# HOST AND SERVICE PERFORMANCE DATA FILE MODES +# This option determines whether or not the host and service +# performance data files are opened in write ("w") or append ("a") +# mode. If you want to use named pipes, you should use the special +# pipe ("p") mode which avoid blocking at startup, otherwise you will +# likely want the defult append ("a") mode. + +#host_perfdata_file_mode=a +#service_perfdata_file_mode=a + + + +# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING INTERVAL +# These options determine how often (in seconds) the host and service +# performance data files are processed using the commands defined +# below. A value of 0 indicates the files should not be periodically +# processed. + +#host_perfdata_file_processing_interval=0 +#service_perfdata_file_processing_interval=0 + + + +# HOST AND SERVICE PERFORMANCE DATA FILE PROCESSING COMMANDS +# These commands are used to periodically process the host and +# service performance data files. The interval at which the +# processing occurs is determined by the options above. + +#host_perfdata_file_processing_command=process-host-perfdata-file +#service_perfdata_file_processing_command=process-service-perfdata-file + + + +# OBSESS OVER SERVICE CHECKS OPTION +# This determines whether or not Nagios will obsess over service +# checks and run the ocsp_command defined below. Unless you're +# planning on implementing distributed monitoring, do not enable +# this option. Read the HTML docs for more information on +# implementing distributed monitoring. +# Values: 1 = obsess over services, 0 = do not obsess (default) + +obsess_over_services=0 + + + +# OBSESSIVE COMPULSIVE SERVICE PROCESSOR COMMAND +# This is the command that is run for every service check that is +# processed by Nagios. This command is executed only if the +# obsess_over_services option (above) is set to 1. The command +# argument is the short name of a command definition that you +# define in your host configuration file. Read the HTML docs for +# more information on implementing distributed monitoring. + +#ocsp_command=somecommand + + + +# OBSESS OVER HOST CHECKS OPTION +# This determines whether or not Nagios will obsess over host +# checks and run the ochp_command defined below. Unless you're +# planning on implementing distributed monitoring, do not enable +# this option. Read the HTML docs for more information on +# implementing distributed monitoring. +# Values: 1 = obsess over hosts, 0 = do not obsess (default) + +obsess_over_hosts=0 + + + +# OBSESSIVE COMPULSIVE HOST PROCESSOR COMMAND +# This is the command that is run for every host check that is +# processed by Nagios. This command is executed only if the +# obsess_over_hosts option (above) is set to 1. The command +# argument is the short name of a command definition that you +# define in your host configuration file. Read the HTML docs for +# more information on implementing distributed monitoring. + +#ochp_command=somecommand + + + +# TRANSLATE PASSIVE HOST CHECKS OPTION +# This determines whether or not Nagios will translate +# DOWN/UNREACHABLE passive host check results into their proper +# state for this instance of Nagios. This option is useful +# if you have distributed or failover monitoring setup. In +# these cases your other Nagios servers probably have a different +# "view" of the network, with regards to the parent/child relationship +# of hosts. If a distributed monitoring server thinks a host +# is DOWN, it may actually be UNREACHABLE from the point of +# this Nagios instance. Enabling this option will tell Nagios +# to translate any DOWN or UNREACHABLE host states it receives +# passively into the correct state from the view of this server. +# Values: 1 = perform translation, 0 = do not translate (default) + +translate_passive_host_checks=0 + + + +# PASSIVE HOST CHECKS ARE SOFT OPTION +# This determines whether or not Nagios will treat passive host +# checks as being HARD or SOFT. By default, a passive host check +# result will put a host into a HARD state type. This can be changed +# by enabling this option. +# Values: 0 = passive checks are HARD, 1 = passive checks are SOFT + +passive_host_checks_are_soft=0 + + + +# ORPHANED HOST/SERVICE CHECK OPTIONS +# These options determine whether or not Nagios will periodically +# check for orphaned host service checks. Since service checks are +# not rescheduled until the results of their previous execution +# instance are processed, there exists a possibility that some +# checks may never get rescheduled. A similar situation exists for +# host checks, although the exact scheduling details differ a bit +# from service checks. Orphaned checks seem to be a rare +# problem and should not happen under normal circumstances. +# If you have problems with service checks never getting +# rescheduled, make sure you have orphaned service checks enabled. +# Values: 1 = enable checks, 0 = disable checks + +check_for_orphaned_services=1 +check_for_orphaned_hosts=1 + + + +# SERVICE FRESHNESS CHECK OPTION +# This option determines whether or not Nagios will periodically +# check the "freshness" of service results. Enabling this option +# is useful for ensuring passive checks are received in a timely +# manner. +# Values: 1 = enabled freshness checking, 0 = disable freshness checking + +check_service_freshness=1 + + + +# SERVICE FRESHNESS CHECK INTERVAL +# This setting determines how often (in seconds) Nagios will +# check the "freshness" of service check results. If you have +# disabled service freshness checking, this option has no effect. + +service_freshness_check_interval=60 + + + +# HOST FRESHNESS CHECK OPTION +# This option determines whether or not Nagios will periodically +# check the "freshness" of host results. Enabling this option +# is useful for ensuring passive checks are received in a timely +# manner. +# Values: 1 = enabled freshness checking, 0 = disable freshness checking + +check_host_freshness=0 + + + +# HOST FRESHNESS CHECK INTERVAL +# This setting determines how often (in seconds) Nagios will +# check the "freshness" of host check results. If you have +# disabled host freshness checking, this option has no effect. + +host_freshness_check_interval=60 + + + + +# ADDITIONAL FRESHNESS THRESHOLD LATENCY +# This setting determines the number of seconds that Nagios +# will add to any host and service freshness thresholds that +# it calculates (those not explicitly specified by the user). + +additional_freshness_latency=15 + + + + +# FLAP DETECTION OPTION +# This option determines whether or not Nagios will try +# and detect hosts and services that are "flapping". +# Flapping occurs when a host or service changes between +# states too frequently. When Nagios detects that a +# host or service is flapping, it will temporarily suppress +# notifications for that host/service until it stops +# flapping. Flap detection is very experimental, so read +# the HTML documentation before enabling this feature! +# Values: 1 = enable flap detection +# 0 = disable flap detection (default) + +enable_flap_detection=1 + + + +# FLAP DETECTION THRESHOLDS FOR HOSTS AND SERVICES +# Read the HTML documentation on flap detection for +# an explanation of what this option does. This option +# has no effect if flap detection is disabled. + +low_service_flap_threshold=5.0 +high_service_flap_threshold=20.0 +low_host_flap_threshold=5.0 +high_host_flap_threshold=20.0 + + + +# DATE FORMAT OPTION +# This option determines how short dates are displayed. Valid options +# include: +# us (MM-DD-YYYY HH:MM:SS) +# euro (DD-MM-YYYY HH:MM:SS) +# iso8601 (YYYY-MM-DD HH:MM:SS) +# strict-iso8601 (YYYY-MM-DDTHH:MM:SS) +# + +date_format=iso8601 + + + + +# TIMEZONE OFFSET +# This option is used to override the default timezone that this +# instance of Nagios runs in. If not specified, Nagios will use +# the system configured timezone. +# +# NOTE: In order to display the correct timezone in the CGIs, you +# will also need to alter the Apache directives for the CGI path +# to include your timezone. Example: +# +# <Directory "/usr/local/nagios/sbin/"> +# SetEnv TZ "Australia/Brisbane" +# ... +# </Directory> + +#use_timezone=US/Mountain +#use_timezone=Australia/Brisbane + + + + +# P1.PL FILE LOCATION +# This value determines where the p1.pl perl script (used by the +# embedded Perl interpreter) is located. If you didn't compile +# Nagios with embedded Perl support, this option has no effect. + +p1_file=/usr/lib/nagios3/p1.pl + + + +# EMBEDDED PERL INTERPRETER OPTION +# This option determines whether or not the embedded Perl interpreter +# will be enabled during runtime. This option has no effect if Nagios +# has not been compiled with support for embedded Perl. +# Values: 0 = disable interpreter, 1 = enable interpreter + +enable_embedded_perl=1 + + + +# EMBEDDED PERL USAGE OPTION +# This option determines whether or not Nagios will process Perl plugins +# and scripts with the embedded Perl interpreter if the plugins/scripts +# do not explicitly indicate whether or not it is okay to do so. Read +# the HTML documentation on the embedded Perl interpreter for more +# information on how this option works. + +use_embedded_perl_implicitly=1 + + + +# ILLEGAL OBJECT NAME CHARACTERS +# This option allows you to specify illegal characters that cannot +# be used in host names, service descriptions, or names of other +# object types. + +illegal_object_name_chars=`~!$%^&*|'"<>?,()= + + + +# ILLEGAL MACRO OUTPUT CHARACTERS +# This option allows you to specify illegal characters that are +# stripped from macros before being used in notifications, event +# handlers, etc. This DOES NOT affect macros used in service or +# host check commands. +# The following macros are stripped of the characters you specify: +# $HOSTOUTPUT$ +# $HOSTPERFDATA$ +# $HOSTACKAUTHOR$ +# $HOSTACKCOMMENT$ +# $SERVICEOUTPUT$ +# $SERVICEPERFDATA$ +# $SERVICEACKAUTHOR$ +# $SERVICEACKCOMMENT$ + +illegal_macro_output_chars=`~$&|'"<> + + + +# REGULAR EXPRESSION MATCHING +# This option controls whether or not regular expression matching +# takes place in the object config files. Regular expression +# matching is used to match host, hostgroup, service, and service +# group names/descriptions in some fields of various object types. +# Values: 1 = enable regexp matching, 0 = disable regexp matching + +use_regexp_matching=0 + + + +# "TRUE" REGULAR EXPRESSION MATCHING +# This option controls whether or not "true" regular expression +# matching takes place in the object config files. This option +# only has an effect if regular expression matching is enabled +# (see above). If this option is DISABLED, regular expression +# matching only occurs if a string contains wildcard characters +# (* and ?). If the option is ENABLED, regexp matching occurs +# all the time (which can be annoying). +# Values: 1 = enable true matching, 0 = disable true matching + +use_true_regexp_matching=0 + + + +# ADMINISTRATOR EMAIL/PAGER ADDRESSES +# The email and pager address of a global administrator (likely you). +# Nagios never uses these values itself, but you can access them by +# using the $ADMINEMAIL$ and $ADMINPAGER$ macros in your notification +# commands. + +admin_email=root@localhost +admin_pager=pageroot@localhost + + + +# DAEMON CORE DUMP OPTION +# This option determines whether or not Nagios is allowed to create +# a core dump when it runs as a daemon. Note that it is generally +# considered bad form to allow this, but it may be useful for +# debugging purposes. Enabling this option doesn't guarantee that +# a core file will be produced, but that's just life... +# Values: 1 - Allow core dumps +# 0 - Do not allow core dumps (default) + +daemon_dumps_core=0 + + + +# LARGE INSTALLATION TWEAKS OPTION +# This option determines whether or not Nagios will take some shortcuts +# which can save on memory and CPU usage in large Nagios installations. +# Read the documentation for more information on the benefits/tradeoffs +# of enabling this option. +# Values: 1 - Enabled tweaks +# 0 - Disable tweaks (default) + +use_large_installation_tweaks=0 + + + +# ENABLE ENVIRONMENT MACROS +# This option determines whether or not Nagios will make all standard +# macros available as environment variables when host/service checks +# and system commands (event handlers, notifications, etc.) are +# executed. Enabling this option can cause performance issues in +# large installations, as it will consume a bit more memory and (more +# importantly) consume more CPU. +# Values: 1 - Enable environment variable macros (default) +# 0 - Disable environment variable macros + +enable_environment_macros=1 + + + +# CHILD PROCESS MEMORY OPTION +# This option determines whether or not Nagios will free memory in +# child processes (processed used to execute system commands and host/ +# service checks). If you specify a value here, it will override +# program defaults. +# Value: 1 - Free memory in child processes +# 0 - Do not free memory in child processes + +#free_child_process_memory=1 + + + +# CHILD PROCESS FORKING BEHAVIOR +# This option determines how Nagios will fork child processes +# (used to execute system commands and host/service checks). Normally +# child processes are fork()ed twice, which provides a very high level +# of isolation from problems. Fork()ing once is probably enough and will +# save a great deal on CPU usage (in large installs), so you might +# want to consider using this. If you specify a value here, it will +# program defaults. +# Value: 1 - Child processes fork() twice +# 0 - Child processes fork() just once + +#child_processes_fork_twice=1 + + + +# DEBUG LEVEL +# This option determines how much (if any) debugging information will +# be written to the debug file. OR values together to log multiple +# types of information. +# Values: +# -1 = Everything +# 0 = Nothing +# 1 = Functions +# 2 = Configuration +# 4 = Process information +# 8 = Scheduled events +# 16 = Host/service checks +# 32 = Notifications +# 64 = Event broker +# 128 = External commands +# 256 = Commands +# 512 = Scheduled downtime +# 1024 = Comments +# 2048 = Macros + +debug_level=0 + + + +# DEBUG VERBOSITY +# This option determines how verbose the debug log out will be. +# Values: 0 = Brief output +# 1 = More detailed +# 2 = Very detailed + +debug_verbosity=1 + + + +# DEBUG FILE +# This option determines where Nagios should write debugging information. + +debug_file=/var/lib/nagios3/nagios.debug + + + +# MAX DEBUG FILE SIZE +# This option determines the maximum size (in bytes) of the debug file. If +# the file grows larger than this size, it will be renamed with a .old +# extension. If a file already exists with a .old extension it will +# automatically be deleted. This helps ensure your disk space usage doesn't +# get out of control when debugging Nagios. + +max_debug_file_size=1000000 + + diff --git a/files/configs/Debian/private/resource.cfg.i386 b/files/configs/Debian/private/resource.cfg.i386 new file mode 100644 index 0000000..3ed732b --- /dev/null +++ b/files/configs/Debian/private/resource.cfg.i386 @@ -0,0 +1,31 @@ +########################################################################### +# +# RESOURCE.CFG - Resource File for Nagios +# +# You can define $USERx$ macros in this file, which can in turn be used +# in command definitions in your host config file(s). $USERx$ macros are +# useful for storing sensitive information such as usernames, passwords, +# etc. They are also handy for specifying the path to plugins and +# event handlers - if you decide to move the plugins or event handlers to +# a different directory in the future, you can just update one or two +# $USERx$ macros, instead of modifying a lot of command definitions. +# +# The CGIs will not attempt to read the contents of resource files, so +# you can set restrictive permissions (600 or 660) on them. +# +# Nagios supports up to 32 $USERx$ macros ($USER1$ through $USER32$) +# +# Resource files may also be used to store configuration directives for +# external data sources like MySQL... +# +########################################################################### + +# Sets $USER1$ to be the path to the plugins +$USER1$=/usr/lib/nagios/plugins + +# Sets $USER2$ to be the path to event handlers +#$USER2$=/usr/lib/nagios/plugins/eventhandlers + +# Store some usernames and passwords (hidden from the CGIs) +#$USER3$=someuser +#$USER4$=somepassword diff --git a/files/configs/Debian/private/resource.cfg.x86_64 b/files/configs/Debian/private/resource.cfg.x86_64 new file mode 100644 index 0000000..3ed732b --- /dev/null +++ b/files/configs/Debian/private/resource.cfg.x86_64 @@ -0,0 +1,31 @@ +########################################################################### +# +# RESOURCE.CFG - Resource File for Nagios +# +# You can define $USERx$ macros in this file, which can in turn be used +# in command definitions in your host config file(s). $USERx$ macros are +# useful for storing sensitive information such as usernames, passwords, +# etc. They are also handy for specifying the path to plugins and +# event handlers - if you decide to move the plugins or event handlers to +# a different directory in the future, you can just update one or two +# $USERx$ macros, instead of modifying a lot of command definitions. +# +# The CGIs will not attempt to read the contents of resource files, so +# you can set restrictive permissions (600 or 660) on them. +# +# Nagios supports up to 32 $USERx$ macros ($USER1$ through $USER32$) +# +# Resource files may also be used to store configuration directives for +# external data sources like MySQL... +# +########################################################################### + +# Sets $USER1$ to be the path to the plugins +$USER1$=/usr/lib/nagios/plugins + +# Sets $USER2$ to be the path to event handlers +#$USER2$=/usr/lib/nagios/plugins/eventhandlers + +# Store some usernames and passwords (hidden from the CGIs) +#$USER3$=someuser +#$USER4$=somepassword diff --git a/files/configs/nagios_templates.cfg b/files/configs/nagios_templates.cfg new file mode 100644 index 0000000..9859671 --- /dev/null +++ b/files/configs/nagios_templates.cfg @@ -0,0 +1,49 @@ +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! +} + +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! +} + +define service{ + name passive-service + use generic-service + active_checks_enabled 0 +} diff --git a/files/munin/nagios_hosts b/files/munin/nagios_hosts new file mode 100644 index 0000000..fa8f9dc --- /dev/null +++ b/files/munin/nagios_hosts @@ -0,0 +1,28 @@ +#!/bin/bash + +if [ "$1" = "config" ]; then + echo 'graph_title Nagios host stats' + echo 'graph_args --base 1000 -l 0' + echo 'graph_vlabel hosts' + echo 'graph_category nagios' + echo 'graph_info The number of hosts checked by nagios' + echo 'up.label up' + echo 'up.draw AREA' + echo 'up.info number of hosts UP' + echo 'down.label down' + echo 'down.draw STACK' + echo 'down.info number of hosts DOWN' + echo 'unr.label unr' + echo 'unr.draw STACK' + echo 'unr.info number of hosts UNREACHABLE' + + exit 0 +fi + +echo -n 'up.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMHSTUP +echo -n 'down.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMHSTDOWN +echo -n 'unr.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMHSTUNR + diff --git a/files/munin/nagios_perf b/files/munin/nagios_perf new file mode 100644 index 0000000..35fd9cd --- /dev/null +++ b/files/munin/nagios_perf @@ -0,0 +1,34 @@ +#!/bin/bash + +NAME=$(basename $0) + +TYPE=${NAME##nagios_perf_} + +[ "x$TYPE" = 'xhosts' ] && TYPE_ABBR=HST +[ "x$TYPE" = 'xsvc' ] && TYPE_ABBR=SVC +[ -z "$TYPE_ABBR" ] && echo "unknown type $TYPE" >&2 && exit 1 + +if [ "$1" = "config" ]; then + echo "graph_title Nagios $TYPE performance stats" + echo "graph_args --base 1000" + echo "graph_vlabel seconds" + echo "graph_category nagios" + echo "graph_info Check performance statistics" + + echo "act_lat_$TYPE_ABBR.label act lat" + echo "act_lat_$TYPE_ABBR.type GAUGE" + echo "act_lat_$TYPE_ABBR.draw AREA" + echo "act_lat_$TYPE_ABBR.cdef act_lat_$TYPE_ABBR,1000,/" + echo "act_lat_$TYPE_ABBR.info average latency of active checks over the last 5 minutes" + + echo "act_ext_$TYPE_ABBR.label act ext" + echo "act_ext_$TYPE_ABBR.type GAUGE" + echo "act_ext_$TYPE_ABBR.draw LINE1" + echo "act_ext_$TYPE_ABBR.cdef act_ext_$TYPE_ABBR,1000,/" + echo "act_ext_$TYPE_ABBR.info average execution time of active checks over the last 5 minutes" + + exit 0 +fi + +echo "act_lat_$TYPE_ABBR.value " $(/usr/local/sbin/nagiostats --mrtg --data AVGACT${TYPE_ABBR}LAT) +echo "act_ext_$TYPE_ABBR.value " $(/usr/local/sbin/nagiostats --mrtg --data AVGACT${TYPE_ABBR}EXT) diff --git a/files/munin/nagios_svc b/files/munin/nagios_svc new file mode 100644 index 0000000..0a9a9bf --- /dev/null +++ b/files/munin/nagios_svc @@ -0,0 +1,33 @@ +#!/bin/bash + +if [ "$1" = "config" ]; then + echo 'graph_title Nagios service stats' + echo 'graph_args --base 1000 -l 0' + echo 'graph_vlabel services' + echo 'graph_category nagios' + echo 'graph_info The number of services checked by nagios' + echo 'ok.label ok' + echo 'ok.draw AREA' + echo 'ok.info number of services OK' + echo 'warn.label warn' + echo 'warn.draw STACK' + echo 'warn.info number of services WARNING' + echo 'crit.label crit' + echo 'crit.draw STACK' + echo 'crit.info number of services CRITICAL' + echo 'unkn.label unkn' + echo 'unkn.draw STACK' + echo 'unkn.info number of services UNKNOWN' + + exit 0 +fi + +echo -n 'ok.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMSVCOK +echo -n 'warn.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMSVCWARN +echo -n 'crit.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMSVCCRIT +echo -n 'unkn.value ' +/usr/local/sbin/nagiostats --mrtg --data NUMSVCUNKN + diff --git a/files/nsca/nsca.cfg b/files/nsca/nsca.cfg new file mode 100644 index 0000000..238869f --- /dev/null +++ b/files/nsca/nsca.cfg @@ -0,0 +1,193 @@ +# This file is managed by Puppet. +# +#################################################### +# Sample NSCA Daemon Config File +# Written by: Ethan Galstad (nagios@nagios.org) +# +# Last Modified: 04-03-2006 +#################################################### + + +# PID FILE +# The name of the file in which the NSCA daemon should write it's process ID +# number. The file is only written if the NSCA daemon is started by the root +# user as a single- or multi-process daemon. + +pid_file=/var/run/nsca.pid + + + +# PORT NUMBER +# Port number we should wait for connections on. +# This must be a non-priveledged port (i.e. > 1024). + +server_port=5677 + + + +# SERVER ADDRESS +# Address that NSCA has to bind to in case there are +# more as one interface and we do not want NSCA to bind +# (thus listen) on all interfaces. + +#server_address=192.168.1.1 + + + +# NSCA USER +# This determines the effective user that the NSCA daemon should run as. +# You can either supply a username or a UID. +# +# NOTE: This option is ignored if NSCA is running under either inetd or xinetd + +nsca_user=nagios + + + +# NSCA GROUP +# This determines the effective group that the NSCA daemon should run as. +# You can either supply a group name or a GID. +# +# NOTE: This option is ignored if NSCA is running under either inetd or xinetd + +nsca_group=nogroup + + + +# NSCA CHROOT +# If specified, determines a directory into which the nsca daemon +# will perform a chroot(2) operation before dropping its privileges. +# for the security conscious this can add a layer of protection in +# the event that the nagios daemon is compromised. +# +# NOTE: if you specify this option, the command file will be opened +# relative to this directory. + +#nsca_chroot=/var/run/nagios/rw + + + +# DEBUGGING OPTION +# This option determines whether or not debugging +# messages are logged to the syslog facility. +# Values: 0 = debugging off, 1 = debugging on + +debug=0 + + + +# COMMAND FILE +# This is the location of the Nagios command file that the daemon +# should write all service check results that it receives. + +command_file=/var/lib/nagios3/rw/nagios.cmd + + +# ALTERNATE DUMP FILE +# This is used to specify an alternate file the daemon should +# write service check results to in the event the command file +# does not exist. It is important to note that the command file +# is implemented as a named pipe and only exists when Nagios is +# running. You may want to modify the startup script for Nagios +# to dump the contents of this file into the command file after +# it starts Nagios. Or you may simply choose to ignore any +# check results received while Nagios was not running... + +alternate_dump_file=/var/run/nagios/nsca.dump + + + +# AGGREGATED WRITES OPTION +# This option determines whether or not the nsca daemon will +# aggregate writes to the external command file for client +# connections that contain multiple check results. If you +# are queueing service check results on remote hosts and +# sending them to the nsca daemon in bulk, you will probably +# want to enable bulk writes, as this will be a bit more +# efficient. +# Values: 0 = do not aggregate writes, 1 = aggregate writes + +aggregate_writes=0 + + + +# APPEND TO FILE OPTION +# This option determines whether or not the nsca daemon will +# will open the external command file for writing or appending. +# This option should almost *always* be set to 0! +# Values: 0 = open file for writing, 1 = open file for appending + +append_to_file=0 + + + +# MAX PACKET AGE OPTION +# This option is used by the nsca daemon to determine when client +# data is too old to be valid. Keeping this value as small as +# possible is recommended, as it helps prevent the possibility of +# "replay" attacks. This value needs to be at least as long as +# the time it takes your clients to send their data to the server. +# Values are in seconds. The max packet age cannot exceed 15 +# minutes (900 seconds). If this variable is set to zero (0), no +# packets will be rejected based on their age. + +max_packet_age=30 + + + +# DECRYPTION PASSWORD +# This is the password/passphrase that should be used to descrypt the +# incoming packets. Note that all clients must encrypt the packets +# they send using the same password! +# IMPORTANT: You don't want all the users on this system to be able +# to read the password you specify here, so make sure to set +# restrictive permissions on this config file! + +#password= + + + +# DECRYPTION METHOD +# This option determines the method by which the nsca daemon will +# decrypt the packets it receives from the clients. The decryption +# method you choose will be a balance between security and performance, +# as strong encryption methods consume more processor resources. +# You should evaluate your security needs when choosing a decryption +# method. +# +# Note: The decryption method you specify here must match the +# encryption method the nsca clients use (as specified in +# the send_nsca.cfg file)!! +# Values: +# +# 0 = None (Do NOT use this option) +# 1 = Simple XOR (No security, just obfuscation, but very fast) +# +# 2 = DES +# 3 = 3DES (Triple DES) +# 4 = CAST-128 +# 5 = CAST-256 +# 6 = xTEA +# 7 = 3WAY +# 8 = BLOWFISH +# 9 = TWOFISH +# 10 = LOKI97 +# 11 = RC2 +# 12 = ARCFOUR +# +# 14 = RIJNDAEL-128 +# 15 = RIJNDAEL-192 +# 16 = RIJNDAEL-256 +# +# 19 = WAKE +# 20 = SERPENT +# +# 22 = ENIGMA (Unix crypt) +# 23 = GOST +# 24 = SAFER64 +# 25 = SAFER128 +# 26 = SAFER+ +# + +decryption_method=1 + diff --git a/files/nsca/send_nsca.cfg b/files/nsca/send_nsca.cfg new file mode 100644 index 0000000..8127226 --- /dev/null +++ b/files/nsca/send_nsca.cfg @@ -0,0 +1,65 @@ +# This file is managed by Puppet. +# +#################################################### +# Sample NSCA Client Config File +# Written by: Ethan Galstad (nagios@nagios.org) +# +# Last Modified: 02-21-2002 +#################################################### + + +# ENCRYPTION PASSWORD +# This is the password/passphrase that should be used to encrypt the +# outgoing packets. Note that the nsca daemon must use the same +# password when decrypting the packet! +# IMPORTANT: You don't want all the users on this system to be able +# to read the password you specify here, so make sure to set +# restrictive permissions on this config file! + +#password= + + + +# ENCRYPTION METHOD +# This option determines the method by which the send_nsca client will +# encrypt the packets it sends to the nsca daemon. The encryption +# method you choose will be a balance between security and performance, +# as strong encryption methods consume more processor resources. +# You should evaluate your security needs when choosing an encryption +# method. +# +# Note: The encryption method you specify here must match the +# decryption method the nsca daemon uses (as specified in +# the nsca.cfg file)!! +# Values: +# 0 = None (Do NOT use this option) +# 1 = Simple XOR (No security, just obfuscation, but very fast) +# +# 2 = DES +# 3 = 3DES (Triple DES) +# 4 = CAST-128 +# 5 = CAST-256 +# 6 = xTEA +# 7 = 3WAY +# 8 = BLOWFISH +# 9 = TWOFISH +# 10 = LOKI97 +# 11 = RC2 +# 12 = ARCFOUR +# +# 14 = RIJNDAEL-128 +# 15 = RIJNDAEL-192 +# 16 = RIJNDAEL-256 +# +# 19 = WAKE +# 20 = SERPENT +# +# 22 = ENIGMA (Unix crypt) +# 23 = GOST +# 24 = SAFER64 +# 25 = SAFER128 +# 26 = SAFER+ +# + +encryption_method=1 + diff --git a/files/plugins/check_jabber_login b/files/plugins/check_jabber_login index dac0e1f..dac0e1f 100755..100644 --- a/files/plugins/check_jabber_login +++ b/files/plugins/check_jabber_login diff --git a/manifests/apache.pp b/manifests/apache.pp new file mode 100644 index 0000000..36994f8 --- /dev/null +++ b/manifests/apache.pp @@ -0,0 +1,4 @@ +class nagios::apache { + $nagios_httpd = 'apache' + include nagios +} diff --git a/manifests/base.pp b/manifests/base.pp index bd55ff9..6106ab2 100644 --- a/manifests/base.pp +++ b/manifests/base.pp @@ -1,110 +1,73 @@ class nagios::base { - # needs apache to work - include apache - - package { nagios: - ensure => present, + package { 'nagios': + alias => 'nagios', + ensure => present, } - service{nagios: + service { 'nagios': ensure => running, enable => true, #hasstatus => true, #fixme! - require => Package[nagios], + require => Package['nagios'], } - # manage nagios cfg files - file {nagios_cfg_dir: - path => '/etc/nagios', - source => "puppet://$server/modules/common/empty", - ensure => directory, - recurse => true, - purge => true, - notify => Service[nagios], - mode => 0755, owner => root, group => root; - } # this file should contain all the nagios_puppet-paths: - file {nagios_main_cfg: - path => "/etc/nagios/nagios.cfg", - source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/nagios.cfg", + file { 'nagios_main_cfg': + path => "${nagios_cfgdir}/nagios.cfg", + source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/nagios.cfg", "puppet://$server/modules/site-nagios/configs/${operatingsystem}/nagios.cfg", "puppet://$server/modules/site-nagios/configs/nagios.cfg", "puppet://$server/modules/nagios/configs/${operatingsystem}/nagios.cfg", "puppet://$server/modules/nagios/configs/nagios.cfg" ], - notify => Service[nagios], + notify => Service['nagios'], mode => 0644, owner => root, group => root; - } - file { nagios_cgi_cfg: - path => "/etc/nagios/cgi.cfg", + } + + file { 'nagios_cgi_cfg': + path => "${nagios_cfgdir}/cgi.cfg", source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/cgi.cfg", "puppet://$server/modules/site-nagios/configs/${operatingsystem}/cgi.cfg", "puppet://$server/modules/site-nagios/configs/cgi.cfg", "puppet://$server/modules/nagios/configs/${operatingsystem}/cgi.cfg", "puppet://$server/modules/nagios/configs/cgi.cfg" ], - owner => 'root', - group => 0, - mode => '0644', + mode => '0644', owner => 'root', group => 0, notify => Service['apache'], } - file {"/etc/nagios/htpasswd.users": - source => [ - "puppet://$server/modules/site-nagios/htpasswd.users", - "puppet://$server/modules/nagios/htpasswd.users" ], - mode => 0640, owner => root, group => apache; - } - file{[ "/etc/nagios/nagios_command.cfg", - "/etc/nagios/nagios_contact.cfg", - "/etc/nagios/nagios_contactgroup.cfg", - "/etc/nagios/nagios_host.cfg", - "/etc/nagios/nagios_hostextinfo.cfg", - "/etc/nagios/nagios_hostgroup.cfg", - "/etc/nagios/nagios_hostgroupescalation.cfg", - "/etc/nagios/nagios_service.cfg", - "/etc/nagios/nagios_servicedependency.cfg", - "/etc/nagios/nagios_serviceescalation.cfg", - "/etc/nagios/nagios_serviceextinfo.cfg", - "/etc/nagios/nagios_timeperdiod.cfg" ]: - ensure => file, - replace => false, - notify => Service[nagios], - mode => 0644, owner => root, group => 0; + file { 'nagios_htpasswd': + path => "${nagios_cfgdir}/htpasswd.users", + source => [ "puppet://$server/modules/site-nagios/htpasswd.users", + "puppet://$server/modules/nagios/htpasswd.users" ], + mode => 0640, owner => root, group => apache; } - nagios::plugin{'check_jabber_login': } + file { 'nagios_private': + path => "${nagios_cfgdir}/private/", + source => "puppet://$server/modules/common/empty", + ensure => directory, + purge => true, + recurse => true, + notify => Service['nagios'], + mode => '0750', owner => root, group => nagios; + } - nagios::command{ - ssh_port: - command_line => '$USER1$/check_ssh -p $ARG1$ $HOSTADDRESS$'; - # from apache2.pp - http_port: - command_line => '$USER1$/check_http -p $ARG1$ -H $HOSTADDRESS$ -I $HOSTADDRESS$'; - # from bind.pp - check_dig2: - command_line => '$USER1$/check_dig -H $HOSTADDRESS$ -l $ARG1$ --record_type=$ARG2$'; - check_ntp_time: - command_line => '$USER1$/check_ntp_time -H $HOSTADDRESS$ -w 0.5 -c 1'; - check_http_url: - command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$'; - check_http_url_regex: - command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$ -e $ARG3$'; - check_https_url: - command_line => '$USER1$/check_http --ssl -H $ARG1$ -u $ARG2$'; - check_https_url_regex: - command_line => '$USER1$/check_http --ssl -H $ARG1$ -u $ARG2$ -e $ARG3$'; - check_https: - command_line => '$USER1$/check_http -S -H $HOSTADDRESS$'; - check_silc: - command_line => '$USER1$/check_tcp -p 706 -H $ARG1$'; - check_sobby: - command_line => '$USER1$/check_tcp -H $ARG1$ -p $ARG2$'; - check_jabber: - command_line => '$USER1$/check_jabber -H $ARG1$'; - check_jabber_login: - command_line => '$USER1$/check_jabber_login $ARG1$ $ARG2$', - require => Nagios::Plugin['check_jabber_login']; - } + file { 'nagios_private_resource_cfg': + path => "${nagios_cfgdir}/private/resource.cfg", + source => "puppet://$server/nagios/configs/${operatingsystem}/private/resource.cfg.${architecture}", + notify => Service['nagios'], + owner => root, group => nagios, mode => '0640'; + } + + file { 'nagios_confd': + path => "${nagios_cfgdir}/conf.d/", + source => "puppet://$server/modules/common/empty", + ensure => directory, + purge => true, + recurse => true, + notify => Service['nagios'], + mode => '0750', owner => root, group => nagios; + } Nagios_command <<||>> Nagios_contact <<||>> @@ -119,15 +82,87 @@ class nagios::base { Nagios_serviceextinfo <<||>> Nagios_timeperiod <<||>> - if $use_munin { - include munin::plugins::nagios + Nagios_command <||> { + target => "${nagios_cfgdir}/conf.d/nagios_command.cfg", + notify => Service['nagios'], + } + Nagios_contact <||> { + target => "${nagios_cfgdir}/conf.d/nagios_contact.cfg", + notify => Service['nagios'], + } + Nagios_contactgroup <||> { + target => "${nagios_cfgdir}/conf.d/nagios_contactgroup.cfg", + notify => Service['nagios'], + } + Nagios_host <||> { + target => "${nagios_cfgdir}/conf.d/nagios_host.cfg", + notify => Service['nagios'], + } + Nagios_hostextinfo <||> { + target => "${nagios_cfgdir}/conf.d/nagios_hostextinfo.cfg", + notify => Service['nagios'], + } + Nagios_hostgroup <||> { + target => "${nagios_cfgdir}/conf.d/nagios_hostgroup.cfg", + notify => Service['nagios'], + } + Nagios_hostgroupescalation <||> { + target => "${nagios_cfgdir}/conf.d/nagios_hostgroupescalation.cfg", + notify => Service['nagios'], + } + Nagios_service <||> { + target => "${nagios_cfgdir}/conf.d/nagios_service.cfg", + notify => Service['nagios'], + } + Nagios_servicedependency <||> { + target => "${nagios_cfgdir}/conf.d/nagios_servicedependency.cfg", + notify => Service['nagios'], + } + Nagios_serviceescalation <||> { + target => "${nagios_cfgdir}/conf.d/nagios_serviceescalation.cfg", + notify => Service['nagios'], + } + Nagios_serviceextinfo <||> { + target => "${nagios_cfgdir}/conf.d/nagios_serviceextinfo.cfg", + notify => Service['nagios'], + } + Nagios_timeperiod <||> { + target => "${nagios_cfgdir}/conf.d/nagios_timeperiod.cfg", + notify => Service['nagios'], + } + + file{[ "${nagios_cfgdir}/conf.d/nagios_command.cfg", + "${nagios_cfgdir}/conf.d/nagios_contact.cfg", + "${nagios_cfgdir}/conf.d/nagios_contactgroup.cfg", + "${nagios_cfgdir}/conf.d/nagios_host.cfg", + "${nagios_cfgdir}/conf.d/nagios_hostextinfo.cfg", + "${nagios_cfgdir}/conf.d/nagios_hostgroup.cfg", + "${nagios_cfgdir}/conf.d/nagios_hostgroupescalation.cfg", + "${nagios_cfgdir}/conf.d/nagios_service.cfg", + "${nagios_cfgdir}/conf.d/nagios_servicedependency.cfg", + "${nagios_cfgdir}/conf.d/nagios_serviceescalation.cfg", + "${nagios_cfgdir}/conf.d/nagios_serviceextinfo.cfg", + "${nagios_cfgdir}/conf.d/nagios_timeperiod.cfg" ]: + ensure => file, + replace => false, + notify => Service['nagios'], + mode => 0644, owner => root, group => 0; } - if $nagios_allow_external_cmd { - file{'/var/spool/nagios/cmd': - ensure => 'directory', - require => Package['nagios'], - owner => apache, group => nagios, mode => 2660; - } + # manage nagios cfg files + # must be defined after exported resource overrides and cfg file defs + file { 'nagios_cfgdir': + path => "${nagios_cfgdir}/", + source => "puppet://$server/modules/common/empty", + ensure => directory, + recurse => true, + purge => true, + notify => Service['nagios'], + mode => 0755, owner => root, group => root; + } + + if $use_munin { + include nagios::munin } + } diff --git a/manifests/centos.pp b/manifests/centos.pp index 95c8749..4d9507b 100644 --- a/manifests/centos.pp +++ b/manifests/centos.pp @@ -1,47 +1,19 @@ class nagios::centos inherits nagios::base { + package { [ 'nagios-plugins', 'nagios-plugins-smtp','nagios-plugins-http', 'nagios-plugins-ssh', 'nagios-plugins-udp', 'nagios-plugins-tcp', 'nagios-plugins-dig', 'nagios-plugins-nrpe', 'nagios-plugins-load', 'nagios-plugins-dns', 'nagios-plugins-ping', 'nagios-plugins-procs', 'nagios-plugins-users', 'nagios-plugins-ldap', 'nagios-plugins-disk', 'nagios-plugins-swap', 'nagios-plugins-nagios', 'nagios-plugins-perl', 'nagios-plugins-ntp', 'nagios-plugins-snmp' ]: ensure => 'present', - notify => Service[nagios], + notify => Service['nagios'], } Service[nagios]{ hasstatus => true, } - # default cmd file from rpm - # don't forget it to add to the puppet paths - file { nagios_commands_cfg: - path => "/etc/nagios/commands.cfg", - source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/commands.cfg", - "puppet://$server/modules/site-nagios/configs/${operatingsystem}/commands.cfg", - "puppet://$server/modules/nagios/configs/${operatingsystem}/commands.cfg" ], - owner => 'root', - group => 0, - mode => '0644', - notify => Service[nagios], - } - # default file from rpm - file { nagios_localhost_cfg: - path => "/etc/nagios/localhost.cfg", - source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/localhost.cfg", - "puppet://$server/modules/site-nagios/configs/${operatingsystem}/localhost.cfg", - "puppet://$server/modules/nagios/configs/${operatingsystem}/localhost.cfg" ], - owner => 'root', - group => 0, - mode => '0644', - notify => Service[nagios], - } - file{"/etc/nagios/private": - source => "puppet://$server/modules/common/empty", - ensure => directory, - purge => true, - recurse => true, - notify => Service[nagios], - mode => '0750', owner => root, group => nagios; - } - file{"/etc/nagios/private/resource.cfg": - source => "puppet://$server/modules/nagios/configs/${operatingsystem}/private/resource.cfg.${architecture}", - notify => Service[nagios], - owner => root, group => nagios, mode => '0640'; + if ($nagios_allow_external_cmd) { + file { '/var/spool/nagios/cmd': + ensure => 'directory', + require => Package['nagios'], + mode => 2660, owner => apache, group => nagios, + } } } diff --git a/manifests/command.pp b/manifests/command.pp deleted file mode 100644 index 066189c..0000000 --- a/manifests/command.pp +++ /dev/null @@ -1,11 +0,0 @@ -# just a wrapper to make the notify more easy -define nagios::command( - $ensure = present, - $command_line -){ - nagios_command{$name: - ensure => $ensure, - command_line => $command_line, - notify => Service[nagios], - } -} diff --git a/manifests/debian.pp b/manifests/debian.pp new file mode 100644 index 0000000..a503324 --- /dev/null +++ b/manifests/debian.pp @@ -0,0 +1,41 @@ +class nagios::debian inherits nagios::base { + + Package['nagios'] { name => 'nagios3' } + + package { [ 'nagios-plugins', 'nagios-snmp-plugins','nagios-nrpe-plugin' ]: + ensure => 'present', + notify => Service['nagios'], + } + + Service['nagios'] { + name => 'nagios3', + hasstatus => true, + } + + File['nagios_htpasswd', 'nagios_cgi_cfg'] { group => 'www-data' } + + file { "${nagios_cfgdir}/stylesheets": + ensure => directory, + purge => false, + recurse => true, + } + + if ($nagios_allow_external_cmd) { + exec { 'nagios_external_cmd_perms_overrides': + command => 'dpkg-statoverride --update --add nagios www-data 2710 /var/lib/nagios3/rw && dpkg-statoverride --update --add nagios nagios 751 /var/lib/nagios3', + unless => 'dpkg-statoverride --list nagios www-data 2710 /var/lib/nagios3/rw && dpkg-statoverride --list nagios nagios 751 /var/lib/nagios3', + logoutput => false, + notify => Service['nagios'], + } + exec { 'nagios_external_cmd_perms_1': + command => 'chmod 0751 /var/lib/nagios3 && chown nagios:nagios /var/lib/nagios3', + unless => 'test "`stat -c "%a %U %G" /var/lib/nagios3`" = "751 nagios nagios"', + notify => Service['nagios'], + } + exec { 'nagios_external_cmd_perms_2': + command => 'chmod 2751 /var/lib/nagios3/rw && chown nagios:www-data /var/lib/nagios3/rw', + unless => 'test "`stat -c "%a %U %G" /var/lib/nagios3/rw`" = "2751 nagios www-data"', + notify => Service['nagios'], + } + } +} diff --git a/manifests/defaults.pp b/manifests/defaults.pp new file mode 100644 index 0000000..32ba335 --- /dev/null +++ b/manifests/defaults.pp @@ -0,0 +1,12 @@ +class nagios::defaults { + + # include some default nagios objects + + include nagios::defaults::commands + include nagios::defaults::contactgroups + include nagios::defaults::contacts + include nagios::defaults::hostgroups + include nagios::defaults::templates + include nagios::defaults::timeperiods + +} diff --git a/manifests/defaults/commands.pp b/manifests/defaults/commands.pp new file mode 100644 index 0000000..c3190af --- /dev/null +++ b/manifests/defaults/commands.pp @@ -0,0 +1,75 @@ +class nagios::defaults::commands { + + # common service commands + + nagios_command { + check_dummy: + command_line => '$USER1$/check_dummy $ARG1$'; + check_ping: + command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w $ARG1$ -c $ARG2$'; + check-host-alive: + command_line => '$USER1$/check_ping -H $HOSTADDRESS$ -w 5000,100% -c 5000,100% -p 1'; + check_tcp: + command_line => '$USER1$/check_tcp -H $HOSTADDRESS$ -p $ARG1$'; + check_udp: + command_line => '$USER1$/check_udp -H $HOSTADDRESS$ -p $ARG1$'; + check_load: + command_line => '$USER1$/check_load --warning=$ARG1$,$ARG2$,$ARG3$ --critical=$ARG4$,$ARG5$,$ARG6$'; + check_disk: + command_line => '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -e -p $ARG3$'; + check_all_disks: + command_line => '$USER1$/check_disk -w $ARG1$ -c $ARG2$ -e'; + check_ssh: + command_line => '$USER1$/check_ssh $HOSTADDRESS$'; + check_ssh_port: + command_line => '$USER1$/check_ssh -p $ARG1$ $HOSTADDRESS$'; + check_http: + command_line => '$USER1$/check_http -H $HOSTADDRESS$ -I $HOSTADDRESS$'; + check_https: + command_line => '$USER1$/check_http --ssl -H $HOSTADDRESS$ -I $HOSTADDRESS$'; + check_https_cert: + command_line => '$USER1$/check_http --ssl -C 20 -H $HOSTADDRESS$ -I $HOSTADDRESS$'; + check_http_url: + command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$'; + check_http_url_regex: + command_line => '$USER1$/check_http -H $ARG1$ -u $ARG2$ -e $ARG3$'; + check_https_url: + command_line => '$USER1$/check_http --ssl -H $ARG1$ -u $ARG2$'; + check_https_url_regex: + command_line => '$USER1$/check_http --ssl -H $ARG1$ -u $ARG2$ -e $ARG3$'; + check_mysql: + command_line => '$USER1$/check_mysql -H $ARG1$ -P $ARG2$ -u $ARG3$ -p $ARG4$'; + check_mysql_db: + command_line => '$USER1$/check_mysql -H $ARG1$ -P $ARG2$ -u $ARG3$ -p $ARG4$ -d $ARG5$'; + check_ntp_time: + command_line => '$USER1$/check_ntp_time -H $HOSTADDRESS$ -w 0.5 -c 1'; + check_silc: + command_line => '$USER1$/check_tcp -p 706 -H $ARG1$'; + check_sobby: + command_line => '$USER1$/check_tcp -H $ARG1$ -p $ARG2$'; + check_jabber: + command_line => '$USER1$/check_jabber -H $ARG1$'; + } + + # commands for services defined by other modules + + nagios_command { + # from apache module + http_port: + command_line => '$USER1$/check_http -p $ARG1$ -H $HOSTADDRESS$ -I $HOSTADDRESS$'; + # from bind module + check_dig2: + command_line => '$USER1$/check_dig -H $HOSTADDRESS$ -l $ARG1$ --record_type=$ARG2$'; + } + + # notification commands + + nagios_command { + '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_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$" | /usr/bin/mail -s "** $NOTIFICATIONTYPE$ Service Alert: $HOSTALIAS$/$SERVICEDESC$ is $SERVICESTATE$ **" $CONTACTEMAIL$' + + } + +} diff --git a/manifests/defaults/contactgroups.pp b/manifests/defaults/contactgroups.pp new file mode 100644 index 0000000..f5affc6 --- /dev/null +++ b/manifests/defaults/contactgroups.pp @@ -0,0 +1,9 @@ +class nagios::defaults::contactgroups { + + nagios_contactgroup { + 'admins': + alias => 'Nagios Administrators', + members => 'root', + } + +} diff --git a/manifests/defaults/contacts.pp b/manifests/defaults/contacts.pp new file mode 100644 index 0000000..0252b5a --- /dev/null +++ b/manifests/defaults/contacts.pp @@ -0,0 +1,15 @@ +class nagios::defaults::contacts { + + nagios_contact { + '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', + } + +} diff --git a/manifests/defaults/host_templates.pp b/manifests/defaults/host_templates.pp new file mode 100644 index 0000000..699b965 --- /dev/null +++ b/manifests/defaults/host_templates.pp @@ -0,0 +1,24 @@ +class nagios::defaults::host_templates { + + # this inoperative for the moment, see : + # http://projects.reductivelabs.com/issues/1180 + + nagios_host { + 'generic-host': + notifications_enabled => '1', + event_handler_enabled => '1', + flap_detection_enabled => '1', + failure_prediction_enabled => '1', + process_perf_data => '1', + retain_status_information => '1', + retain_nonstatus_information => '1', + 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', + } + +} diff --git a/manifests/defaults/hostgroups.pp b/manifests/defaults/hostgroups.pp new file mode 100644 index 0000000..3a4f4d1 --- /dev/null +++ b/manifests/defaults/hostgroups.pp @@ -0,0 +1,13 @@ +class nagios::defaults::hostgroups { + + nagios_hostgroup { + 'all': + alias => 'All Servers', + members => '*'; + 'debian-servers': + alias => 'Debian GNU/Linux Servers'; + 'centos-servers': + alias => 'CentOS GNU/Linux Servers'; + } + +} diff --git a/manifests/defaults/service_templates.pp b/manifests/defaults/service_templates.pp new file mode 100644 index 0000000..326ce05 --- /dev/null +++ b/manifests/defaults/service_templates.pp @@ -0,0 +1,32 @@ +class nagios::defaults::service_templates { + + # this inoperative for the moment, see : + # http://projects.reductivelabs.com/issues/1180 + + nagios_service { + 'generic-service': + active_checks_enabled => '1', + passive_checks_enabled => '1', + parallelize_check => '1', + obsess_over_service => '1', + check_freshness => '0', + notifications_enabled => '1', + event_handler_enabled => '1', + flap_detection_enabled => '1', + failure_prediction_enabled => '1', + process_perf_data => '1', + retain_status_information => '1', + retain_nonstatus_information => '1', + notification_interval => '0', + 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', + } + +} diff --git a/manifests/defaults/templates.pp b/manifests/defaults/templates.pp new file mode 100644 index 0000000..5a3d23d --- /dev/null +++ b/manifests/defaults/templates.pp @@ -0,0 +1,14 @@ +class nagios::defaults::templates { + + file { 'nagios_templates': + path => "${nagios::nagios_cfgdir}/conf.d/nagios_templates.cfg", + source => [ "puppet://$server/modules/site-nagios/configs/${fqdn}/nagios_templates.cfg", + "puppet://$server/modules/site-nagios/configs/${operatingsystem}/nagios_templates.cfg", + "puppet://$server/modules/site-nagios/configs/nagios_templates.cfg", + "puppet://$server/modules/nagios/configs/${operatingsystem}/nagios_templates.cfg", + "puppet://$server/modules/nagios/configs/nagios_templates.cfg" ], + notify => Service['nagios'], + mode => 0644, owner => root, group => root; + } + +} diff --git a/manifests/defaults/timeperiods.pp b/manifests/defaults/timeperiods.pp new file mode 100644 index 0000000..0d05118 --- /dev/null +++ b/manifests/defaults/timeperiods.pp @@ -0,0 +1,33 @@ +class nagios::defaults::timeperiods { + + nagios_timeperiod { + '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'; + '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'; + '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'; + 'never': + alias => 'Never'; + } + +} diff --git a/manifests/extra_host.pp b/manifests/extra_host.pp deleted file mode 100644 index 8f52de0..0000000 --- a/manifests/extra_host.pp +++ /dev/null @@ -1,27 +0,0 @@ -# this will define a host which isn't managed by puppet. -# a ping serivce is automatically added -define nagios::extra_host( - $ensure = present, - $ip = 'absent', - $nagios_alias = 'absent', - $use = 'generic-host', - $parents = 'localhost' -) { - if $ensure == 'present' and ($ip == 'absent' or $nagios_alias == 'absent'){ - fail("You need to define \$ip and \$nagios_alias if extra_host should be present!") - } - nagios::host{$name: - ensure => $ensure, - ip => $ip, - nagios_alias => $nagios_alias, - use => $use, - parents => $parents - } - - nagios::service { "check_ping_${name}": - ensure => $ensure, - host_name => $name, - check_command => 'check_ping!100.0,20%!500.0,60%', - service_description => "check_ping_${nagios_alias}", - } -} diff --git a/manifests/headless.pp b/manifests/headless.pp new file mode 100644 index 0000000..cccfce7 --- /dev/null +++ b/manifests/headless.pp @@ -0,0 +1,4 @@ +class nagios::headless { + $nagios_httpd = 'absent' + include nagios +} diff --git a/manifests/host.pp b/manifests/host.pp deleted file mode 100644 index 8814738..0000000 --- a/manifests/host.pp +++ /dev/null @@ -1,37 +0,0 @@ -define nagios::host( - $ensure = present, - $ip = $fqdn, - $nagios_alias = $hostname, - $check_command = 'check-host-alive', - $max_check_attempts = 4, - $notification_interval = 120, - $notification_period = '24x7', - $notification_options = 'd,r', - $use = 'generic-host', - $nagios_contact_groups_in = $nagios_contact_groups, - $parents = 'localhost' ) -{ - $real_nagios_contact_groups = $nagios_contact_groups_in ? { - '' => 'admins', - default => $nagios_contact_groups_in - } - $real_nagios_parents = $parents ? { - '' => 'localhost', - default => $parents - } - - @@nagios_host { $name: - ensure => $ensure, - address => $ip, - alias => $nagios_alias, - check_command => $check_command, - max_check_attempts => $max_check_attempts, - notification_interval => $notification_interval, - notification_period => $notification_period, - notification_options => $notification_options, - parents => $real_nagios_parents, - contact_groups => $real_nagios_contact_groups, - use => $use, - notify => Service[nagios], - } -} diff --git a/manifests/init.pp b/manifests/init.pp index 6eca55f..1aecc3a 100644 --- a/manifests/init.pp +++ b/manifests/init.pp @@ -15,8 +15,21 @@ # class nagios { + case $nagios_httpd { + 'absent': { } + 'lighttpd': { include lighttpd } + 'apache': { include apache } + default: { include apache } + } case $operatingsystem { - centos: { include nagios::centos } + 'centos': { + $nagios_cfgdir = '/etc/nagios' + include nagios::centos + } + 'debian': { + $nagios_cfgdir = '/etc/nagios3' + include nagios::debian + } default: { fail("No such operatingsystem: $operatingsystem yet defined") } } } diff --git a/manifests/lighttpd.pp b/manifests/lighttpd.pp new file mode 100644 index 0000000..27aff43 --- /dev/null +++ b/manifests/lighttpd.pp @@ -0,0 +1,4 @@ +class nagios::lighttpd { + $nagios_httpd = 'lighttpd' + include nagios +} diff --git a/manifests/munin.pp b/manifests/munin.pp new file mode 100644 index 0000000..92a389f --- /dev/null +++ b/manifests/munin.pp @@ -0,0 +1,28 @@ +class nagios::munin inherits munin::plugins::base { + + munin::plugin::deploy { + nagios_hosts: + source => 'nagios/munin/nagios_hosts', + config => 'user root'; + nagios_svc: + source => 'nagios/munin/nagios_svc', + config => 'user root'; + nagios_perf_hosts: + source => 'nagios/munin/nagios_perf', + config => 'user root'; + nagios_perf_svc: + source => 'nagios/munin/nagios_perf', + config => 'user root'; + } + + exec { 'munin_nagios2stats_link': + command => 'ln -s /usr/sbin/nagios2stats /usr/local/sbin/nagiostats', + onlyif => ["test ! -e /usr/local/sbin/nagiostats", "test -e /usr/sbin/nagios2stats"], + } + + exec { 'munin_nagios3stats_link': + command => 'ln -s /usr/sbin/nagios3stats /usr/local/sbin/nagiostats', + onlyif => ["test ! -e /usr/local/sbin/nagiostats", "test -e /usr/sbin/nagios3stats"], + } + +} diff --git a/manifests/nsca.pp b/manifests/nsca.pp new file mode 100644 index 0000000..d5be298 --- /dev/null +++ b/manifests/nsca.pp @@ -0,0 +1,3 @@ +class nagios::nsca { + include nagios::nsca::server +} diff --git a/manifests/nsca/client.pp b/manifests/nsca/client.pp new file mode 100644 index 0000000..b4ca878 --- /dev/null +++ b/manifests/nsca/client.pp @@ -0,0 +1,14 @@ +class nagios::nsca::client { + + package { 'nsca': ensure => installed } + + file { '/etc/send_nsca.cfg': + source => [ "puppet://${server}/site-nagios/nsca/{$fqdn}/send_nsca.cfg", + "puppet://${server}/site-nagios/nsca/send_nsca.cfg", + "puppet://${server}/nagios/nsca/send_nsca.cfg" ], + owner => 'nagios', + group => 'nogroup', + mode => '400', + } + +} diff --git a/manifests/nsca/server.pp b/manifests/nsca/server.pp new file mode 100644 index 0000000..c682e24 --- /dev/null +++ b/manifests/nsca/server.pp @@ -0,0 +1,21 @@ +class nagios::nsca::server { + + package { 'nsca': ensure => installed } + + service { 'nsca': + ensure => running, + hasstatus => false, + hasrestart => true, + } + + file { '/etc/nsca.cfg': + source => [ "puppet://${server}/site-nagios/nsca/{$fqdn}/nsca.cfg", + "puppet://${server}/site-nagios/nsca/nsca.cfg", + "puppet://${server}/nagios/nsca/nsca.cfg" ], + owner => 'nagios', + group => 'nogroup', + mode => '400', + notify => Service['nsca'], + } + +} diff --git a/manifests/service.pp b/manifests/service.pp index bb9b187..3e732b7 100644 --- a/manifests/service.pp +++ b/manifests/service.pp @@ -1,56 +1,69 @@ -define nagios::service( +define nagios::service ( $ensure = present, - $check_command = absent, $host_name = $fqdn, - $use = 'generic-service', - $notification_period = "24x7", - $max_check_attempts = 4, - $retry_check_interval = 1, - $notification_interval = 960, - $normal_check_interval = 5, - $check_period = "24x7", - $nagios_contact_groups_in = $nagios_contact_groups, - $service_description = 'absent') + $check_command, + $check_period = '', + $normal_check_interval = '', + $retry_check_interval = '', + $max_check_attempts = '', + $notification_interval = '', + $notification_period = '', + $notification_options = '', + $contact_groups = '', + $use = 'absent', + $service_description = 'absent' ) { - if $ensure == present and $check_command == absent { - fail("You have to define \$check_command if nagios::service shoudl be present!") - } + # TODO: this resource should normally accept all nagios_host parameters - # this ensures nagios internal check, that every - # service has it's host - # temporary disabled. - # include nagios::target::host + $real_name = "${hostname}_${name}" - $real_nagios_contact_groups = $nagios_contact_groups_in ? { - '' => 'admins', - default => $nagios_contact_groups_in - } - @@nagios_service {$name: + @@nagios_service { "${real_name}": ensure => $ensure, check_command => $check_command, - use => $use, host_name => $host_name, - notification_period => $notification_period, - max_check_attempts => $max_check_attempts, - retry_check_interval => $retry_check_interval, - notification_interval => $notification_interval, - normal_check_interval => $normal_check_interval, - contact_groups => $real_nagios_contact_groups, - check_period => $check_period, notify => Service[nagios], } - case $service_description { - 'absent': { - Nagios_service[$name]{ - service_description => $name, - } - } - default: { - Nagios_service[$name]{ - service_description => $service_description, - } - } + + if ($check_period != '') { + Nagios_service["${real_name}"] { check_period => $check_period } + } + + if ($normal_check_interval != '') { + Nagios_service["${real_name}"] { normal_check_interval => $normal_check_interval } + } + + if ($retry_check_interval != '') { + Nagios_service["${real_name}"] { retry_check_interval => $retry_check_interval } + } + + if ($max_check_attempts != '') { + Nagios_service["${real_name}"] { max_check_attempts => $max_check_attempts } + } + + if ($notification_interval != '') { + Nagios_service["${real_name}"] { notification_interval => $notification_interval } + } + + if ($notification_period != '') { + Nagios_service["${real_name}"] { notification_period => $notification_period } + } + + if ($notification_options != '') { + Nagios_service["${real_name}"] { notification_options => $notification_options } } + + if ($use == 'absent') { + Nagios_service["${real_name}"] { use => 'generic-service' } + } else { + Nagios_service["${real_name}"] { use => $use } + } + + if ($service_description == 'absent') { + Nagios_service["${real_name}"] { service_description => $name } + } else { + Nagios_service["${real_name}"] { service_description => $service_description } + } + } diff --git a/manifests/service/http.pp b/manifests/service/http.pp index 5c6cda1..5fd9890 100644 --- a/manifests/service/http.pp +++ b/manifests/service/http.pp @@ -16,13 +16,13 @@ define nagios::service::http( } case $ssl_mode { 'force',true,'only': { - nagios::service{"https_${name}_${check_code}_${hostname}": + nagios::service{"https_${name}_${check_code}": ensure => $ensure, check_command => "check_https_url_regex!${real_check_domain}!${check_url}!'${check_code}'", } case $ssl_mode { 'force': { - nagios::service{"httprd_${name}_${hostname}": + nagios::service{"httprd_${name}": ensure => $ensure, check_command => "check_http_url_regex!${real_check_domain}!${check_url}!'301'", } @@ -32,7 +32,7 @@ define nagios::service::http( } case $ssl_mode { false,true: { - nagios::service{"http_${name}_${check_code}_${hostname}": + nagios::service{"http_${name}_${check_code}": ensure => $ensure, check_command => "check_http_url_regex!${real_check_domain}!${check_url}!'${check_code}'", } diff --git a/manifests/service/mysql.pp b/manifests/service/mysql.pp new file mode 100644 index 0000000..ca2ae15 --- /dev/null +++ b/manifests/service/mysql.pp @@ -0,0 +1,48 @@ +# Checks a mysql instance via tcp or socket + +define nagios::service::mysql( + $ensure = present, + $check_hostname = 'absent', + $check_port = '3306', + $check_username = 'nagios', + $check_password = '', + $check_database = 'absent', + $check_mode = 'tcp' +){ + if ($check_hostname == 'absent') { + fail("Please specify a hostname, ip address or socket to check a mysql instance.") + } + + case $check_mode { + 'tcp': { + if ($check_hostname == 'localhost') { + $real_check_hostname = '127.0.0.1' + } + else { + $real_check_hostname = $check_hostname + } + } + default: { + if ($check_hostname == '127.0.0.1') { + $real_check_hostname = 'localhost' + } + else { + $real_check_hostname = $check_hostname + } + } + } + + if ($check_database == 'absent') { + nagios::service { 'mysql': + ensure => $ensure, + check_command => "check_mysql!${real_check_hostname}!${check_port}!${check_username}!${check_password}", + } + } + else { + nagios::service { "mysql_${check_database}": + ensure => $ensure, + check_command => "check_mysql_db!${real_check_hostname}!${check_port}!${check_username}!${check_password}!${check_database}", + } + } + +} diff --git a/manifests/service/ntp.pp b/manifests/service/ntp.pp index c07177d..eca255a 100644 --- a/manifests/service/ntp.pp +++ b/manifests/service/ntp.pp @@ -1,7 +1,7 @@ # manifests/service/ntp.pp class nagios::service::ntp { - nagios::service{ "check_ntp_${hostname}": + nagios::service{ "check_ntp": check_command => "check_ntp_time", host_name => $fqdn, } diff --git a/manifests/service/passive.pp b/manifests/service/passive.pp new file mode 100644 index 0000000..f3df1e8 --- /dev/null +++ b/manifests/service/passive.pp @@ -0,0 +1,18 @@ +define nagios::service::passive( + $ensure = present, + $notification_interval = '', + $notification_period = '', + $notification_options = '', + $contact_groups = '' +) { + + nagios::service { $name: + use => 'passive-service', + check_command => 'check_dummy!0', + notification_interval => $notification_interval, + notification_period => $notification_period, + notification_options => $notification_options, + contact_groups => $contact_groups, + } + +} diff --git a/manifests/service/ping.pp b/manifests/service/ping.pp index 63a5400..c705c68 100644 --- a/manifests/service/ping.pp +++ b/manifests/service/ping.pp @@ -6,7 +6,7 @@ define nagios::service::ping( default => $nagios_ping_rate } - nagios::service{ "check_ping_${hostname}": + nagios::service{ "check_ping": ensure => $ensure, check_command => "check_ping${real_nagios_ping_rate}", } diff --git a/manifests/target.pp b/manifests/target.pp index 07aae93..675ac1a 100644 --- a/manifests/target.pp +++ b/manifests/target.pp @@ -1,6 +1,15 @@ # manifests/target.pp class nagios::target { - include nagios::target::host - nagios::service::ping{$fqdn:} + + @@nagios_host { "${fqdn}": + address => $ipaddress, + alias => $hostname, + use => 'generic-host', + } + + if ($nagios_parents != '') { + Nagios_host["${fqdn}"] { parents => $nagios_parents } + } + } diff --git a/manifests/target/host.pp b/manifests/target/host.pp deleted file mode 100644 index 8ba4e77..0000000 --- a/manifests/target/host.pp +++ /dev/null @@ -1,6 +0,0 @@ -# manifests/target/host.pp - -class nagios::target::host { - nagios::host { $fqdn: parents => $nagios_parent } -} - diff --git a/manifests/target/nat.pp b/manifests/target/nat.pp new file mode 100644 index 0000000..abb0a1e --- /dev/null +++ b/manifests/target/nat.pp @@ -0,0 +1,5 @@ +class nagios::target::nat inherits nagios::target { + + Nagios_host["${fqdn}"] { address => "${fqdn}" } + +} |