summaryrefslogtreecommitdiff
path: root/files
diff options
context:
space:
mode:
Diffstat (limited to 'files')
-rw-r--r--files/configs/CentOS/cgi.cfg280
-rw-r--r--files/configs/CentOS/nagios.cfg949
-rw-r--r--files/configs/CentOS/private/resource.cfg.i38634
-rw-r--r--files/configs/CentOS/private/resource.cfg.x86_6434
-rw-r--r--files/configs/Debian/cgi.cfg330
-rw-r--r--files/configs/Debian/nagios.cfg1288
-rw-r--r--files/configs/Debian/private/resource.cfg.amd6431
-rw-r--r--files/configs/Debian/private/resource.cfg.i38631
-rw-r--r--files/configs/Debian/private/resource.cfg.x86_6431
-rw-r--r--files/configs/apache2.conf67
l---------files/configs/cgi.cfg1
l---------files/configs/nagios.cfg1
-rw-r--r--files/configs/nagios_templates.cfg49
-rw-r--r--files/htpasswd.users0
-rw-r--r--files/irc_bot/riseup-nagios-client.pl72
-rw-r--r--files/irc_bot/riseup-nagios-server.pl239
-rw-r--r--files/munin/nagios_hosts32
-rw-r--r--files/munin/nagios_perf38
-rw-r--r--files/munin/nagios_svc37
-rw-r--r--files/nrpe/nrpe_commands.cfg5
-rw-r--r--files/nsca/nsca.cfg197
-rw-r--r--files/nsca/send_nsca.cfg65
-rw-r--r--files/plugin_data/sks-keyservers.netCA.pem32
-rw-r--r--files/plugins/check_dns2102
-rw-r--r--files/plugins/check_dnsbl107
-rw-r--r--files/plugins/check_gpg115
-rw-r--r--files/plugins/check_horde_login94
-rw-r--r--files/plugins/check_imap_login80
-rw-r--r--files/plugins/check_jabber_login30
-rwxr-xr-xfiles/plugins/check_mysql_health3780
-rwxr-xr-xfiles/plugins/check_openvpn_server.pl109
-rw-r--r--files/plugins/check_pop3_login83
-rw-r--r--files/pnp4nagios/action.gifbin1536 -> 0 bytes
-rw-r--r--files/pnp4nagios/apache.conf31
-rw-r--r--files/pnp4nagios/npcd8
-rw-r--r--files/pnp4nagios/pnp4nagios-popup-templates.cfg31
-rw-r--r--files/pnp4nagios/pnp4nagios-templates.cfg33
-rw-r--r--files/pnp4nagios/status-header.ssi8
38 files changed, 0 insertions, 8454 deletions
diff --git a/files/configs/CentOS/cgi.cfg b/files/configs/CentOS/cgi.cfg
deleted file mode 100644
index cd625d4c..00000000
--- a/files/configs/CentOS/cgi.cfg
+++ /dev/null
@@ -1,280 +0,0 @@
-#################################################################
-#
-# CGI.CFG - Sample CGI Configuration File for Nagios 2.9
-#
-# Last Modified: 11-21-2006
-#
-#################################################################
-
-
-# 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/nagios/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/nagios/share
-
-
-
-# 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=/nagios
-
-
-
-# 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=0
-
-
-
-# NAGIOS PROCESS CHECK COMMAND
-# This is the full path and filename of the program used to check
-# the status of the Nagios process. It is used only by the CGIs
-# and is completely optional. However, if you don't use it, you'll
-# see warning messages in the CGIs about the Nagios process
-# not running and you won't be able to execute any commands from
-# the web interface. The program should follow the same rules
-# as plugins; the return codes are the same as for the plugins,
-# it should have timeout protection, it should output something
-# to STDIO, etc.
-#
-# Note: The command line for the check_nagios plugin below may
-# have to be tweaked a bit, as different versions of the plugin
-# use different command line arguments/syntaxes.
-
-#nagios_check_command=/usr/lib64/nagios/plugins/check_nagios /var/log/nagios/status.dat 5 '/usr/sbin/nagios'
-
-
-
-# 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
-
-
-
-# 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,theboss,jdoe
-authorized_for_system_information=admin
-
-# 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,jdoe
-authorized_for_configuration_information=admin
-
-
-
-# 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
-authorized_for_system_commands=admin
-
-
-
-# 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,guest
-authorized_for_all_services=admin
-#authorized_for_all_hosts=nagiosadmin,guest
-authorized_for_all_hosts=admin
-
-
-
-# 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_service_commands=admin
-#authorized_for_all_host_commands=nagiosadmin
-authorized_for_all_host_commands=admin
-
-
-
-
-# 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
-
-
-
-# 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
-
diff --git a/files/configs/CentOS/nagios.cfg b/files/configs/CentOS/nagios.cfg
deleted file mode 100644
index b88e3db7..00000000
--- a/files/configs/CentOS/nagios.cfg
+++ /dev/null
@@ -1,949 +0,0 @@
-##############################################################################
-#
-# NAGIOS.CFG - Sample Main Config File 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.
-#
-# Last Modified: 12-21-2006
-#
-##############################################################################
-
-
-# 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/nagios/nagios.log
-
-
-
-# OBJECT CONFIGURATION FILE(S)
-# This is the configuration file in which you define hosts, host
-# groups, contacts, contact groups, services, etc. I guess it would
-# be better called an object definition file, but for historical
-# reasons it isn't. You can split object definitions into several
-# different config files by using multiple cfg_file statements here.
-# Nagios will read and process all the config files you define.
-# This can be very useful if you want to keep command definitions
-# separate from host and contact definitions...
-
-# Puppet-managed configuration files
-cfg_file=/etc/nagios/nagios_templates.cfg
-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_hostdependency.cfg
-cfg_file=/etc/nagios/nagios_hostescalation.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_servicegroup.cfg
-cfg_file=/etc/nagios/nagios_timeperiod.cfg
-
-# 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/log/nagios/objects.cache
-
-
-
-# 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/nagios/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/log/nagios/status.dat
-
-
-
-# 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. Setting this value to 0 disables command
-# checking (the default), other values enable it.
-
-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.
-
-command_file=/var/spool/nagios/cmd/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
-
-
-
-# COMMENT FILE
-# This is the file that Nagios will use for storing host and service
-# comments.
-
-comment_file=/var/log/nagios/comments.dat
-
-
-
-# DOWNTIME FILE
-# This is the file that Nagios will use for storing host and service
-# downtime data.
-
-downtime_file=/var/log/nagios/downtime.dat
-
-
-
-# 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/nagios.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/log/nagios/nagios.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.
-#
-# 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/nagios/archives
-
-
-
-# LOGGING OPTIONS
-# If you want messages logged to the syslog facility, as well as the
-# NetAlarm 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
-
-
-
-# SERVICE CHECK REAPER FREQUENCY
-# This is the frequency (in seconds!) that Nagios will process
-# the results of services that have been checked.
-
-service_reaper_frequency=10
-
-
-
-# CHECK RESULT 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
-# service check results before they are processed. As check results
-# are processed by the daemon, they are removed from the buffer.
-
-check_result_buffer_slots=4096
-
-
-
-# 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/log/nagios/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=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. Unless you are the files are named pipes, you will probably
-# want to use the default mode of append ("a").
-
-#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_service 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
-
-
-
-# ORPHANED SERVICE CHECK OPTION
-# This determines whether or not Nagios will periodically
-# check for orphaned services. 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. This seems to be a rare
-# problem and should not happen under normal circumstances.
-# If you have problems with service checks never getting
-# rescheduled, you might want to try enabling this option.
-# Values: 1 = enable checks, 0 = disable checks
-
-check_for_orphaned_services=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
-
-
-
-# AGGREGATED STATUS UPDATES
-# This option determines whether or not Nagios will
-# aggregate updates of host, service, and program status
-# data. Normally, status data is updated immediately when
-# a change occurs. This can result in high CPU loads if
-# you are monitoring a lot of services. If you want Nagios
-# to only refresh status data every few seconds, disable
-# this option.
-# Values: 1 = enable aggregate updates, 0 = disable aggregate updates
-
-aggregate_status_updates=1
-
-
-
-# AGGREGATED STATUS UPDATE INTERVAL
-# Combined with the aggregate_status_updates option,
-# this option determines the frequency (in seconds!) that
-# Nagios will periodically dump program, host, and
-# service status data. If you are not using aggregated
-# status data updates, this option has no effect.
-
-status_update_interval=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=0
-
-
-
-# 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=us
-
-
-
-# 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/sbin/p1.pl
-
-
-
-# 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 ADDRESS
-# The email address of the administrator of *this* machine (the one
-# doing the monitoring). Nagios never uses this value itself, but
-# you can access this value by using the $ADMINEMAIL$ macro in your
-# notification commands.
-
-admin_email=nagios
-
-
-
-# ADMINISTRATOR PAGER NUMBER/ADDRESS
-# The pager number/address for the administrator of *this* machine.
-# Nagios never uses this value itself, but you can access this
-# value by using the $ADMINPAGER$ macro in your notification
-# commands.
-
-admin_pager=pagenagios
-
-
-
-# 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.
-# Values: 1 - Allow core dumps
-# 0 - Do not allow core dumps (default)
-
-daemon_dumps_core=0
-
-
-
diff --git a/files/configs/CentOS/private/resource.cfg.i386 b/files/configs/CentOS/private/resource.cfg.i386
deleted file mode 100644
index 0ccf2e17..00000000
--- a/files/configs/CentOS/private/resource.cfg.i386
+++ /dev/null
@@ -1,34 +0,0 @@
-###########################################################################
-#
-# RESOURCE.CFG - Sample Resource File for Nagios 2.9
-#
-# Last Modified: 09-10-2003
-#
-# 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/lib64/nagios/plugins/eventhandlers
-
-# Store some usernames and passwords (hidden from the CGIs)
-#$USER3$=someuser
-#$USER4$=somepassword
-
diff --git a/files/configs/CentOS/private/resource.cfg.x86_64 b/files/configs/CentOS/private/resource.cfg.x86_64
deleted file mode 100644
index b9f0841c..00000000
--- a/files/configs/CentOS/private/resource.cfg.x86_64
+++ /dev/null
@@ -1,34 +0,0 @@
-###########################################################################
-#
-# RESOURCE.CFG - Sample Resource File for Nagios 2.9
-#
-# Last Modified: 09-10-2003
-#
-# 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/lib64/nagios/plugins
-
-# Sets $USER2$ to be the path to event handlers
-#$USER2$=/usr/lib64/nagios/plugins/eventhandlers
-
-# Store some usernames and passwords (hidden from the CGIs)
-#$USER3$=someuser
-#$USER4$=somepassword
-
diff --git a/files/configs/Debian/cgi.cfg b/files/configs/Debian/cgi.cfg
deleted file mode 100644
index 103db8a1..00000000
--- a/files/configs/Debian/cgi.cfg
+++ /dev/null
@@ -1,330 +0,0 @@
-#################################################################
-#
-# 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
deleted file mode 100644
index 291a4741..00000000
--- a/files/configs/Debian/nagios.cfg
+++ /dev/null
@@ -1,1288 +0,0 @@
-##############################################################################
-#
-# 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.
-#cfg_file=/etc/nagios3/commands.cfg
-
-# Puppet-managed configuration files
-cfg_file=/etc/nagios3/nagios_templates.cfg
-cfg_file=/etc/nagios3/nagios_command.cfg
-cfg_file=/etc/nagios3/nagios_contact.cfg
-cfg_file=/etc/nagios3/nagios_contactgroup.cfg
-cfg_file=/etc/nagios3/nagios_host.cfg
-cfg_file=/etc/nagios3/nagios_hostdependency.cfg
-cfg_file=/etc/nagios3/nagios_hostescalation.cfg
-cfg_file=/etc/nagios3/nagios_hostextinfo.cfg
-cfg_file=/etc/nagios3/nagios_hostgroup.cfg
-cfg_file=/etc/nagios3/nagios_hostgroupescalation.cfg
-cfg_file=/etc/nagios3/nagios_service.cfg
-cfg_file=/etc/nagios3/nagios_servicedependency.cfg
-cfg_file=/etc/nagios3/nagios_serviceescalation.cfg
-cfg_file=/etc/nagios3/nagios_serviceextinfo.cfg
-cfg_file=/etc/nagios3/nagios_servicegroup.cfg
-cfg_file=/etc/nagios3/nagios_timeperiod.cfg
-
-# 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/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.amd64 b/files/configs/Debian/private/resource.cfg.amd64
deleted file mode 100644
index 3ed732bb..00000000
--- a/files/configs/Debian/private/resource.cfg.amd64
+++ /dev/null
@@ -1,31 +0,0 @@
-###########################################################################
-#
-# 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.i386 b/files/configs/Debian/private/resource.cfg.i386
deleted file mode 100644
index 3ed732bb..00000000
--- a/files/configs/Debian/private/resource.cfg.i386
+++ /dev/null
@@ -1,31 +0,0 @@
-###########################################################################
-#
-# 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
deleted file mode 100644
index 3ed732bb..00000000
--- a/files/configs/Debian/private/resource.cfg.x86_64
+++ /dev/null
@@ -1,31 +0,0 @@
-###########################################################################
-#
-# 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/apache2.conf b/files/configs/apache2.conf
deleted file mode 100644
index f0f8b2f3..00000000
--- a/files/configs/apache2.conf
+++ /dev/null
@@ -1,67 +0,0 @@
-# apache configuration for nagios 3.x
-# note to users of nagios 1.x and 2.x:
-# throughout this file are commented out sections which preserve
-# backwards compatibility with bookmarks/config for older nagios versios.
-# simply look for lines following "nagios 1.x:" and "nagios 2.x" comments.
-
-ScriptAlias /cgi-bin/nagios3 /usr/lib/cgi-bin/nagios3
-ScriptAlias /nagios3/cgi-bin /usr/lib/cgi-bin/nagios3
-# nagios 1.x:
-#ScriptAlias /cgi-bin/nagios /usr/lib/cgi-bin/nagios3
-#ScriptAlias /nagios/cgi-bin /usr/lib/cgi-bin/nagios3
-# nagios 2.x:
-#ScriptAlias /cgi-bin/nagios2 /usr/lib/cgi-bin/nagios3
-#ScriptAlias /nagios2/cgi-bin /usr/lib/cgi-bin/nagios3
-
-# Where the stylesheets (config files) reside
-Alias /nagios3/stylesheets /etc/nagios3/stylesheets
-# nagios 1.x:
-#Alias /nagios/stylesheets /etc/nagios3/stylesheets
-# nagios 2.x:
-#Alias /nagios2/stylesheets /etc/nagios3/stylesheets
-
-# Where the HTML pages live
-Alias /nagios3 /usr/share/nagios3/htdocs
-# nagios 2.x:
-#Alias /nagios2 /usr/share/nagios3/htdocs
-# nagios 1.x:
-#Alias /nagios /usr/share/nagios3/htdocs
-
-<DirectoryMatch (/usr/share/nagios3/htdocs|/usr/lib/cgi-bin/nagios3|/etc/nagios3/stylesheets)>
- Options FollowSymLinks
-
- DirectoryIndex index.php index.html
-
- AllowOverride AuthConfig
-
-
- <IfVersion < 2.3>
- Order Allow,Deny
- Allow From All
- </IfVersion>
-
- <IfVersion >= 2.3>
- Require all denied
- </IfVersion>
-
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios3/htpasswd.users
- # nagios 1.x:
- #AuthUserFile /etc/nagios/htpasswd.users
- require valid-user
-</DirectoryMatch>
-
-<Directory /usr/share/nagios3/htdocs>
- Options +ExecCGI
-</Directory>
-
-# Enable this ScriptAlias if you want to enable the grouplist patch.
-# See http://apan.sourceforge.net/download.html for more info
-# It allows you to see a clickable list of all hostgroups in the
-# left pane of the Nagios web interface
-# XXX This is not tested for nagios 2.x use at your own peril
-#ScriptAlias /nagios3/side.html /usr/lib/cgi-bin/nagios3/grouplist.cgi
-# nagios 1.x:
-#ScriptAlias /nagios/side.html /usr/lib/cgi-bin/nagios3/grouplist.cgi
-
diff --git a/files/configs/cgi.cfg b/files/configs/cgi.cfg
deleted file mode 120000
index db9667b3..00000000
--- a/files/configs/cgi.cfg
+++ /dev/null
@@ -1 +0,0 @@
-Debian/cgi.cfg \ No newline at end of file
diff --git a/files/configs/nagios.cfg b/files/configs/nagios.cfg
deleted file mode 120000
index 1409b9e8..00000000
--- a/files/configs/nagios.cfg
+++ /dev/null
@@ -1 +0,0 @@
-Debian/nagios.cfg \ No newline at end of file
diff --git a/files/configs/nagios_templates.cfg b/files/configs/nagios_templates.cfg
deleted file mode 100644
index 98596713..00000000
--- a/files/configs/nagios_templates.cfg
+++ /dev/null
@@ -1,49 +0,0 @@
-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/htpasswd.users b/files/htpasswd.users
deleted file mode 100644
index e69de29b..00000000
--- a/files/htpasswd.users
+++ /dev/null
diff --git a/files/irc_bot/riseup-nagios-client.pl b/files/irc_bot/riseup-nagios-client.pl
deleted file mode 100644
index 2467058d..00000000
--- a/files/irc_bot/riseup-nagios-client.pl
+++ /dev/null
@@ -1,72 +0,0 @@
-#!/usr/bin/perl -w
-
-# ##############################################################################
-# Infrabot-Client - a simple Infrabot client which sends it's whole command
-# line arguments to a local UNIX domain socket.
-# ##############################################################################
-
-use strict;
-use IO::Socket;
-
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-# >> CONFIGURATION >>
-
-# Read a configuration file
-# The arg can be a relative or full path, or
-# it can be a file located somewhere in @INC.
-sub ReadCfg
-{
- my $file = $_[0];
-
- our $err;
-
- { # Put config data into a separate namespace
- package CFG;
-
- # Process the contents of the config file
- my $rc = do($file);
-
- # Check for errors
- if ($@) {
- $::err = "ERROR: Failure compiling '$file' - $@";
- } elsif (! defined($rc)) {
- $::err = "ERROR: Failure reading '$file' - $!";
- } elsif (! $rc) {
- $::err = "ERROR: Failure processing '$file'";
- }
- }
-
- return ($err);
-}
-
-# Get our configuration information
-if (my $err = ReadCfg('/etc/nagios_nsa.cfg')) {
- print(STDERR $err, "\n");
- exit(1);
-}
-
-# << CONFIGURATION <<
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-if (@ARGV == 0) {
- print "Hey - specify a message, sucker!\n";
- exit(1);
-}
-
-unless (-S $CFG::Nsa{'socket'}) {
- die "Socket '$CFG::Nsa{'socket'}' doesn't exist or isn't a socket!\n";
-}
-
-unless (-r $CFG::Nsa{'socket'}) {
- die "Socket '$CFG::Nsa{'socket'}' can't be read!\n";
-}
-
-my $sock = IO::Socket::UNIX->new (
- Peer => $CFG::Nsa{'socket'},
- Type => SOCK_DGRAM,
- Timeout => 10
-) || die "Can't open socket '$CFG::Nsa{'socket'}'!\n";
-
-print $sock "@ARGV";
-close($sock);
diff --git a/files/irc_bot/riseup-nagios-server.pl b/files/irc_bot/riseup-nagios-server.pl
deleted file mode 100644
index 5d65e6dd..00000000
--- a/files/irc_bot/riseup-nagios-server.pl
+++ /dev/null
@@ -1,239 +0,0 @@
-#!/usr/bin/perl -w
-
-# ##############################################################################
-# a simple IRC bot which dispatches messages received via local domain sockets
-# ##############################################################################
-
-
-######
-## THIS NEEDS TO BE PORTED TO THE NEW FRAMEWORKS!
-##
-## STICKY POINTS: the addfh() function doesn't exist in BasicBot or POE::Component::IRC
-##
-## people suggested we use Anyevent::IRC and POE::Kernel ->select_read and POE::Wheel namespace
-##
-## in the meantime, inspiration for extensions can be found here: http://svn.foswiki.org/trunk/WikiBot/mozbot.pl
-
-use strict;
-use File::Basename;
-
-BEGIN {
- unshift @INC, dirname($0);
-}
-
-my $VERSION = '0.2';
-my $running = 1;
-
-# Read a configuration file
-# The arg can be a relative or full path, or
-# it can be a file located somewhere in @INC.
-sub ReadCfg
-{
- my $file = $_[0];
-
- our $err;
-
- { # Put config data into a separate namespace
- package CFG;
-
- # Process the contents of the config file
- my $rc = do($file);
-
- # Check for errors
- if ($@) {
- $::err = "ERROR: Failure compiling '$file' - $@";
- } elsif (! defined($rc)) {
- $::err = "ERROR: Failure reading '$file' - $!";
- } elsif (! $rc) {
- $::err = "ERROR: Failure processing '$file'";
- }
- }
-
- return ($err);
-}
-
-# Get our configuration information
-if (my $err = ReadCfg('/etc/nagios_nsa.cfg')) {
- print(STDERR $err, "\n");
- exit(1);
-}
-
-use POSIX qw(setsid);
-use IO::Socket;
-use Net::IRC;
-
-sub new {
- my $self = {
- socket => undef,
- irc => undef,
- conn => undef,
- commandfile => undef,
- };
-
- return bless($self, __PACKAGE__);
-}
-
-sub daemonize {
- my $self = shift;
- my $pid;
-
- chdir '/' or die "Can't chdir to /: $!";
-
- open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
- open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
-
- defined ($pid = fork) or die "Can't fork: $!";
-
- if ($pid && $CFG::Nsa{'pidfile'}) { # write pid of child
- open PID, ">$CFG::Nsa{'pidfile'}" or die "Can't open pid file: $!";
- print PID $pid;
- close PID;
- }
- exit if $pid;
- setsid or die "Can't start a new session: $!";
-
- #open STDERR, '>&STDOUT' or die "Can't dup stdout: $!";
-}
-
-sub run {
- my $self = shift;
-
- $self->{irc}->do_one_loop();
-}
-
-sub shutdown {
- my $sig = shift;
-
- print STDERR "Received SIG$sig, shutting down...\n";
- $running = 0;
-}
-
-sub socket_has_data {
- my $self = shift;
-
- $self->{socket}->recv(my $data, 1024);
- if ($CFG::Nsa{'usenotices'}) {
- $self->{conn}->notice($CFG::Nsa{'channel'}, $data);
- } else {
- $self->{conn}->privmsg($CFG::Nsa{'channel'}, $data);
- }
-}
-
-sub irc_on_connect {
- my $self = shift;
-
- print STDERR "Joining channel '$CFG::Nsa{'channel'}'...\n";
- $self->join($CFG::Nsa{'channel'});
-}
-
-sub irc_on_msg {
- my ($self, $event) = @_;
- my $data = join(' ', $event->args);
- #my $nick = quotemeta($nicks[$nick]);
- my $to = $event->to;
- #my $channel = &toToChannel($self, @$to);
- #my $cmdChar = $commandChar{default}; # FIXME: should look up for CURRENT channel first!
- #if ( exists $commandChar{$channel} ) { $cmdChar = $commandChar{$channel}; }
- my $msg = parse_msg($event);
- if (defined($msg)) {
- #$self->privmsg($event->nick, "alright, sending this message to nagios, hope it figures it out: $msg");
- } else {
- $self->privmsg($event->nick, "can't parse $data, you want 'ack host service comment'\n");
- }
-}
-
-sub irc_on_public {
- my ($self, $event) = @_;
- my $data = join(' ', $event->args);
- my $to = $event->to;
- if ($data =~ s/([^:]*):\s+//) {
- if ($1 eq $CFG::Nsa{'nickname'}) {
- my $msg = parse_msg($event);
- if (defined($msg)) {
- #$self->privmsg($event->to, "alright, sending this message to nagios, hope it figures it out: $msg");
- } else {
- $self->privmsg($event->to, "can't parse $data, you want 'ack host service comment'\n");
- }
- } else {
- #print STDERR "ignoring message $data, not for me (me being $1)\n";
- }
- } else {
- #print STDERR "ignoring message $data\n";
- }
-}
-
-sub parse_msg {
- my $event= shift;
- my $data = join(' ', $event->args);
- my $msg;
- if ($data =~ m/([^:]*:)?\s*ack(?:knowledge)?\s+([a-zA-Z0-9\-\.]+)(?:\s+([-\w\.]+)(?:\s+([\w\s]+))?)?/) {
- #print STDERR "writing to nagios scoket ". $CFG::Nsa{'commandfile'} . "\n";
- open(my $cmdfile, ">", $CFG::Nsa{'commandfile'}) || die "Can't open Nagios commandfile: $CFG::Nsa{'commandfile'}!\n";
- my $host = $2;
- my ($service, $comment) = (undef, "no comment (from irc)");
- if ($4) {
- $service = $3;
- $comment = $4;
- } elsif ($3) {
- $service = $3;
- }
- my $user = $event->nick;
- $msg = '[' . time() . '] ';
- if (defined($service)) {
- $msg .= "ACKNOWLEDGE_SVC_PROBLEM;$host;$service;1;1;1;$user;$comment\n";
- } else {
- $msg .= "ACKNOWLEDGE_HOST_PROBLEM;$host;1;1;1;$user;$comment\n";
- }
- print {$cmdfile} $msg;
- close($cmdfile);
- }
- return $msg;
-}
-
-# - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
-my $bot = &new;
-
-if (-e $CFG::Nsa{'socket'}) {
- die "Socket '$CFG::Nsa{'socket'}' exists!\n";
-}
-
-$bot->{socket} = IO::Socket::UNIX->new (
- Local => $CFG::Nsa{'socket'},
- Type => SOCK_DGRAM,
- Listen => 5
-) || die "Can't create socket '$CFG::Nsa{'socket'}'!\n";
-
-$SIG{INT} = $SIG{TERM} = \&shutdown;
-
-$bot->daemonize();
-$bot->{irc} = new Net::IRC;
-
-$bot->{conn} = $bot->{irc}->newconn (
- Server => $CFG::Nsa{'server'},
- Port => $CFG::Nsa{'port'},
- Nick => $CFG::Nsa{'nickname'},
- Username => $CFG::Nsa{'nickname'},
- Password => $CFG::Nsa{'password'},
- Ircname => $CFG::Nsa{'realname'} . " (NSA $VERSION)",
-) || die "Can't connect to server '$CFG::Nsa{'server'}'!\n";
-
-$bot->{conn}->add_global_handler(376, \&irc_on_connect);
-$bot->{conn}->add_global_handler('nomotd', \&irc_on_connect);
-$bot->{conn}->add_global_handler('msg', \&irc_on_msg);
-$bot->{conn}->add_global_handler('public', \&irc_on_public);
-#$bot->{conn}->add_global_handler('notice', \&irc_on_msg);
-$bot->{irc}->addfh($bot->{socket}, \&socket_has_data, 'r', $bot);
-
-while ($running) {
- $bot->run();
-}
-
-close($bot->{socket});
-unlink($CFG::Nsa{'socket'});
-
-exit(0);
-
-1;
-
-__END__
diff --git a/files/munin/nagios_hosts b/files/munin/nagios_hosts
deleted file mode 100644
index 3fa00f1d..00000000
--- a/files/munin/nagios_hosts
+++ /dev/null
@@ -1,32 +0,0 @@
-#!/bin/bash
-
-if [ -z "$nag_stats_binary" ]; then
- nag_stats_binary=/usr/sbin/nagios3stats
-fi
-
-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 '
-$nag_stats_binary --mrtg --data NUMHSTUP
-echo -n 'down.value '
-$nag_stats_binary --mrtg --data NUMHSTDOWN
-echo -n 'unr.value '
-$nag_stats_binary --mrtg --data NUMHSTUNR
-
diff --git a/files/munin/nagios_perf b/files/munin/nagios_perf
deleted file mode 100644
index 609d62f4..00000000
--- a/files/munin/nagios_perf
+++ /dev/null
@@ -1,38 +0,0 @@
-#!/bin/bash
-
-if [ -z "$nag_stats_binary" ]; then
- nag_stats_binary=/usr/sbin/nagios3stats
-fi
-
-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 " $($nag_stats_binary --mrtg --data AVGACT${TYPE_ABBR}LAT)
-echo "act_ext_$TYPE_ABBR.value " $($nag_stats_binary --mrtg --data AVGACT${TYPE_ABBR}EXT)
diff --git a/files/munin/nagios_svc b/files/munin/nagios_svc
deleted file mode 100644
index 97c8bfc1..00000000
--- a/files/munin/nagios_svc
+++ /dev/null
@@ -1,37 +0,0 @@
-#!/bin/bash
-
-if [ -z "$nag_stats_binary" ]; then
- nag_stats_binary=/usr/sbin/nagios3stats
-fi
-
-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 '
-$nag_stats_binary --mrtg --data NUMSVCOK
-echo -n 'warn.value '
-$nag_stats_binary --mrtg --data NUMSVCWARN
-echo -n 'crit.value '
-$nag_stats_binary --mrtg --data NUMSVCCRIT
-echo -n 'unkn.value '
-$nag_stats_binary --mrtg --data NUMSVCUNKN
-
diff --git a/files/nrpe/nrpe_commands.cfg b/files/nrpe/nrpe_commands.cfg
deleted file mode 100644
index b725a36a..00000000
--- a/files/nrpe/nrpe_commands.cfg
+++ /dev/null
@@ -1,5 +0,0 @@
-# default plugins
-command[check_users]=/usr/lib/nagios/plugins/check_users $ARG1$
-command[check_disk]=/usr/lib/nagios/plugins/check_disk $ARG1$ -x "/dev" -x "/dev/shm" -x "/lib/init/rw"
-command[check_apt]=sudo /usr/lib/nagios/plugins/check_apt -u $ARG1$
-command[check_swap]=/usr/lib/nagios/plugins/check_swap $ARG1$
diff --git a/files/nsca/nsca.cfg b/files/nsca/nsca.cfg
deleted file mode 100644
index 0b019ea1..00000000
--- a/files/nsca/nsca.cfg
+++ /dev/null
@@ -1,197 +0,0 @@
-# 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=5667
-
-
-
-# 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.
-# Note to debian users: nagios 1.x and nagios 2.x have
-# different default locations for this file. this is the
-# default location for nagios 1.x:
-#command_file=/var/run/nagios/nagios.cmd
-# and this is the default location for nagios2:
-#command_file=/var/lib/nagios2/rw/nagios.cmd
-# and this is the default location for nagios3:
-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
deleted file mode 100644
index 8127226b..00000000
--- a/files/nsca/send_nsca.cfg
+++ /dev/null
@@ -1,65 +0,0 @@
-# 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/plugin_data/sks-keyservers.netCA.pem b/files/plugin_data/sks-keyservers.netCA.pem
deleted file mode 100644
index 24a2ad2e..00000000
--- a/files/plugin_data/sks-keyservers.netCA.pem
+++ /dev/null
@@ -1,32 +0,0 @@
------BEGIN CERTIFICATE-----
-MIIFizCCA3OgAwIBAgIJAK9zyLTPn4CPMA0GCSqGSIb3DQEBBQUAMFwxCzAJBgNV
-BAYTAk5PMQ0wCwYDVQQIDARPc2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5u
-ZXQgQ0ExHjAcBgNVBAMMFXNrcy1rZXlzZXJ2ZXJzLm5ldCBDQTAeFw0xMjEwMDkw
-MDMzMzdaFw0yMjEwMDcwMDMzMzdaMFwxCzAJBgNVBAYTAk5PMQ0wCwYDVQQIDARP
-c2xvMR4wHAYDVQQKDBVza3Mta2V5c2VydmVycy5uZXQgQ0ExHjAcBgNVBAMMFXNr
-cy1rZXlzZXJ2ZXJzLm5ldCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoC
-ggIBANdsWy4PXWNUCkS3L//nrd0GqN3dVwoBGZ6w94Tw2jPDPifegwxQozFXkG6I
-6A4TK1CJLXPvfz0UP0aBYyPmTNadDinaB9T4jIwd4rnxl+59GiEmqkN3IfPsv5Jj
-MkKUmJnvOT0DEVlEaO1UZIwx5WpfprB3mR81/qm4XkAgmYrmgnLXd/pJDAMk7y1F
-45b5zWofiD5l677lplcIPRbFhpJ6kDTODXh/XEdtF71EAeaOdEGOvyGDmCO0GWqS
-FDkMMPTlieLA/0rgFTcz4xwUYj/cD5e0ZBuSkYsYFAU3hd1cGfBue0cPZaQH2HYx
-Qk4zXD8S3F4690fRhr+tki5gyG6JDR67aKp3BIGLqm7f45WkX1hYp+YXywmEziM4
-aSbGYhx8hoFGfq9UcfPEvp2aoc8u5sdqjDslhyUzM1v3m3ZGbhwEOnVjljY6JJLx
-MxagxnZZSAY424ZZ3t71E/Mn27dm2w+xFRuoy8JEjv1d+BT3eChM5KaNwrj0IO/y
-u8kFIgWYA1vZ/15qMT+tyJTfyrNVV/7Df7TNeWyNqjJ5rBmt0M6NpHG7CrUSkBy9
-p8JhimgjP5r0FlEkgg+lyD+V79H98gQfVgP3pbJICz0SpBQf2F/2tyS4rLm+49rP
-fcOajiXEuyhpcmzgusAj/1FjrtlynH1r9mnNaX4e+rLWzvU5AgMBAAGjUDBOMB0G
-A1UdDgQWBBTkwyoJFGfYTVISTpM8E+igjdq28zAfBgNVHSMEGDAWgBTkwyoJFGfY
-TVISTpM8E+igjdq28zAMBgNVHRMEBTADAQH/MA0GCSqGSIb3DQEBBQUAA4ICAQAR
-OXnYwu3g1ZjHyley3fZI5aLPsaE17cOImVTehC8DcIphm2HOMR/hYTTL+V0G4P+u
-gH+6xeRLKSHMHZTtSBIa6GDL03434y9CBuwGvAFCMU2GV8w92/Z7apkAhdLToZA/
-X/iWP2jeaVJhxgEcH8uPrnSlqoPBcKC9PrgUzQYfSZJkLmB+3jEa3HKruy1abJP5
-gAdQvwvcPpvYRnIzUc9fZODsVmlHVFBCl2dlu/iHh2h4GmL4Da2rRkUMlbVTdioB
-UYIvMycdOkpH5wJftzw7cpjsudGas0PARDXCFfGyKhwBRFY7Xp7lbjtU5Rz0Gc04
-lPrhDf0pFE98Aw4jJRpFeWMjpXUEaG1cq7D641RpgcMfPFvOHY47rvDTS7XJOaUT
-BwRjmDt896s6vMDcaG/uXJbQjuzmmx3W2Idyh3s5SI0GTHb0IwMKYb4eBUIpQOnB
-cE77VnCYqKvN1NVYAqhWjXbY7XasZvszCRcOG+W3FqNaHOK/n/0ueb0uijdLan+U
-f4p1bjbAox8eAOQS/8a3bzkJzdyBNUKGx1BIK2IBL9bn/HravSDOiNRSnZ/R3l9G
-ZauX0tu7IIDlRCILXSyeazu0aj/vdT3YFQXPcvt5Fkf5wiNTo53f72/jYEJd6qph
-WrpoKqrwGwTpRUCMhYIUt65hsTxCiJJ5nKe39h46sg==
------END CERTIFICATE-----
diff --git a/files/plugins/check_dns2 b/files/plugins/check_dns2
deleted file mode 100644
index 21956315..00000000
--- a/files/plugins/check_dns2
+++ /dev/null
@@ -1,102 +0,0 @@
-#!/bin/bash
-# Written by Damien Gy
-# damien.gy+nagiosexchange(AT)gmail.com
-# 2007-09-28
-
-PROGNAME=`basename $0`
-REVISION=1.00
-TMP=/tmp/tmpdig
-DIG=/usr/bin/dig
-
-print_revision() {
- echo $PROGNAME $REVISION
-}
-
-print_usage() {
- echo "Usage:"
- echo " $PROGNAME -c|--check <host> <type> <server>"
- echo " $PROGNAME -h|--help"
- echo " $PROGNAME -v|--version"
-}
-
-print_help() {
- print_revision
- echo ""
- print_usage
- echo "Where:"
- echo " host the name of the resource record to be looked up"
- echo " type indicates the query required (any, a, mx, etc.)"
- echo " server the name or IP address of the name server to query"
- echo ""
- echo " -h|--help prints this help screen"
- echo ""
- echo " -v|--version prints version and license information"
- echo ""
- echo " Created by Damien Gy, questions or problems e-mail damien.gy+nagiosexchange(AT)gmail.com"
- echo ""
-}
-
-check_dns() {
-
- if [ $# -ne 3 ]
- then
- echo "Number of arguments incorrect"
- exit 3
- fi
- if [ ! -e $DIG ]
- then
- echo "$DIG not found"
- exit 3
- fi
- $DIG $1 $2 @$3 > $TMP
-
- if ( grep "status" $TMP > /dev/null )
- then
- # DNS server answered
- if ( grep "NOERROR" $TMP > /dev/null )
- then
- echo "DNS OK "`grep "time:" $TMP`
- rm -f $TMP
- exit 0
- else
- echo "WARNING "`grep "time:" $TMP`
- rm -f $TMP
- exit 1
- fi
-
- else
- # no answer
- echo "CRITICAL - Connection timed out"
- rm -f $TMP
- exit 2
- fi
-}
-
-case "$1" in
---help)
- print_help
- exit 0
- ;;
--h)
- print_help
- exit 0
- ;;
---version)
- print_revision
- exit 0
- ;;
--v)
- print_revision
- exit 0
- ;;
---check)
- check_dns $2 $3 $4
- ;;
--c)
- check_dns $2 $3 $4
- ;;
-*)
- print_usage
- exit 3
-
-esac
diff --git a/files/plugins/check_dnsbl b/files/plugins/check_dnsbl
deleted file mode 100644
index 93cea375..00000000
--- a/files/plugins/check_dnsbl
+++ /dev/null
@@ -1,107 +0,0 @@
-#!/bin/sh
-#
-# dnsbl-check-nagios.sh
-#
-# (c) 2009 Damon Tajeddini & heise Netze
-#
-STATE_OK=0
-STATE_WARNING=1
-STATE_CRITICAL=2
-STATE_UNKNOWN=3
-STATE_DEPENDENT=4
-
-FOUND_ADRESS=0
-
-DNSBLlist=`grep -v ^# <<!
-cbl.abuseat.org
-dnsbl.ahbl.org
-ircbl.ahbl.org
-virbl.dnsbl.bit.nl
-blackholes.five-ten-sg.com
-dnsbl.inps.de
-ix.dnsbl.manitu.net
-no-more-funn.moensted.dk
-combined.njabl.org
-dnsbl.njabl.org
-dnsbl.sorbs.net
-bl.spamcannibal.org
-bl.spamcop.net
-sbl.spamhaus.org
-xbl.spamhaus.org
-pbl.spamhaus.org
-dnsbl-1.uceprotect.net
-# dnsbl-2.uceprotect.net
-# dnsbl-3.uceprotect.net
-psbl.surriel.com
-l2.apews.org
-dnsrbl.swinog.ch
-db.wpbl.info
-!`
-
-# reverse IP address
-convertIP()
-{
- set `IFS=".";echo $1`
- echo $4.$3.$2.$1
-}
-
-usage()
-{
- echo "Usage: $0 [-H] <host>] [-p]"
- echo " -H check Host "
- echo " -p print list of DNSBLs"
- exit 3
-}
-
-# Checks the IP with list of DNSBL servers
-check()
-{
- count=0;
- for i in $DNSBLlist
- do
- count=$(($count + 1))
- if nslookup $ip_arpa.$i | grep -q "127.0.0." ;
- then
- FOUND_ADRESS=$(($FOUND_ADRESS + 1))
- echo "DNSBL-Alarm: $ip is listed on $i"
- fi
- done
- if [ $FOUND_ADRESS -ge 1 ]
- then
- exit 1
- fi
- echo "OK - $ip not on $count DNSBLs"
- exit 0
-}
-
-case $1 in
- -H)
- if [ -z "$2" ]
- then
- echo "ip address missing"
- exit
- fi
- ip=$2
- ip_arpa=`convertIP $ip`
- check;;
-
- -p)
- for i in $DNSBLlist
- do
- echo $i
- done
- exit $STATE_WARNING
- exit;;
-
- --help)
- usage
- exit;;
-
- *)
- if [ -z "$1" ]
- then
- usage
- fi
- echo "unknown command: $1"
- exit;;
-esac
diff --git a/files/plugins/check_gpg b/files/plugins/check_gpg
deleted file mode 100644
index eb9fa51f..00000000
--- a/files/plugins/check_gpg
+++ /dev/null
@@ -1,115 +0,0 @@
-#!/bin/bash
-#
-# Nagios plugin that checks whether a key ID has expired, or will expire within
-# a certain time.
-#
-# note: the plugin will issue a critical state if the required key has been
-# revoked.
-#
-# usage: check_gpg [-w <num_days>] [--gnupg-homedir <path>] <key_id>
-#
-# <key_id> is any PGP key ID that GnuPG accepts with "gpg --list-key <key_id>"
-#
-# The option -w parameter lets you specify the number of days within which key
-# expiry will trigger a warning. e.g. if <key_id> expires within <num_days>
-# days, make nagios issue a warning.
-#
-# num_days must be an integer value
-#
-# optionally, if the keyring directory you want GPG to use is not located in
-# the user's ~/.gnupg, you can specify the path to the keyring directory with
-# the --gnupg-homedir parameter.
-#
-# Thanks a bunch to Daniel Kahn Gillmor for providing example commands that
-# made up most of the core of this plugin.
-#
-# Copyleft Gabriel Filion
-#
-# This plugin is released under the GPL v3+ license. To get a copy of the
-# license text visit: https://www.gnu.org/licenses/gpl-3.0.txt
-#
-SECS_IN_DAY=86400
-
-function debug () {
- if [ -n "$DEBUG" ]; then
- echo "$1" >&2
- fi
-}
-
-debug "got args: $*"
-
-now=$(date +%s)
-debug "current timestamp: $now"
-
-warning_threshold=
-homedir=
-homedir_path=~/.gnupg
-for arg in $*; do
- case $arg in
- "-w")
- if [ -z "$2" ]; then
- echo "UNKNOWN: argument -w got no value. integer needed"
- exit 3
- fi
- if [ "`echo $2 | egrep ^[[:digit:]]+$`" = "" ]; then
- echo "UNKNOWN: invalid value '$2' passed to -w. integer needed"
- exit 3
- fi
- warning_threshold=$(( $now + ($2*$SECS_IN_DAY) ))
- debug "setting warning_threshold to '$warning_threshold'"
-
- shift 2
- ;;
- "--gnupg-homedir")
- if [ -z "$2" ]; then
- echo "UNKNOWN: argument --gnupg-homedir got no value. path needed"
- exit 3
- fi
- if [ ! -d "$2" ]; then
- echo "UNKNOWN: homedir '$2' does not exist or is not a directory"
- exit 3
- fi
- homedir_path=$2
- homedir="--homedir ${homedir_path}"
- debug "setting homedir to '$homedir_path'"
-
- shift 2
- ;;
- esac
-done
-
-if [ -z "$1" ]; then
- echo "UNKNOWN: must provide a key ID"
- exit 3
-fi
-key="$1"
-
-# GPG is too stupid to error out when asked to refresh a key that's not in the
-# local keyring so we need to perform another call to verify this first.
-output=$( { gpg $homedir --list-key "$key" >/dev/null && gpg $homedir --refresh --keyserver hkps://hkps.pool.sks-keyservers.net --keyserver-options ca-cert-file=$homedir_path/sks-keyservers.netCA.pem "$key" >/dev/null; } 2>&1 )
-if [ $? -ne 0 ]; then
- echo "UNKNOWN: $output"
- exit 3
-fi
-
-if [ "$(gpg $homedir --check-sig "$key" | grep "^rev!")" != "" ]; then
- echo "CRITICAL: key '$key' has been revoked!"
- exit 1
-fi
-
-for expiry in $(gpg $homedir --with-colons --fixed-list-mode --list-key "$key" 2>/dev/null | awk -F: '/^pub:/{ print $7 }');
-do
- debug "expiry value: $expiry"
-
- if [ "$now" -gt "$expiry" ] ; then
- printf "CRITICAL: %s has expired on %s\n" "$key" "$(date -d "$expiry seconds")";
- exit 1;
- fi;
- if [ -n "$warning_threshold" ] && [ "$warning_threshold" -gt "$expiry" ]; then
- remaining=$(( ($expiry-$now) / $SECS_IN_DAY ))
- printf "WARNING: %s expires in %s days\n" "$key" "$remaining";
- exit 2;
- fi
-done
-
-echo "OK: key '$key' has not expired."
diff --git a/files/plugins/check_horde_login b/files/plugins/check_horde_login
deleted file mode 100644
index 8c821e48..00000000
--- a/files/plugins/check_horde_login
+++ /dev/null
@@ -1,94 +0,0 @@
-#!/bin/env python
-# vi:si:et:sw=4:sts=4:ts=4
-# -*- coding: UTF-8 -*-
-# -*- Mode: Python -*-
-#
-# Copyright (C) 2015 mh <mh@immerda.ch>
-
-# This file may be distributed and/or modified under the terms of
-# the GNU General Public License version 2 as published by
-# the Free Software Foundation.
-# This file is distributed without any warranty; without even the implied
-# warranty of merchantability or fitness for a particular purpose.
-#
-
-import sys, os, requests, getopt
-from time import time
-
-def usage():
- print sys.argv[0] + " -u username "+ \
- "-p password " + \
- "-s server path" + \
- "[-w warning_in_s] " + \
- "[-c critical_in_s]"
- sys.exit(1)
-
-def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], "u:p:s:h:w:c")
- except getopt.GetoptError:
- usage()
- return 3
-
- user = url = password = None
- warning = 5
- critical = 10
-
- for o, a in opts:
- if o == "-u":
- user = a
- elif o == "-p":
- password = a
- elif o == "-w":
- warning = a
- elif o == "-c":
- critical = a
- elif o == "-s":
- url = a + "/login.php"
- elif o == '-h':
- usage()
-
- if user == None or password == None or url == None:
- usage()
-
- params = { 'horde_user': user,
- 'horde_pass': password,
- 'horde_select_view': 'auto',
- 'anchor_string': '',
- 'app': '',
- 'login_post': 1,
- 'new_lang': 'en_US',
- 'url': '',
- }
-
-
- timestamp = time()
- try:
- r = requests.post(url, data=params, allow_redirects=False)
- except Exception, e:
- print "CRITICAL Horde Login Failed: %s" % e
- sys.exit(2)
-
- timestamp = time() - timestamp
- if r.status_code == 302:
- if timestamp < warning:
- status = "OK"
- exitcode = 0
- if timestamp >= warning:
- status = "WARNING"
- exitcode = 1
- if timestamp >= critical:
- status = "CRITICAL"
- exitcode = 2
- else:
- status = "ERROR"
- exitcode = 2
- # on a successfully login we are redirected to the mailbox
- print '%s Horde Login | response_time=%.3fs;%.3f;%.3f' % (status, timestamp, warning, critical)
- sys.exit(exitcode)
-
-
-if __name__ == "__main__":
- sys.exit(main())
-
-
diff --git a/files/plugins/check_imap_login b/files/plugins/check_imap_login
deleted file mode 100644
index d059822b..00000000
--- a/files/plugins/check_imap_login
+++ /dev/null
@@ -1,80 +0,0 @@
-#!/usr/bin/python
-# -*- coding: UTF-8 -*-
-# -*- Mode: Python -*-
-#
-# Copyright (C) 2006 Bertera Pietro <pietro@bertera.it>
-# Response time monitoring with perfdata modification by Ivan Savcic <isavcic@gmail.com> and Milos Buncic, 2012.
-# From: https://github.com/isavcic/check_imap_login
-
-# This file may be distributed and/or modified under the terms of
-# the GNU General Public License version 2 as published by
-# the Free Software Foundation.
-# This file is distributed without any warranty; without even the implied
-# warranty of merchantability or fitness for a particular purpose.
-
-import sys, os, imaplib, getopt
-from time import time
-
-def usage():
- print sys.argv[0] + " -u <user> -p <password> -H <host> [-s] -w <warning threshold (sec)> -c <critical threshold (sec)>\n -s is for using IMAPS"
-
-def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], "u:p:sH:w:c:")
- except getopt.GetoptError:
- usage()
- return 3
-
- user = host = password = use_ssl = warning = critical = None
-
- for o, a in opts:
- if o == "-u":
- user = a
- elif o == "-p":
- password = a
- elif o == "-s":
- use_ssl = True
- elif o == "-H":
- host = a
- elif o == "-w":
- warning = float(a)
- elif o == "-c":
- critical = float(a)
-
- if user == None or password == None or host == None or warning == None or critical == None:
- usage()
- return 1
-
- if use_ssl:
- M = imaplib.IMAP4_SSL(host=host)
- else:
- M = imaplib.IMAP4(host)
-
- timestamp = time()
-
- try:
- M.login(user, password)
- except Exception, e:
- print "CRITICAL IMAP Login Failed: %s" % e
- return 2
-
- M.logout()
-
- timestamp = time() - timestamp
-
- if timestamp < warning:
- status = "OK"
- exitcode = 0
- if timestamp >= warning:
- status = "WARNING"
- exitcode = 1
- if timestamp >= critical:
- status = "CRITICAL"
- exitcode = 2
-
- print '%s IMAP Login | response_time=%.3fs;%.3f;%.3f' % (status, timestamp, warning, critical)
-
- return exitcode
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/files/plugins/check_jabber_login b/files/plugins/check_jabber_login
deleted file mode 100644
index dac0e1fe..00000000
--- a/files/plugins/check_jabber_login
+++ /dev/null
@@ -1,30 +0,0 @@
-#!/usr/bin/env ruby
-require 'rubygems'
-require 'xmpp4r'
-
-
-def usage
- puts "#{$0} jabberid password"
- exit 3
-end
-
-usage unless ARGV.size == 2
-
-begin
- my_client = Jabber::Client.new(ARGV[0])
- my_client.connect
- my_client.auth(ARGV[1])
-rescue Jabber::ClientAuthenticationFailure => detail
- puts "CRITICAL: Login Error"
- exit 2
-rescue Errno::ECONNREFUSED => detail
- puts "CRITICAL: Connection refused"
- exit 2
-rescue SocketError => detail
- puts "CRITICAL: Socket Error"
- exit 2
-#rescue
-# puts "CRITICAL: Unknown Error"
-# exit 2
-end
-puts "OK: Login for #{ARGV[0]} successfull"
diff --git a/files/plugins/check_mysql_health b/files/plugins/check_mysql_health
deleted file mode 100755
index 9292ae09..00000000
--- a/files/plugins/check_mysql_health
+++ /dev/null
@@ -1,3780 +0,0 @@
-#! /usr/bin/perl -w
-# nagios: -epn
-
-my %ERRORS=( OK => 0, WARNING => 1, CRITICAL => 2, UNKNOWN => 3 );
-my %ERRORCODES=( 0 => 'OK', 1 => 'WARNING', 2 => 'CRITICAL', 3 => 'UNKNOWN' );
-package DBD::MySQL::Server::Instance::Innodb;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- handle => $params{handle},
- internals => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless $self, $class;
- $self->init(%params);
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::innodb/) {
- $self->{internals} =
- DBD::MySQL::Server::Instance::Innodb::Internals->new(%params);
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if ($params{mode} =~ /server::instance::innodb/) {
- $self->{internals}->nagios(%params);
- $self->merge_nagios($self->{internals});
- }
-}
-
-
-package DBD::MySQL::Server::Instance::Innodb::Internals;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance::Innodb);
-
-our $internals; # singleton, nur ein einziges mal instantiierbar
-
-sub new {
- my $class = shift;
- my %params = @_;
- unless ($internals) {
- $internals = {
- handle => $params{handle},
- bufferpool_hitrate => undef,
- wait_free => undef,
- log_waits => undef,
- have_innodb => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless($internals, $class);
- $internals->init(%params);
- }
- return($internals);
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $dummy;
- $self->debug("enter init");
- $self->init_nagios();
- ($dummy, $self->{have_innodb})
- = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'have_innodb'
- });
- if ($self->{have_innodb} eq "NO") {
- $self->add_nagios_critical("the innodb engine has a problem (have_innodb=no)");
- } elsif ($self->{have_innodb} eq "DISABLED") {
- # add_nagios_ok later
- } elsif ($params{mode} =~ /server::instance::innodb::bufferpool::hitrate/) {
- ($dummy, $self->{bufferpool_reads})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Innodb_buffer_pool_reads'
- });
- ($dummy, $self->{bufferpool_read_requests})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Innodb_buffer_pool_read_requests'
- });
- if (! defined $self->{bufferpool_reads}) {
- $self->add_nagios_critical("no innodb buffer pool info available");
- } else {
- $self->valdiff(\%params, qw(bufferpool_reads
- bufferpool_read_requests));
- $self->{bufferpool_hitrate_now} =
- $self->{delta_bufferpool_read_requests} > 0 ?
- 100 - (100 * $self->{delta_bufferpool_reads} /
- $self->{delta_bufferpool_read_requests}) : 100;
- $self->{bufferpool_hitrate} =
- $self->{bufferpool_read_requests} > 0 ?
- 100 - (100 * $self->{bufferpool_reads} /
- $self->{bufferpool_read_requests}) : 100;
- }
- } elsif ($params{mode} =~ /server::instance::innodb::bufferpool::waitfree/) {
- ($dummy, $self->{bufferpool_wait_free})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Innodb_buffer_pool_wait_free'
- });
- if (! defined $self->{bufferpool_wait_free}) {
- $self->add_nagios_critical("no innodb buffer pool info available");
- } else {
- $self->valdiff(\%params, qw(bufferpool_wait_free));
- $self->{bufferpool_wait_free_rate} =
- $self->{delta_bufferpool_wait_free} / $self->{delta_timestamp};
- }
- } elsif ($params{mode} =~ /server::instance::innodb::logwaits/) {
- ($dummy, $self->{log_waits})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Innodb_log_waits'
- });
- if (! defined $self->{log_waits}) {
- $self->add_nagios_critical("no innodb log info available");
- } else {
- $self->valdiff(\%params, qw(log_waits));
- $self->{log_waits_rate} =
- $self->{delta_log_waits} / $self->{delta_timestamp};
- }
- } elsif ($params{mode} =~ /server::instance::innodb::needoptimize/) {
-#fragmentation=$(($datafree * 100 / $datalength))
-
-#http://www.electrictoolbox.com/optimize-tables-mysql-php/
- my @result = $self->{handle}->fetchall_array(q{
-SHOW TABLE STATUS WHERE Data_free / Data_length > 0.1 AND Data_free > 102400
-});
-printf "%s\n", Data::Dumper::Dumper(\@result);
-
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- my $now = $params{lookback} ? '_now' : '';
- if ($self->{have_innodb} eq "DISABLED") {
- $self->add_nagios_ok("the innodb engine has been disabled");
- } elsif (! $self->{nagios_level}) {
- if ($params{mode} =~ /server::instance::innodb::bufferpool::hitrate/) {
- my $refkey = 'bufferpool_hitrate'.($params{lookback} ? '_now' : '');
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "99:", "95:"),
- sprintf "innodb buffer pool hitrate at %.2f%%", $self->{$refkey});
- $self->add_perfdata(sprintf "bufferpool_hitrate=%.2f%%;%s;%s;0;100",
- $self->{bufferpool_hitrate},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "bufferpool_hitrate_now=%.2f%%",
- $self->{bufferpool_hitrate_now});
- } elsif ($params{mode} =~ /server::instance::innodb::bufferpool::waitfree/) {
- $self->add_nagios(
- $self->check_thresholds($self->{bufferpool_wait_free_rate}, "1", "10"),
- sprintf "%ld innodb buffer pool waits in %ld seconds (%.4f/sec)",
- $self->{delta_bufferpool_wait_free}, $self->{delta_timestamp},
- $self->{bufferpool_wait_free_rate});
- $self->add_perfdata(sprintf "bufferpool_free_waits_rate=%.4f;%s;%s;0;100",
- $self->{bufferpool_wait_free_rate},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::innodb::logwaits/) {
- $self->add_nagios(
- $self->check_thresholds($self->{log_waits_rate}, "1", "10"),
- sprintf "%ld innodb log waits in %ld seconds (%.4f/sec)",
- $self->{delta_log_waits}, $self->{delta_timestamp},
- $self->{log_waits_rate});
- $self->add_perfdata(sprintf "innodb_log_waits_rate=%.4f;%s;%s;0;100",
- $self->{log_waits_rate},
- $self->{warningrange}, $self->{criticalrange});
- }
- }
-}
-
-
-
-
-package DBD::MySQL::Server::Instance::MyISAM;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- handle => $params{handle},
- internals => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless $self, $class;
- $self->init(%params);
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::myisam/) {
- $self->{internals} =
- DBD::MySQL::Server::Instance::MyISAM::Internals->new(%params);
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if ($params{mode} =~ /server::instance::myisam/) {
- $self->{internals}->nagios(%params);
- $self->merge_nagios($self->{internals});
- }
-}
-
-
-package DBD::MySQL::Server::Instance::MyISAM::Internals;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance::MyISAM);
-
-our $internals; # singleton, nur ein einziges mal instantiierbar
-
-sub new {
- my $class = shift;
- my %params = @_;
- unless ($internals) {
- $internals = {
- handle => $params{handle},
- keycache_hitrate => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless($internals, $class);
- $internals->init(%params);
- }
- return($internals);
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $dummy;
- $self->debug("enter init");
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::myisam::keycache::hitrate/) {
- ($dummy, $self->{key_reads})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Key_reads'
- });
- ($dummy, $self->{key_read_requests})
- = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Key_read_requests'
- });
- if (! defined $self->{key_read_requests}) {
- $self->add_nagios_critical("no myisam keycache info available");
- } else {
- $self->valdiff(\%params, qw(key_reads key_read_requests));
- $self->{keycache_hitrate} =
- $self->{key_read_requests} > 0 ?
- 100 - (100 * $self->{key_reads} /
- $self->{key_read_requests}) : 100;
- $self->{keycache_hitrate_now} =
- $self->{delta_key_read_requests} > 0 ?
- 100 - (100 * $self->{delta_key_reads} /
- $self->{delta_key_read_requests}) : 100;
- }
- } elsif ($params{mode} =~ /server::instance::myisam::sonstnochwas/) {
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if (! $self->{nagios_level}) {
- if ($params{mode} =~ /server::instance::myisam::keycache::hitrate/) {
- my $refkey = 'keycache_hitrate'.($params{lookback} ? '_now' : '');
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "99:", "95:"),
- sprintf "myisam keycache hitrate at %.2f%%", $self->{$refkey});
- $self->add_perfdata(sprintf "keycache_hitrate=%.2f%%;%s;%s",
- $self->{keycache_hitrate},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "keycache_hitrate_now=%.2f%%;%s;%s",
- $self->{keycache_hitrate_now},
- $self->{warningrange}, $self->{criticalrange});
- }
- }
-}
-
-
-package DBD::MySQL::Server::Instance::Replication;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- handle => $params{handle},
- internals => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless $self, $class;
- $self->init(%params);
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::replication/) {
- $self->{internals} =
- DBD::MySQL::Server::Instance::Replication::Internals->new(%params);
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if ($params{mode} =~ /server::instance::replication/) {
- $self->{internals}->nagios(%params);
- $self->merge_nagios($self->{internals});
- }
-}
-
-
-package DBD::MySQL::Server::Instance::Replication::Internals;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server::Instance::Replication);
-
-our $internals; # singleton, nur ein einziges mal instantiierbar
-
-sub new {
- my $class = shift;
- my %params = @_;
- unless ($internals) {
- $internals = {
- handle => $params{handle},
- seconds_behind_master => undef,
- slave_io_running => undef,
- slave_sql_running => undef,
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless($internals, $class);
- $internals->init(%params);
- }
- return($internals);
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- $self->debug("enter init");
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::replication::slavelag/) {
- # "show slave status", "Seconds_Behind_Master"
- my $slavehash = $self->{handle}->selectrow_hashref(q{
- SHOW SLAVE STATUS
- });
- if ((! defined $slavehash->{Seconds_Behind_Master}) &&
- (lc $slavehash->{Slave_IO_Running} eq 'no')) {
- $self->add_nagios_critical(
- "unable to get slave lag, because io thread is not running");
- } elsif (! defined $slavehash->{Seconds_Behind_Master}) {
- $self->add_nagios_critical(sprintf "unable to get replication info%s",
- $self->{handle}->{errstr} ? $self->{handle}->{errstr} : "");
- } else {
- $self->{seconds_behind_master} = $slavehash->{Seconds_Behind_Master};
- }
- } elsif ($params{mode} =~ /server::instance::replication::slaveiorunning/) {
- # "show slave status", "Slave_IO_Running"
- my $slavehash = $self->{handle}->selectrow_hashref(q{
- SHOW SLAVE STATUS
- });
- if (! defined $slavehash->{Slave_IO_Running}) {
- $self->add_nagios_critical(sprintf "unable to get replication info%s",
- $self->{handle}->{errstr} ? $self->{handle}->{errstr} : "");
- } else {
- $self->{slave_io_running} = $slavehash->{Slave_IO_Running};
- }
- } elsif ($params{mode} =~ /server::instance::replication::slavesqlrunning/) {
- # "show slave status", "Slave_SQL_Running"
- my $slavehash = $self->{handle}->selectrow_hashref(q{
- SHOW SLAVE STATUS
- });
- if (! defined $slavehash->{Slave_SQL_Running}) {
- $self->add_nagios_critical(sprintf "unable to get replication info%s",
- $self->{handle}->{errstr} ? $self->{handle}->{errstr} : "");
- } else {
- $self->{slave_sql_running} = $slavehash->{Slave_SQL_Running};
- }
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if (! $self->{nagios_level}) {
- if ($params{mode} =~ /server::instance::replication::slavelag/) {
- $self->add_nagios(
- $self->check_thresholds($self->{seconds_behind_master}, "10", "20"),
- sprintf "Slave is %d seconds behind master",
- $self->{seconds_behind_master});
- $self->add_perfdata(sprintf "slave_lag=%d;%s;%s",
- $self->{seconds_behind_master},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::replication::slaveiorunning/) {
- if (lc $self->{slave_io_running} eq "yes") {
- $self->add_nagios_ok("Slave io is running");
- } else {
- $self->add_nagios_critical("Slave io is not running");
- }
- } elsif ($params{mode} =~ /server::instance::replication::slavesqlrunning/) {
- if (lc $self->{slave_sql_running} eq "yes") {
- $self->add_nagios_ok("Slave sql is running");
- } else {
- $self->add_nagios_critical("Slave sql is not running");
- }
- }
- }
-}
-
-
-
-package DBD::MySQL::Server::Instance;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- handle => $params{handle},
- uptime => $params{uptime},
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- threads_connected => undef,
- threads_created => undef,
- connections => undef,
- threadcache_hitrate => undef,
- querycache_hitrate => undef,
- lowmem_prunes_per_sec => undef,
- slow_queries_per_sec => undef,
- longrunners => undef,
- tablecache_hitrate => undef,
- index_usage => undef,
- engine_innodb => undef,
- engine_myisam => undef,
- replication => undef,
- };
- bless $self, $class;
- $self->init(%params);
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $dummy;
- $self->init_nagios();
- if ($params{mode} =~ /server::instance::connectedthreads/) {
- ($dummy, $self->{threads_connected}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Threads_connected'
- });
- } elsif ($params{mode} =~ /server::instance::createdthreads/) {
- ($dummy, $self->{threads_created}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Threads_created'
- });
- $self->valdiff(\%params, qw(threads_created));
- $self->{threads_created_per_sec} = $self->{delta_threads_created} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::runningthreads/) {
- ($dummy, $self->{threads_running}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Threads_running'
- });
- } elsif ($params{mode} =~ /server::instance::cachedthreads/) {
- ($dummy, $self->{threads_cached}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Threads_cached'
- });
- } elsif ($params{mode} =~ /server::instance::abortedconnects/) {
- ($dummy, $self->{connects_aborted}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Aborted_connects'
- });
- $self->valdiff(\%params, qw(connects_aborted));
- $self->{connects_aborted_per_sec} = $self->{delta_connects_aborted} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::abortedclients/) {
- ($dummy, $self->{clients_aborted}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Aborted_clients'
- });
- $self->valdiff(\%params, qw(clients_aborted));
- $self->{clients_aborted_per_sec} = $self->{delta_clients_aborted} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::threadcachehitrate/) {
- ($dummy, $self->{threads_created}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Threads_created'
- });
- ($dummy, $self->{connections}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Connections'
- });
- $self->valdiff(\%params, qw(threads_created connections));
- if ($self->{delta_connections} > 0) {
- $self->{threadcache_hitrate_now} =
- 100 - ($self->{delta_threads_created} * 100.0 /
- $self->{delta_connections});
- } else {
- $self->{threadcache_hitrate_now} = 100;
- }
- $self->{threadcache_hitrate} = 100 -
- ($self->{threads_created} * 100.0 / $self->{connections});
- $self->{connections_per_sec} = $self->{delta_connections} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::querycachehitrate/) {
- ($dummy, $self->{com_select}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Com_select'
- });
- ($dummy, $self->{qcache_hits}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Qcache_hits'
- });
- # SHOW VARIABLES WHERE Variable_name = 'have_query_cache' for 5.x, but LIKE is compatible
- ($dummy, $self->{have_query_cache}) = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'have_query_cache'
- });
- # SHOW VARIABLES WHERE Variable_name = 'query_cache_size'
- ($dummy, $self->{query_cache_size}) = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'query_cache_size'
- });
- $self->valdiff(\%params, qw(com_select qcache_hits));
- $self->{querycache_hitrate_now} =
- ($self->{delta_com_select} + $self->{delta_qcache_hits}) > 0 ?
- 100 * $self->{delta_qcache_hits} /
- ($self->{delta_com_select} + $self->{delta_qcache_hits}) :
- 0;
- $self->{querycache_hitrate} =
- 100 * $self->{qcache_hits} / ($self->{com_select} + $self->{qcache_hits});
- $self->{selects_per_sec} =
- $self->{delta_com_select} / $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::querycachelowmemprunes/) {
- ($dummy, $self->{lowmem_prunes}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Qcache_lowmem_prunes'
- });
- $self->valdiff(\%params, qw(lowmem_prunes));
- $self->{lowmem_prunes_per_sec} = $self->{delta_lowmem_prunes} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::slowqueries/) {
- ($dummy, $self->{slow_queries}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Slow_queries'
- });
- $self->valdiff(\%params, qw(slow_queries));
- $self->{slow_queries_per_sec} = $self->{delta_slow_queries} /
- $self->{delta_timestamp};
- } elsif ($params{mode} =~ /server::instance::longprocs/) {
- if (DBD::MySQL::Server::return_first_server()->version_is_minimum("5.1")) {
- ($self->{longrunners}) = $self->{handle}->fetchrow_array(q{
- SELECT
- COUNT(*)
- FROM
- information_schema.processlist
- WHERE user <> 'replication'
- AND id <> CONNECTION_ID()
- AND time > 60
- AND command <> 'Sleep'
- });
- } else {
- $self->{longrunners} = 0 if ! defined $self->{longrunners};
- foreach ($self->{handle}->fetchall_array(q{
- SHOW PROCESSLIST
- })) {
- my($id, $user, $host, $db, $command, $tme, $state, $info) = @{$_};
- if (($user ne 'replication') &&
- ($tme > 60) &&
- ($command ne 'Sleep')) {
- $self->{longrunners}++;
- }
- }
- }
- } elsif ($params{mode} =~ /server::instance::tablecachehitrate/) {
- ($dummy, $self->{open_tables}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Open_tables'
- });
- ($dummy, $self->{opened_tables}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Opened_tables'
- });
- if (DBD::MySQL::Server::return_first_server()->version_is_minimum("5.1.3")) {
- # SHOW VARIABLES WHERE Variable_name = 'table_open_cache'
- ($dummy, $self->{table_cache}) = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'table_open_cache'
- });
- } else {
- # SHOW VARIABLES WHERE Variable_name = 'table_cache'
- ($dummy, $self->{table_cache}) = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'table_cache'
- });
- }
- $self->{table_cache} ||= 0;
- #$self->valdiff(\%params, qw(open_tables opened_tables table_cache));
- # _now ist hier sinnlos, da opened_tables waechst, aber open_tables wieder
- # schrumpfen kann weil tabellen geschlossen werden.
- if ($self->{opened_tables} != 0 && $self->{table_cache} != 0) {
- $self->{tablecache_hitrate} =
- 100 * $self->{open_tables} / $self->{opened_tables};
- $self->{tablecache_fillrate} =
- 100 * $self->{open_tables} / $self->{table_cache};
- } elsif ($self->{opened_tables} == 0 && $self->{table_cache} != 0) {
- $self->{tablecache_hitrate} = 100;
- $self->{tablecache_fillrate} =
- 100 * $self->{open_tables} / $self->{table_cache};
- } else {
- $self->{tablecache_hitrate} = 0;
- $self->{tablecache_fillrate} = 0;
- $self->add_nagios_critical("no table cache");
- }
- } elsif ($params{mode} =~ /server::instance::tablelockcontention/) {
- ($dummy, $self->{table_locks_waited}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Table_locks_waited'
- });
- ($dummy, $self->{table_locks_immediate}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Table_locks_immediate'
- });
- $self->valdiff(\%params, qw(table_locks_waited table_locks_immediate));
- $self->{table_lock_contention} =
- ($self->{table_locks_waited} + $self->{table_locks_immediate}) > 0 ?
- 100 * $self->{table_locks_waited} /
- ($self->{table_locks_waited} + $self->{table_locks_immediate}) :
- 100;
- $self->{table_lock_contention_now} =
- ($self->{delta_table_locks_waited} + $self->{delta_table_locks_immediate}) > 0 ?
- 100 * $self->{delta_table_locks_waited} /
- ($self->{delta_table_locks_waited} + $self->{delta_table_locks_immediate}) :
- 100;
- } elsif ($params{mode} =~ /server::instance::tableindexusage/) {
- # http://johnjacobm.wordpress.com/2007/06/
- # formula for calculating the percentage of full table scans
- ($dummy, $self->{handler_read_first}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_first'
- });
- ($dummy, $self->{handler_read_key}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_key'
- });
- ($dummy, $self->{handler_read_next}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_next'
- });
- ($dummy, $self->{handler_read_prev}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_prev'
- });
- ($dummy, $self->{handler_read_rnd}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_rnd'
- });
- ($dummy, $self->{handler_read_rnd_next}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Handler_read_rnd_next'
- });
- $self->valdiff(\%params, qw(handler_read_first handler_read_key
- handler_read_next handler_read_prev handler_read_rnd
- handler_read_rnd_next));
- my $delta_reads = $self->{delta_handler_read_first} +
- $self->{delta_handler_read_key} +
- $self->{delta_handler_read_next} +
- $self->{delta_handler_read_prev} +
- $self->{delta_handler_read_rnd} +
- $self->{delta_handler_read_rnd_next};
- my $reads = $self->{handler_read_first} +
- $self->{handler_read_key} +
- $self->{handler_read_next} +
- $self->{handler_read_prev} +
- $self->{handler_read_rnd} +
- $self->{handler_read_rnd_next};
- $self->{index_usage_now} = ($delta_reads == 0) ? 0 :
- 100 - (100.0 * ($self->{delta_handler_read_rnd} +
- $self->{delta_handler_read_rnd_next}) /
- $delta_reads);
- $self->{index_usage} = ($reads == 0) ? 0 :
- 100 - (100.0 * ($self->{handler_read_rnd} +
- $self->{handler_read_rnd_next}) /
- $reads);
- } elsif ($params{mode} =~ /server::instance::tabletmpondisk/) {
- ($dummy, $self->{created_tmp_tables}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Created_tmp_tables'
- });
- ($dummy, $self->{created_tmp_disk_tables}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Created_tmp_disk_tables'
- });
- $self->valdiff(\%params, qw(created_tmp_tables created_tmp_disk_tables));
- $self->{pct_tmp_on_disk} = $self->{created_tmp_tables} > 0 ?
- 100 * $self->{created_tmp_disk_tables} / $self->{created_tmp_tables} :
- 100;
- $self->{pct_tmp_on_disk_now} = $self->{delta_created_tmp_tables} > 0 ?
- 100 * $self->{delta_created_tmp_disk_tables} / $self->{delta_created_tmp_tables} :
- 100;
- } elsif ($params{mode} =~ /server::instance::openfiles/) {
- ($dummy, $self->{open_files_limit}) = $self->{handle}->fetchrow_array(q{
- SHOW VARIABLES LIKE 'open_files_limit'
- });
- ($dummy, $self->{open_files}) = $self->{handle}->fetchrow_array(q{
- SHOW /*!50000 global */ STATUS LIKE 'Open_files'
- });
- $self->{pct_open_files} = 100 * $self->{open_files} / $self->{open_files_limit};
- } elsif ($params{mode} =~ /server::instance::needoptimize/) {
- $self->{fragmented} = [];
- #http://www.electrictoolbox.com/optimize-tables-mysql-php/
- my @result = $self->{handle}->fetchall_array(q{
- SHOW TABLE STATUS
- });
- foreach (@result) {
- my ($name, $engine, $data_length, $data_free) =
- ($_->[0], $_->[1], $_->[6 ], $_->[9]);
- next if ($params{name} && $params{name} ne $name);
- my $fragmentation = $data_length ? $data_free * 100 / $data_length : 0;
- push(@{$self->{fragmented}},
- [$name, $fragmentation, $data_length, $data_free]);
- }
- } elsif ($params{mode} =~ /server::instance::myisam/) {
- $self->{engine_myisam} = DBD::MySQL::Server::Instance::MyISAM->new(
- %params
- );
- } elsif ($params{mode} =~ /server::instance::innodb/) {
- $self->{engine_innodb} = DBD::MySQL::Server::Instance::Innodb->new(
- %params
- );
- } elsif ($params{mode} =~ /server::instance::replication/) {
- $self->{replication} = DBD::MySQL::Server::Instance::Replication->new(
- %params
- );
- }
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if (! $self->{nagios_level}) {
- if ($params{mode} =~ /server::instance::connectedthreads/) {
- $self->add_nagios(
- $self->check_thresholds($self->{threads_connected}, 10, 20),
- sprintf "%d client connection threads", $self->{threads_connected});
- $self->add_perfdata(sprintf "threads_connected=%d;%d;%d",
- $self->{threads_connected},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::createdthreads/) {
- $self->add_nagios(
- $self->check_thresholds($self->{threads_created_per_sec}, 10, 20),
- sprintf "%.2f threads created/sec", $self->{threads_created_per_sec});
- $self->add_perfdata(sprintf "threads_created_per_sec=%.2f;%.2f;%.2f",
- $self->{threads_created_per_sec},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::runningthreads/) {
- $self->add_nagios(
- $self->check_thresholds($self->{threads_running}, 10, 20),
- sprintf "%d running threads", $self->{threads_running});
- $self->add_perfdata(sprintf "threads_running=%d;%d;%d",
- $self->{threads_running},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::cachedthreads/) {
- $self->add_nagios(
- $self->check_thresholds($self->{threads_cached}, 10, 20),
- sprintf "%d cached threads", $self->{threads_cached});
- $self->add_perfdata(sprintf "threads_cached=%d;%d;%d",
- $self->{threads_cached},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::abortedconnects/) {
- $self->add_nagios(
- $self->check_thresholds($self->{connects_aborted_per_sec}, 1, 5),
- sprintf "%.2f aborted connections/sec", $self->{connects_aborted_per_sec});
- $self->add_perfdata(sprintf "connects_aborted_per_sec=%.2f;%.2f;%.2f",
- $self->{connects_aborted_per_sec},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::abortedclients/) {
- $self->add_nagios(
- $self->check_thresholds($self->{clients_aborted_per_sec}, 1, 5),
- sprintf "%.2f aborted (client died) connections/sec", $self->{clients_aborted_per_sec});
- $self->add_perfdata(sprintf "clients_aborted_per_sec=%.2f;%.2f;%.2f",
- $self->{clients_aborted_per_sec},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::threadcachehitrate/) {
- my $refkey = 'threadcache_hitrate'.($params{lookback} ? '_now' : '');
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "90:", "80:"),
- sprintf "thread cache hitrate %.2f%%", $self->{$refkey});
- $self->add_perfdata(sprintf "thread_cache_hitrate=%.2f%%;%s;%s",
- $self->{threadcache_hitrate},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "thread_cache_hitrate_now=%.2f%%",
- $self->{threadcache_hitrate_now});
- $self->add_perfdata(sprintf "connections_per_sec=%.2f",
- $self->{connections_per_sec});
- } elsif ($params{mode} =~ /server::instance::querycachehitrate/) {
- my $refkey = 'querycache_hitrate'.($params{lookback} ? '_now' : '');
- if ((lc $self->{have_query_cache} eq 'yes') && ($self->{query_cache_size})) {
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "90:", "80:"),
- sprintf "query cache hitrate %.2f%%", $self->{$refkey});
- } else {
- $self->check_thresholds($self->{$refkey}, "90:", "80:");
- $self->add_nagios_ok(
- sprintf "query cache hitrate %.2f%% (because it's turned off)",
- $self->{querycache_hitrate});
- }
- $self->add_perfdata(sprintf "qcache_hitrate=%.2f%%;%s;%s",
- $self->{querycache_hitrate},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "qcache_hitrate_now=%.2f%%",
- $self->{querycache_hitrate_now});
- $self->add_perfdata(sprintf "selects_per_sec=%.2f",
- $self->{selects_per_sec});
- } elsif ($params{mode} =~ /server::instance::querycachelowmemprunes/) {
- $self->add_nagios(
- $self->check_thresholds($self->{lowmem_prunes_per_sec}, "1", "10"),
- sprintf "%d query cache lowmem prunes in %d seconds (%.2f/sec)",
- $self->{delta_lowmem_prunes}, $self->{delta_timestamp},
- $self->{lowmem_prunes_per_sec});
- $self->add_perfdata(sprintf "qcache_lowmem_prunes_rate=%.2f;%s;%s",
- $self->{lowmem_prunes_per_sec},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::slowqueries/) {
- $self->add_nagios(
- $self->check_thresholds($self->{slow_queries_per_sec}, "0.1", "1"),
- sprintf "%d slow queries in %d seconds (%.2f/sec)",
- $self->{delta_slow_queries}, $self->{delta_timestamp},
- $self->{slow_queries_per_sec});
- $self->add_perfdata(sprintf "slow_queries_rate=%.2f%%;%s;%s",
- $self->{slow_queries_per_sec},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::longprocs/) {
- $self->add_nagios(
- $self->check_thresholds($self->{longrunners}, 10, 20),
- sprintf "%d long running processes", $self->{longrunners});
- $self->add_perfdata(sprintf "long_running_procs=%d;%d;%d",
- $self->{longrunners},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /server::instance::tablecachehitrate/) {
- if ($self->{tablecache_fillrate} < 95) {
- $self->add_nagios_ok(
- sprintf "table cache hitrate %.2f%%, %.2f%% filled",
- $self->{tablecache_hitrate},
- $self->{tablecache_fillrate});
- $self->check_thresholds($self->{tablecache_hitrate}, "99:", "95:");
- } else {
- $self->add_nagios(
- $self->check_thresholds($self->{tablecache_hitrate}, "99:", "95:"),
- sprintf "table cache hitrate %.2f%%", $self->{tablecache_hitrate});
- }
- $self->add_perfdata(sprintf "tablecache_hitrate=%.2f%%;%s;%s",
- $self->{tablecache_hitrate},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "tablecache_fillrate=%.2f%%",
- $self->{tablecache_fillrate});
- } elsif ($params{mode} =~ /server::instance::tablelockcontention/) {
- my $refkey = 'table_lock_contention'.($params{lookback} ? '_now' : '');
- if ($self->{uptime} > 10800) { # MySQL Bug #30599
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "1", "2"),
- sprintf "table lock contention %.2f%%", $self->{$refkey});
- } else {
- $self->check_thresholds($self->{$refkey}, "1", "2");
- $self->add_nagios_ok(
- sprintf "table lock contention %.2f%% (uptime < 10800)",
- $self->{$refkey});
- }
- $self->add_perfdata(sprintf "tablelock_contention=%.2f%%;%s;%s",
- $self->{table_lock_contention},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "tablelock_contention_now=%.2f%%",
- $self->{table_lock_contention_now});
- } elsif ($params{mode} =~ /server::instance::tableindexusage/) {
- my $refkey = 'index_usage'.($params{lookback} ? '_now' : '');
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "90:", "80:"),
- sprintf "index usage %.2f%%", $self->{$refkey});
- $self->add_perfdata(sprintf "index_usage=%.2f%%;%s;%s",
- $self->{index_usage},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "index_usage_now=%.2f%%",
- $self->{index_usage_now});
- } elsif ($params{mode} =~ /server::instance::tabletmpondisk/) {
- my $refkey = 'pct_tmp_on_disk'.($params{lookback} ? '_now' : '');
- $self->add_nagios(
- $self->check_thresholds($self->{$refkey}, "25", "50"),
- sprintf "%.2f%% of %d tables were created on disk",
- $self->{$refkey}, $self->{delta_created_tmp_tables});
- $self->add_perfdata(sprintf "pct_tmp_table_on_disk=%.2f%%;%s;%s",
- $self->{pct_tmp_on_disk},
- $self->{warningrange}, $self->{criticalrange});
- $self->add_perfdata(sprintf "pct_tmp_table_on_disk_now=%.2f%%",
- $self->{pct_tmp_on_disk_now});
- } elsif ($params{mode} =~ /server::instance::openfiles/) {
- $self->add_nagios(
- $self->check_thresholds($self->{pct_open_files}, 80, 95),
- sprintf "%.2f%% of the open files limit reached (%d of max. %d)",
- $self->{pct_open_files},
- $self->{open_files}, $self->{open_files_limit});
- $self->add_perfdata(sprintf "pct_open_files=%.3f%%;%.3f;%.3f",
- $self->{pct_open_files},
- $self->{warningrange},
- $self->{criticalrange});
- $self->add_perfdata(sprintf "open_files=%d;%d;%d",
- $self->{open_files},
- $self->{open_files_limit} * $self->{warningrange} / 100,
- $self->{open_files_limit} * $self->{criticalrange} / 100);
- } elsif ($params{mode} =~ /server::instance::needoptimize/) {
- foreach (@{$self->{fragmented}}) {
- $self->add_nagios(
- $self->check_thresholds($_->[1], 10, 25),
- sprintf "table %s is %.2f%% fragmented", $_->[0], $_->[1]);
- if ($params{name}) {
- $self->add_perfdata(sprintf "'%s_frag'=%.2f%%;%d;%d",
- $_->[0], $_->[1], $self->{warningrange}, $self->{criticalrange});
- }
- }
- } elsif ($params{mode} =~ /server::instance::myisam/) {
- $self->{engine_myisam}->nagios(%params);
- $self->merge_nagios($self->{engine_myisam});
- } elsif ($params{mode} =~ /server::instance::innodb/) {
- $self->{engine_innodb}->nagios(%params);
- $self->merge_nagios($self->{engine_innodb});
- } elsif ($params{mode} =~ /server::instance::replication/) {
- $self->{replication}->nagios(%params);
- $self->merge_nagios($self->{replication});
- }
- }
-}
-
-
-
-package DBD::MySQL::Server;
-
-use strict;
-use Time::HiRes;
-use IO::File;
-use File::Copy 'cp';
-use Data::Dumper;
-
-
-{
- our $verbose = 0;
- our $scream = 0; # scream if something is not implemented
- our $access = "dbi"; # how do we access the database.
- our $my_modules_dyn_dir = ""; # where we look for self-written extensions
-
- my @servers = ();
- my $initerrors = undef;
-
- sub add_server {
- push(@servers, shift);
- }
-
- sub return_servers {
- return @servers;
- }
-
- sub return_first_server() {
- return $servers[0];
- }
-
-}
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- access => $params{method} || 'dbi',
- hostname => $params{hostname},
- database => $params{database} || 'information_schema',
- port => $params{port},
- socket => $params{socket},
- username => $params{username},
- password => $params{password},
- timeout => $params{timeout},
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- verbose => $params{verbose},
- report => $params{report},
- labelformat => $params{labelformat},
- version => 'unknown',
- instance => undef,
- handle => undef,
- };
- bless $self, $class;
- $self->init_nagios();
- if ($self->dbconnect(%params)) {
- ($self->{dummy}, $self->{version}) = $self->{handle}->fetchrow_array(
- #q{ SHOW VARIABLES WHERE Variable_name = 'version' }
- q{ SHOW VARIABLES LIKE 'version' }
- );
- $self->{version} = (split "-", $self->{version})[0];
- ($self->{dummy}, $self->{uptime}) = $self->{handle}->fetchrow_array(
- q{ SHOW STATUS LIKE 'Uptime' }
- );
- DBD::MySQL::Server::add_server($self);
- $self->init(%params);
- }
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- $params{handle} = $self->{handle};
- $params{uptime} = $self->{uptime};
- $self->set_global_db_thresholds(\%params);
- if ($params{mode} =~ /^server::instance/) {
- $self->{instance} = DBD::MySQL::Server::Instance->new(%params);
- } elsif ($params{mode} =~ /^server::sql/) {
- $self->set_local_db_thresholds(%params);
- if ($params{regexp}) {
- # sql output is treated as text
- if ($params{name2} eq $params{name}) {
- $self->add_nagios_unknown(sprintf "where's the regexp????");
- } else {
- $self->{genericsql} =
- $self->{handle}->fetchrow_array($params{selectname});
- if (! defined $self->{genericsql}) {
- $self->add_nagios_unknown(sprintf "got no valid response for %s",
- $params{selectname});
- }
- }
- } else {
- # sql output must be a number (or array of numbers)
- @{$self->{genericsql}} =
- $self->{handle}->fetchrow_array($params{selectname});
- if (! (defined $self->{genericsql} &&
- (scalar(grep { /^[+-]?(?:\d+(?:\.\d*)?|\.\d+)$/ } @{$self->{genericsql}})) ==
- scalar(@{$self->{genericsql}}))) {
- $self->add_nagios_unknown(sprintf "got no valid response for %s",
- $params{selectname});
- } else {
- # name2 in array
- # units in array
- }
- }
- } elsif ($params{mode} =~ /^server::uptime/) {
- # already set with the connection. but use minutes here
- } elsif ($params{mode} =~ /^server::connectiontime/) {
- $self->{connection_time} = $self->{tac} - $self->{tic};
- } elsif ($params{mode} =~ /^my::([^:.]+)/) {
- my $class = $1;
- my $loaderror = undef;
- substr($class, 0, 1) = uc substr($class, 0, 1);
- foreach my $libpath (split(":", $DBD::MySQL::Server::my_modules_dyn_dir)) {
- foreach my $extmod (glob $libpath."/CheckMySQLHealth*.pm") {
- eval {
- $self->trace(sprintf "loading module %s", $extmod);
- require $extmod;
- };
- if ($@) {
- $loaderror = $extmod;
- $self->trace(sprintf "failed loading module %s: %s", $extmod, $@);
- }
- }
- }
- my $obj = {
- handle => $params{handle},
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- };
- bless $obj, "My$class";
- $self->{my} = $obj;
- if ($self->{my}->isa("DBD::MySQL::Server")) {
- my $dos_init = $self->can("init");
- my $dos_nagios = $self->can("nagios");
- my $my_init = $self->{my}->can("init");
- my $my_nagios = $self->{my}->can("nagios");
- if ($my_init == $dos_init) {
- $self->add_nagios_unknown(
- sprintf "Class %s needs an init() method", ref($self->{my}));
- } elsif ($my_nagios == $dos_nagios) {
- $self->add_nagios_unknown(
- sprintf "Class %s needs a nagios() method", ref($self->{my}));
- } else {
- $self->{my}->init_nagios(%params);
- $self->{my}->init(%params);
- }
- } else {
- $self->add_nagios_unknown(
- sprintf "Class %s is not a subclass of DBD::MySQL::Server%s",
- ref($self->{my}),
- $loaderror ? sprintf " (syntax error in %s?)", $loaderror : "" );
- }
- } else {
- printf "broken mode %s\n", $params{mode};
- }
-}
-
-sub dump {
- my $self = shift;
- my $message = shift || "";
- printf "%s %s\n", $message, Data::Dumper::Dumper($self);
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- if (! $self->{nagios_level}) {
- if ($params{mode} =~ /^server::instance/) {
- $self->{instance}->nagios(%params);
- $self->merge_nagios($self->{instance});
- } elsif ($params{mode} =~ /^server::database/) {
- $self->{database}->nagios(%params);
- $self->merge_nagios($self->{database});
- } elsif ($params{mode} =~ /^server::uptime/) {
- $self->add_nagios(
- $self->check_thresholds($self->{uptime} / 60, "10:", "5:"),
- sprintf "database is up since %d minutes", $self->{uptime} / 60);
- $self->add_perfdata(sprintf "uptime=%ds",
- $self->{uptime});
- } elsif ($params{mode} =~ /^server::connectiontime/) {
- $self->add_nagios(
- $self->check_thresholds($self->{connection_time}, 1, 5),
- sprintf "%.2f seconds to connect as %s",
- $self->{connection_time}, ($self->{username} || getpwuid($<)));
- $self->add_perfdata(sprintf "connection_time=%.4fs;%d;%d",
- $self->{connection_time},
- $self->{warningrange}, $self->{criticalrange});
- } elsif ($params{mode} =~ /^server::sql/) {
- if ($params{regexp}) {
- if (substr($params{name2}, 0, 1) eq '!') {
- $params{name2} =~ s/^!//;
- if ($self->{genericsql} !~ /$params{name2}/) {
- $self->add_nagios_ok(
- sprintf "output %s does not match pattern %s",
- $self->{genericsql}, $params{name2});
- } else {
- $self->add_nagios_critical(
- sprintf "output %s matches pattern %s",
- $self->{genericsql}, $params{name2});
- }
- } else {
- if ($self->{genericsql} =~ /$params{name2}/) {
- $self->add_nagios_ok(
- sprintf "output %s matches pattern %s",
- $self->{genericsql}, $params{name2});
- } else {
- $self->add_nagios_critical(
- sprintf "output %s does not match pattern %s",
- $self->{genericsql}, $params{name2});
- }
- }
- } else {
- $self->add_nagios(
- # the first item in the list will trigger the threshold values
- $self->check_thresholds($self->{genericsql}[0], 1, 5),
- sprintf "%s: %s%s",
- $params{name2} ? lc $params{name2} : lc $params{selectname},
- # float as float, integers as integers
- join(" ", map {
- (sprintf("%d", $_) eq $_) ? $_ : sprintf("%f", $_)
- } @{$self->{genericsql}}),
- $params{units} ? $params{units} : "");
- my $i = 0;
- # workaround... getting the column names from the database would be nicer
- my @names2_arr = split(/\s+/, $params{name2});
- foreach my $t (@{$self->{genericsql}}) {
- $self->add_perfdata(sprintf "\'%s\'=%s%s;%s;%s",
- $names2_arr[$i] ? lc $names2_arr[$i] : lc $params{selectname},
- # float as float, integers as integers
- (sprintf("%d", $t) eq $t) ? $t : sprintf("%f", $t),
- $params{units} ? $params{units} : "",
- ($i == 0) ? $self->{warningrange} : "",
- ($i == 0) ? $self->{criticalrange} : ""
- );
- $i++;
- }
- }
- } elsif ($params{mode} =~ /^my::([^:.]+)/) {
- $self->{my}->nagios(%params);
- $self->merge_nagios($self->{my});
- }
- }
-}
-
-
-sub init_nagios {
- my $self = shift;
- no strict 'refs';
- if (! ref($self)) {
- my $nagiosvar = $self."::nagios";
- my $nagioslevelvar = $self."::nagios_level";
- $$nagiosvar = {
- messages => {
- 0 => [],
- 1 => [],
- 2 => [],
- 3 => [],
- },
- perfdata => [],
- };
- $$nagioslevelvar = $ERRORS{OK},
- } else {
- $self->{nagios} = {
- messages => {
- 0 => [],
- 1 => [],
- 2 => [],
- 3 => [],
- },
- perfdata => [],
- };
- $self->{nagios_level} = $ERRORS{OK},
- }
-}
-
-sub check_thresholds {
- my $self = shift;
- my $value = shift;
- my $defaultwarningrange = shift;
- my $defaultcriticalrange = shift;
- my $level = $ERRORS{OK};
- $self->{warningrange} = defined $self->{warningrange} ?
- $self->{warningrange} : $defaultwarningrange;
- $self->{criticalrange} = defined $self->{criticalrange} ?
- $self->{criticalrange} : $defaultcriticalrange;
- if ($self->{warningrange} !~ /:/ && $self->{criticalrange} !~ /:/) {
- # warning = 10, critical = 20, warn if > 10, crit if > 20
- $level = $ERRORS{WARNING} if $value > $self->{warningrange};
- $level = $ERRORS{CRITICAL} if $value > $self->{criticalrange};
- } elsif ($self->{warningrange} =~ /([\d\.]+):/ &&
- $self->{criticalrange} =~ /([\d\.]+):/) {
- # warning = 98:, critical = 95:, warn if < 98, crit if < 95
- $self->{warningrange} =~ /([\d\.]+):/;
- $level = $ERRORS{WARNING} if $value < $1;
- $self->{criticalrange} =~ /([\d\.]+):/;
- $level = $ERRORS{CRITICAL} if $value < $1;
- }
- return $level;
- #
- # syntax error must be reported with returncode -1
- #
-}
-
-sub add_nagios {
- my $self = shift;
- my $level = shift;
- my $message = shift;
- push(@{$self->{nagios}->{messages}->{$level}}, $message);
- # recalc current level
- foreach my $llevel qw(CRITICAL WARNING UNKNOWN OK) {
- if (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$llevel}}})) {
- $self->{nagios_level} = $ERRORS{$llevel};
- }
- }
-}
-
-sub add_nagios_ok {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{OK}, $message);
-}
-
-sub add_nagios_warning {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{WARNING}, $message);
-}
-
-sub add_nagios_critical {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{CRITICAL}, $message);
-}
-
-sub add_nagios_unknown {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{UNKNOWN}, $message);
-}
-
-sub add_perfdata {
- my $self = shift;
- my $data = shift;
- push(@{$self->{nagios}->{perfdata}}, $data);
-}
-
-sub merge_nagios {
- my $self = shift;
- my $child = shift;
- foreach my $level (0..3) {
- foreach (@{$child->{nagios}->{messages}->{$level}}) {
- $self->add_nagios($level, $_);
- }
- #push(@{$self->{nagios}->{messages}->{$level}},
- # @{$child->{nagios}->{messages}->{$level}});
- }
- push(@{$self->{nagios}->{perfdata}}, @{$child->{nagios}->{perfdata}});
-}
-
-sub calculate_result {
- my $self = shift;
- my $labels = shift || {};
- my $multiline = 0;
- map {
- $self->{nagios_level} = $ERRORS{$_} if
- (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$_}}}));
- } ("OK", "UNKNOWN", "WARNING", "CRITICAL");
- if ($ENV{NRPE_MULTILINESUPPORT} &&
- length join(" ", @{$self->{nagios}->{perfdata}}) > 200) {
- $multiline = 1;
- }
- my $all_messages = join(($multiline ? "\n" : ", "), map {
- join(($multiline ? "\n" : ", "), @{$self->{nagios}->{messages}->{$ERRORS{$_}}})
- } grep {
- scalar(@{$self->{nagios}->{messages}->{$ERRORS{$_}}})
- } ("CRITICAL", "WARNING", "UNKNOWN", "OK"));
- my $bad_messages = join(($multiline ? "\n" : ", "), map {
- join(($multiline ? "\n" : ", "), @{$self->{nagios}->{messages}->{$ERRORS{$_}}})
- } grep {
- scalar(@{$self->{nagios}->{messages}->{$ERRORS{$_}}})
- } ("CRITICAL", "WARNING", "UNKNOWN"));
- my $all_messages_short = $bad_messages ? $bad_messages : 'no problems';
- my $all_messages_html = "<table style=\"border-collapse: collapse;\">".
- join("", map {
- my $level = $_;
- join("", map {
- sprintf "<tr valign=\"top\"><td class=\"service%s\">%s</td></tr>",
- $level, $_;
- } @{$self->{nagios}->{messages}->{$ERRORS{$_}}});
- } grep {
- scalar(@{$self->{nagios}->{messages}->{$ERRORS{$_}}})
- } ("CRITICAL", "WARNING", "UNKNOWN", "OK")).
- "</table>";
- if (exists $self->{identstring}) {
- $self->{nagios_message} .= $self->{identstring};
- }
- if ($self->{report} eq "long") {
- $self->{nagios_message} .= $all_messages;
- } elsif ($self->{report} eq "short") {
- $self->{nagios_message} .= $all_messages_short;
- } elsif ($self->{report} eq "html") {
- $self->{nagios_message} .= $all_messages_short."\n".$all_messages_html;
- }
- if ($self->{labelformat} eq "pnp4nagios") {
- $self->{perfdata} = join(" ", @{$self->{nagios}->{perfdata}});
- } else {
- $self->{perfdata} = join(" ", map {
- my $perfdata = $_;
- if ($perfdata =~ /^(.*?)=(.*)/) {
- my $label = $1;
- my $data = $2;
- if (exists $labels->{$label} &&
- exists $labels->{$label}->{$self->{labelformat}}) {
- $labels->{$label}->{$self->{labelformat}}."=".$data;
- } else {
- $perfdata;
- }
- } else {
- $perfdata;
- }
- } @{$self->{nagios}->{perfdata}});
- }
-}
-
-sub set_global_db_thresholds {
- my $self = shift;
- my $params = shift;
- my $warning = undef;
- my $critical = undef;
- return unless defined $params->{dbthresholds};
- $params->{name0} = $params->{dbthresholds};
- # :pluginmode :name :warning :critical
- # mode empty
- #
- eval {
- if ($self->{handle}->fetchrow_array(q{
- SELECT table_name
- FROM information_schema.tables
- WHERE table_schema = ?
- AND table_name = 'CHECK_MYSQL_HEALTH_THRESHOLDS';
- }, $self->{database})) { # either --database... or information_schema
- my @dbthresholds = $self->{handle}->fetchall_array(q{
- SELECT * FROM check_mysql_health_thresholds
- });
- $params->{dbthresholds} = \@dbthresholds;
- foreach (@dbthresholds) {
- if (($_->[0] eq $params->{cmdlinemode}) &&
- (! defined $_->[1] || ! $_->[1])) {
- ($warning, $critical) = ($_->[2], $_->[3]);
- }
- }
- }
- };
- if (! $@) {
- if ($warning) {
- $params->{warningrange} = $warning;
- $self->trace("read warningthreshold %s from database", $warning);
- }
- if ($critical) {
- $params->{criticalrange} = $critical;
- $self->trace("read criticalthreshold %s from database", $critical);
- }
- }
-}
-
-sub set_local_db_thresholds {
- my $self = shift;
- my %params = @_;
- my $warning = undef;
- my $critical = undef;
- # :pluginmode :name :warning :critical
- # mode name0
- # mode name2
- # mode name
- #
- # first: argument of --dbthresholds, it it exists
- # second: --name2
- # third: --name
- if (ref($params{dbthresholds}) eq 'ARRAY') {
- my $marker;
- foreach (@{$params{dbthresholds}}) {
- if ($_->[0] eq $params{cmdlinemode}) {
- if (defined $_->[1] && $params{name0} && $_->[1] eq $params{name0}) {
- ($warning, $critical) = ($_->[2], $_->[3]);
- $marker = $params{name0};
- last;
- } elsif (defined $_->[1] && $params{name2} && $_->[1] eq $params{name2}) {
- ($warning, $critical) = ($_->[2], $_->[3]);
- $marker = $params{name2};
- last;
- } elsif (defined $_->[1] && $params{name} && $_->[1] eq $params{name}) {
- ($warning, $critical) = ($_->[2], $_->[3]);
- $marker = $params{name};
- last;
- }
- }
- }
- if ($warning) {
- $self->{warningrange} = $warning;
- $self->trace("read warningthreshold %s for %s from database",
- $marker, $warning);
- }
- if ($critical) {
- $self->{criticalrange} = $critical;
- $self->trace("read criticalthreshold %s for %s from database",
- $marker, $critical);
- }
- }
-}
-
-sub debug {
- my $self = shift;
- my $msg = shift;
- if ($DBD::MySQL::Server::verbose) {
- printf "%s %s\n", $msg, ref($self);
- }
-}
-
-sub dbconnect {
- my $self = shift;
- my %params = @_;
- my $retval = undef;
- $self->{tic} = Time::HiRes::time();
- $self->{handle} = DBD::MySQL::Server::Connection->new(%params);
- if ($self->{handle}->{errstr}) {
- if ($params{mode} =~ /^server::tnsping/ &&
- $self->{handle}->{errstr} =~ /ORA-01017/) {
- $self->add_nagios($ERRORS{OK},
- sprintf "connection established to %s.", $self->{connect});
- $retval = undef;
- } elsif ($self->{handle}->{errstr} eq "alarm\n") {
- $self->add_nagios($ERRORS{CRITICAL},
- sprintf "connection could not be established within %d seconds",
- $self->{timeout});
- } else {
- $self->add_nagios($ERRORS{CRITICAL},
- sprintf "cannot connect to %s. %s",
- $self->{database}, $self->{handle}->{errstr});
- $retval = undef;
- }
- } else {
- $retval = $self->{handle};
- }
- $self->{tac} = Time::HiRes::time();
- return $retval;
-}
-
-sub trace {
- my $self = shift;
- my $format = shift;
- $self->{trace} = -f "/tmp/check_mysql_health.trace" ? 1 : 0;
- if ($self->{verbose}) {
- printf("%s: ", scalar localtime);
- printf($format, @_);
- }
- if ($self->{trace}) {
- my $logfh = new IO::File;
- $logfh->autoflush(1);
- if ($logfh->open("/tmp/check_mysql_health.trace", "a")) {
- $logfh->printf("%s: ", scalar localtime);
- $logfh->printf($format, @_);
- $logfh->printf("\n");
- $logfh->close();
- }
- }
-}
-
-sub DESTROY {
- my $self = shift;
- my $handle1 = "null";
- my $handle2 = "null";
- if (defined $self->{handle}) {
- $handle1 = ref($self->{handle});
- if (defined $self->{handle}->{handle}) {
- $handle2 = ref($self->{handle}->{handle});
- }
- }
- $self->trace(sprintf "DESTROY %s with handle %s %s", ref($self), $handle1, $handle2);
- if (ref($self) eq "DBD::MySQL::Server") {
- }
- $self->trace(sprintf "DESTROY %s exit with handle %s %s", ref($self), $handle1, $handle2);
- if (ref($self) eq "DBD::MySQL::Server") {
- #printf "humpftata\n";
- }
-}
-
-sub save_state {
- my $self = shift;
- my %params = @_;
- my $extension = "";
- my $mode = $params{mode};
- if ($params{connect} && $params{connect} =~ /(\w+)\/(\w+)@(\w+)/) {
- $params{connect} = $3;
- } elsif ($params{connect}) {
- # just to be sure
- $params{connect} =~ s/\//_/g;
- }
- if ($^O =~ /MSWin/) {
- $mode =~ s/::/_/g;
- $params{statefilesdir} = $self->system_vartmpdir();
- }
- if (! -d $params{statefilesdir}) {
- eval {
- use File::Path;
- mkpath $params{statefilesdir};
- };
- }
- if ($@ || ! -w $params{statefilesdir}) {
- $self->add_nagios($ERRORS{CRITICAL},
- sprintf "statefilesdir %s does not exist or is not writable\n",
- $params{statefilesdir});
- return;
- }
- my $statefile = sprintf "%s_%s", $params{hostname}, $mode;
- $extension .= $params{differenciator} ? "_".$params{differenciator} : "";
- $extension .= $params{socket} ? "_".$params{socket} : "";
- $extension .= $params{port} ? "_".$params{port} : "";
- $extension .= $params{database} ? "_".$params{database} : "";
- $extension .= $params{tablespace} ? "_".$params{tablespace} : "";
- $extension .= $params{datafile} ? "_".$params{datafile} : "";
- $extension .= $params{name} ? "_".$params{name} : "";
- $extension =~ s/\//_/g;
- $extension =~ s/\(/_/g;
- $extension =~ s/\)/_/g;
- $extension =~ s/\*/_/g;
- $extension =~ s/\s/_/g;
- $statefile .= $extension;
- $statefile = lc $statefile;
- $statefile = sprintf "%s/%s", $params{statefilesdir}, $statefile;
- if (open(STATE, ">$statefile")) {
- if ((ref($params{save}) eq "HASH") && exists $params{save}->{timestamp}) {
- $params{save}->{localtime} = scalar localtime $params{save}->{timestamp};
- }
- printf STATE Data::Dumper::Dumper($params{save});
- close STATE;
- } else {
- $self->add_nagios($ERRORS{CRITICAL},
- sprintf "statefile %s is not writable", $statefile);
- }
- $self->debug(sprintf "saved %s to %s",
- Data::Dumper::Dumper($params{save}), $statefile);
-}
-
-sub load_state {
- my $self = shift;
- my %params = @_;
- my $extension = "";
- my $mode = $params{mode};
- if ($params{connect} && $params{connect} =~ /(\w+)\/(\w+)@(\w+)/) {
- $params{connect} = $3;
- } elsif ($params{connect}) {
- # just to be sure
- $params{connect} =~ s/\//_/g;
- }
- if ($^O =~ /MSWin/) {
- $mode =~ s/::/_/g;
- $params{statefilesdir} = $self->system_vartmpdir();
- }
- my $statefile = sprintf "%s_%s", $params{hostname}, $mode;
- $extension .= $params{differenciator} ? "_".$params{differenciator} : "";
- $extension .= $params{socket} ? "_".$params{socket} : "";
- $extension .= $params{port} ? "_".$params{port} : "";
- $extension .= $params{database} ? "_".$params{database} : "";
- $extension .= $params{tablespace} ? "_".$params{tablespace} : "";
- $extension .= $params{datafile} ? "_".$params{datafile} : "";
- $extension .= $params{name} ? "_".$params{name} : "";
- $extension =~ s/\//_/g;
- $extension =~ s/\(/_/g;
- $extension =~ s/\)/_/g;
- $extension =~ s/\*/_/g;
- $extension =~ s/\s/_/g;
- $statefile .= $extension;
- $statefile = lc $statefile;
- $statefile = sprintf "%s/%s", $params{statefilesdir}, $statefile;
- if ( -f $statefile) {
- our $VAR1;
- eval {
- require $statefile;
- };
- if($@) {
- $self->add_nagios($ERRORS{CRITICAL},
- sprintf "statefile %s is corrupt", $statefile);
- }
- $self->debug(sprintf "load %s", Data::Dumper::Dumper($VAR1));
- return $VAR1;
- } else {
- return undef;
- }
-}
-
-sub valdiff {
- my $self = shift;
- my $pparams = shift;
- my %params = %{$pparams};
- my @keys = @_;
- my $now = time;
- my $last_values = $self->load_state(%params) || eval {
- my $empty_events = {};
- foreach (@keys) {
- $empty_events->{$_} = 0;
- }
- $empty_events->{timestamp} = 0;
- if ($params{lookback}) {
- $empty_events->{lookback_history} = {};
- }
- $empty_events;
- };
- foreach (@keys) {
- if ($params{lookback}) {
- # find a last_value in the history which fits lookback best
- # and overwrite $last_values->{$_} with historic data
- if (exists $last_values->{lookback_history}->{$_}) {
- foreach my $date (sort {$a <=> $b} keys %{$last_values->{lookback_history}->{$_}}) {
- if ($date >= ($now - $params{lookback})) {
- $last_values->{$_} = $last_values->{lookback_history}->{$_}->{$date};
- $last_values->{timestamp} = $date;
- last;
- } else {
- delete $last_values->{lookback_history}->{$_}->{$date};
- }
- }
- }
- }
- $last_values->{$_} = 0 if ! exists $last_values->{$_};
- if ($self->{$_} >= $last_values->{$_}) {
- $self->{'delta_'.$_} = $self->{$_} - $last_values->{$_};
- } else {
- # vermutlich db restart und zaehler alle auf null
- $self->{'delta_'.$_} = $self->{$_};
- }
- $self->debug(sprintf "delta_%s %f", $_, $self->{'delta_'.$_});
- }
- $self->{'delta_timestamp'} = $now - $last_values->{timestamp};
- $params{save} = eval {
- my $empty_events = {};
- foreach (@keys) {
- $empty_events->{$_} = $self->{$_};
- }
- $empty_events->{timestamp} = $now;
- if ($params{lookback}) {
- $empty_events->{lookback_history} = $last_values->{lookback_history};
- foreach (@keys) {
- $empty_events->{lookback_history}->{$_}->{$now} = $self->{$_};
- }
- }
- $empty_events;
- };
- $self->save_state(%params);
-}
-
-sub requires_version {
- my $self = shift;
- my $version = shift;
- my @instances = DBD::MySQL::Server::return_servers();
- my $instversion = $instances[0]->{version};
- if (! $self->version_is_minimum($version)) {
- $self->add_nagios($ERRORS{UNKNOWN},
- sprintf "not implemented/possible for MySQL release %s", $instversion);
- }
-}
-
-sub version_is_minimum {
- # the current version is newer or equal
- my $self = shift;
- my $version = shift;
- my $newer = 1;
- my @instances = DBD::MySQL::Server::return_servers();
- my @v1 = map { $_ eq "x" ? 0 : $_ } split(/\./, $version);
- my @v2 = split(/\./, $instances[0]->{version});
- if (scalar(@v1) > scalar(@v2)) {
- push(@v2, (0) x (scalar(@v1) - scalar(@v2)));
- } elsif (scalar(@v2) > scalar(@v1)) {
- push(@v1, (0) x (scalar(@v2) - scalar(@v1)));
- }
- foreach my $pos (0..$#v1) {
- if ($v2[$pos] > $v1[$pos]) {
- $newer = 1;
- last;
- } elsif ($v2[$pos] < $v1[$pos]) {
- $newer = 0;
- last;
- }
- }
- #printf STDERR "check if %s os minimum %s\n", join(".", @v2), join(".", @v1);
- return $newer;
-}
-
-sub instance_thread {
- my $self = shift;
- my @instances = DBD::MySQL::Server::return_servers();
- return $instances[0]->{thread};
-}
-
-sub windows_server {
- my $self = shift;
- my @instances = DBD::MySQL::Server::return_servers();
- if ($instances[0]->{os} =~ /Win/i) {
- return 1;
- } else {
- return 0;
- }
-}
-
-sub system_vartmpdir {
- my $self = shift;
- if ($^O =~ /MSWin/) {
- return $self->system_tmpdir();
- } else {
- return "/var/tmp/check_mysql_health";
- }
-}
-
-sub system_oldvartmpdir {
- my $self = shift;
- return "/tmp";
-}
-
-sub system_tmpdir {
- my $self = shift;
- if ($^O =~ /MSWin/) {
- return $ENV{TEMP} if defined $ENV{TEMP};
- return $ENV{TMP} if defined $ENV{TMP};
- return File::Spec->catfile($ENV{windir}, 'Temp')
- if defined $ENV{windir};
- return 'C:\Temp';
- } else {
- return "/tmp";
- }
-}
-
-
-package DBD::MySQL::Server::Connection;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Server);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- mode => $params{mode},
- timeout => $params{timeout},
- access => $params{method} || "dbi",
- hostname => $params{hostname},
- database => $params{database} || "information_schema",
- port => $params{port},
- socket => $params{socket},
- username => $params{username},
- password => $params{password},
- handle => undef,
- };
- bless $self, $class;
- if ($params{method} eq "dbi") {
- bless $self, "DBD::MySQL::Server::Connection::Dbi";
- } elsif ($params{method} eq "mysql") {
- bless $self, "DBD::MySQL::Server::Connection::Mysql";
- } elsif ($params{method} eq "sqlrelay") {
- bless $self, "DBD::MySQL::Server::Connection::Sqlrelay";
- }
- $self->init(%params);
- return $self;
-}
-
-
-package DBD::MySQL::Server::Connection::Dbi;
-
-use strict;
-use Net::Ping;
-
-our @ISA = qw(DBD::MySQL::Server::Connection);
-
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $retval = undef;
- if ($self->{mode} =~ /^server::tnsping/) {
- if (! $self->{connect}) {
- $self->{errstr} = "Please specify a database";
- } else {
- $self->{sid} = $self->{connect};
- $self->{username} ||= time; # prefer an existing user
- $self->{password} = time;
- }
- } else {
- if (($self->{hostname} ne 'localhost') && (! $self->{username} || ! $self->{password})) {
- $self->{errstr} = "Please specify hostname, username and password";
- return undef;
- }
- $self->{dsn} = "DBI:mysql:";
- $self->{dsn} .= sprintf "database=%s", $self->{database};
- $self->{dsn} .= sprintf ";host=%s", $self->{hostname};
- $self->{dsn} .= sprintf ";port=%s", $self->{port}
- unless $self->{socket} || $self->{hostname} eq 'localhost';
- $self->{dsn} .= sprintf ";mysql_socket=%s", $self->{socket}
- if $self->{socket};
- }
- if (! exists $self->{errstr}) {
- eval {
- require DBI;
- use POSIX ':signal_h';
- local $SIG{'ALRM'} = sub {
- die "alarm\n";
- };
- my $mask = POSIX::SigSet->new( SIGALRM );
- my $action = POSIX::SigAction->new(
- sub { die "alarm\n" ; }, $mask);
- my $oldaction = POSIX::SigAction->new();
- sigaction(SIGALRM ,$action ,$oldaction );
- alarm($self->{timeout} - 1); # 1 second before the global unknown timeout
- if ($self->{handle} = DBI->connect(
- $self->{dsn},
- $self->{username},
- $self->{password},
- { RaiseError => 0, AutoCommit => 0, PrintError => 0 })) {
-# $self->{handle}->do(q{
-# ALTER SESSION SET NLS_NUMERIC_CHARACTERS=".," });
- $retval = $self;
- } else {
- $self->{errstr} = DBI::errstr();
- }
- };
- if ($@) {
- $self->{errstr} = $@;
- $retval = undef;
- }
- }
- $self->{tac} = Time::HiRes::time();
- return $retval;
-}
-
-sub selectrow_hashref {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my $hashref = undef;
- eval {
- $self->trace(sprintf "SQL:\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- # helm auf! jetzt wirds dreckig.
- if ($sql =~ /^\s*SHOW/) {
- $hashref = $self->{handle}->selectrow_hashref($sql);
- } else {
- $sth = $self->{handle}->prepare($sql);
- if (scalar(@arguments)) {
- $sth->execute(@arguments);
- } else {
- $sth->execute();
- }
- $hashref = $sth->selectrow_hashref();
- }
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper($hashref));
- };
- if ($@) {
- $self->debug(sprintf "bumm %s", $@);
- }
- if (-f "/tmp/check_mysql_health_simulation/".$self->{mode}) {
- my $simulation = do { local (@ARGV, $/) =
- "/tmp/check_mysql_health_simulation/".$self->{mode}; <> };
- # keine lust auf den scheiss
- }
- return $hashref;
-}
-
-sub fetchrow_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my @row = ();
- eval {
- $self->trace(sprintf "SQL:\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- $sth = $self->{handle}->prepare($sql);
- if (scalar(@arguments)) {
- $sth->execute(@arguments);
- } else {
- $sth->execute();
- }
- @row = $sth->fetchrow_array();
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper(\@row));
- };
- if ($@) {
- $self->debug(sprintf "bumm %s", $@);
- }
- if (-f "/tmp/check_mysql_health_simulation/".$self->{mode}) {
- my $simulation = do { local (@ARGV, $/) =
- "/tmp/check_mysql_health_simulation/".$self->{mode}; <> };
- @row = split(/\s+/, (split(/\n/, $simulation))[0]);
- }
- return $row[0] unless wantarray;
- return @row;
-}
-
-sub fetchall_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my $rows = undef;
- eval {
- $self->trace(sprintf "SQL:\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- $sth = $self->{handle}->prepare($sql);
- if (scalar(@arguments)) {
- $sth->execute(@arguments);
- } else {
- $sth->execute();
- }
- $rows = $sth->fetchall_arrayref();
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper($rows));
- };
- if ($@) {
- printf STDERR "bumm %s\n", $@;
- }
- if (-f "/tmp/check_mysql_health_simulation/".$self->{mode}) {
- my $simulation = do { local (@ARGV, $/) =
- "/tmp/check_mysql_health_simulation/".$self->{mode}; <> };
- @{$rows} = map { [ split(/\s+/, $_) ] } split(/\n/, $simulation);
- }
- return @{$rows};
-}
-
-sub func {
- my $self = shift;
- $self->{handle}->func(@_);
-}
-
-
-sub execute {
- my $self = shift;
- my $sql = shift;
- eval {
- my $sth = $self->{handle}->prepare($sql);
- $sth->execute();
- };
- if ($@) {
- printf STDERR "bumm %s\n", $@;
- }
-}
-
-sub errstr {
- my $self = shift;
- return $self->{errstr};
-}
-
-sub DESTROY {
- my $self = shift;
- $self->trace(sprintf "disconnecting DBD %s",
- $self->{handle} ? "with handle" : "without handle");
- $self->{handle}->disconnect() if $self->{handle};
-}
-
-package DBD::MySQL::Server::Connection::Mysql;
-
-use strict;
-use File::Temp qw/tempfile/;
-
-our @ISA = qw(DBD::MySQL::Server::Connection);
-
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $retval = undef;
- $self->{loginstring} = "traditional";
- ($self->{sql_commandfile_handle}, $self->{sql_commandfile}) =
- tempfile($self->{mode}."XXXXX", SUFFIX => ".sql",
- DIR => $self->system_tmpdir() );
- close $self->{sql_commandfile_handle};
- ($self->{sql_resultfile_handle}, $self->{sql_resultfile}) =
- tempfile($self->{mode}."XXXXX", SUFFIX => ".out",
- DIR => $self->system_tmpdir() );
- close $self->{sql_resultfile_handle};
- if ($self->{mode} =~ /^server::tnsping/) {
- if (! $self->{connect}) {
- $self->{errstr} = "Please specify a database";
- } else {
- $self->{sid} = $self->{connect};
- $self->{username} ||= time; # prefer an existing user
- $self->{password} = time;
- }
- } else {
- if (! $self->{username} || ! $self->{password}) {
- $self->{errstr} = "Please specify database, username and password";
- return undef;
- } elsif (! (($self->{hostname} && $self->{port}) || $self->{socket})) {
- $self->{errstr} = "Please specify hostname and port or socket";
- return undef;
- }
- }
- if (! exists $self->{errstr}) {
- eval {
- my $mysql = '/'.'usr'.'/'.'bin'.'/'.'mysql';
- if (! -x $mysql) {
- die "nomysql\n";
- }
- if ($self->{loginstring} eq "traditional") {
- $self->{sqlplus} = sprintf "%s ", $mysql;
- $self->{sqlplus} .= sprintf "--batch --raw --skip-column-names ";
- $self->{sqlplus} .= sprintf "--database=%s ", $self->{database};
- $self->{sqlplus} .= sprintf "--host=%s ", $self->{hostname};
- $self->{sqlplus} .= sprintf "--port=%s ", $self->{port}
- unless $self->{socket} || $self->{hostname} eq "localhost";
- $self->{sqlplus} .= sprintf "--socket=%s ", $self->{socket}
- if $self->{socket};
- $self->{sqlplus} .= sprintf "--user=%s --password=%s < %s > %s",
- $self->{username}, $self->{password},
- $self->{sql_commandfile}, $self->{sql_resultfile};
- }
-
- use POSIX ':signal_h';
- local $SIG{'ALRM'} = sub {
- die "alarm\n";
- };
- my $mask = POSIX::SigSet->new( SIGALRM );
- my $action = POSIX::SigAction->new(
- sub { die "alarm\n" ; }, $mask);
- my $oldaction = POSIX::SigAction->new();
- sigaction(SIGALRM ,$action ,$oldaction );
- alarm($self->{timeout} - 1); # 1 second before the global unknown timeout
-
- my $answer = $self->fetchrow_array(
- q{ SELECT 42 FROM dual});
- die unless defined $answer and $answer == 42;
- $retval = $self;
- };
- if ($@) {
- $self->{errstr} = $@;
- $self->{errstr} =~ s/at $0 .*//g;
- chomp $self->{errstr};
- $retval = undef;
- }
- }
- $self->{tac} = Time::HiRes::time();
- return $retval;
-}
-
-sub selectrow_hashref {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my $hashref = undef;
- foreach (@arguments) {
- # replace the ? by the parameters
- if (/^\d+$/) {
- $sql =~ s/\?/$_/;
- } else {
- $sql =~ s/\?/'$_'/;
- }
- }
- if ($sql =~ /^\s*SHOW/) {
- $sql .= '\G'; # http://dev.mysql.com/doc/refman/5.1/de/show-slave-status.html
- }
- $self->trace(sprintf "SQL (? resolved):\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- $self->create_commandfile($sql);
- my $exit_output = `$self->{sqlplus}`;
- if ($?) {
- printf STDERR "fetchrow_array exit bumm \n";
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- my @oerrs = map {
- /((ERROR \d+).*)/ ? $1 : ();
- } split(/\n/, $output);
- $self->{errstr} = join(" ", @oerrs);
- } else {
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- if ($sql =~ /^\s*SHOW/) {
- map {
- if (/^\s*([\w_]+):\s*(.*)/) {
- $hashref->{$1} = $2;
- }
- } split(/\n/, $output);
- } else {
- # i dont mess around here and you shouldn't either
- }
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper($hashref));
- }
- unlink $self->{sql_commandfile};
- unlink $self->{sql_resultfile};
- return $hashref;
-}
-
-sub fetchrow_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my @row = ();
- foreach (@arguments) {
- # replace the ? by the parameters
- if (/^\d+$/) {
- $sql =~ s/\?/$_/;
- } else {
- $sql =~ s/\?/'$_'/;
- }
- }
- $self->trace(sprintf "SQL (? resolved):\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- $self->create_commandfile($sql);
- my $exit_output = `$self->{sqlplus}`;
- if ($?) {
- printf STDERR "fetchrow_array exit bumm \n";
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- my @oerrs = map {
- /((ERROR \d+).*)/ ? $1 : ();
- } split(/\n/, $output);
- $self->{errstr} = join(" ", @oerrs);
- } else {
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- @row = map { convert($_) }
- map { s/^\s+([\.\d]+)$/$1/g; $_ } # strip leading space from numbers
- map { s/\s+$//g; $_ } # strip trailing space
- split(/\t/, (split(/\n/, $output))[0]);
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper(\@row));
- }
- if ($@) {
- $self->debug(sprintf "bumm %s", $@);
- }
- unlink $self->{sql_commandfile};
- unlink $self->{sql_resultfile};
- return $row[0] unless wantarray;
- return @row;
-}
-
-sub fetchall_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my $rows = undef;
- foreach (@arguments) {
- # replace the ? by the parameters
- if (/^\d+$/) {
- $sql =~ s/\?/$_/;
- } else {
- $sql =~ s/\?/'$_'/;
- }
- }
- $self->trace(sprintf "SQL (? resolved):\n%s\nARGS:\n%s\n",
- $sql, Data::Dumper::Dumper(\@arguments));
- $self->create_commandfile($sql);
- my $exit_output = `$self->{sqlplus}`;
- if ($?) {
- printf STDERR "fetchrow_array exit bumm %s\n", $exit_output;
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- my @oerrs = map {
- /((ERROR \d+).*)/ ? $1 : ();
- } split(/\n/, $output);
- $self->{errstr} = join(" ", @oerrs);
- } else {
- my $output = do { local (@ARGV, $/) = $self->{sql_resultfile}; <> };
- my @rows = map { [
- map { convert($_) }
- map { s/^\s+([\.\d]+)$/$1/g; $_ }
- map { s/\s+$//g; $_ }
- split /\t/
- ] } grep { ! /^\d+ rows selected/ }
- grep { ! /^Elapsed: / }
- grep { ! /^\s*$/ } split(/\n/, $output);
- $rows = \@rows;
- $self->trace(sprintf "RESULT:\n%s\n",
- Data::Dumper::Dumper($rows));
- }
- if ($@) {
- $self->debug(sprintf "bumm %s", $@);
- }
- unlink $self->{sql_commandfile};
- unlink $self->{sql_resultfile};
- return @{$rows};
-}
-
-sub func {
- my $self = shift;
- my $function = shift;
- $self->{handle}->func(@_);
-}
-
-sub convert {
- my $n = shift;
- # mostly used to convert numbers in scientific notation
- if ($n =~ /^\s*\d+\s*$/) {
- return $n;
- } elsif ($n =~ /^\s*([-+]?)(\d*[\.,]*\d*)[eE]{1}([-+]?)(\d+)\s*$/) {
- my ($vor, $num, $sign, $exp) = ($1, $2, $3, $4);
- $n =~ s/E/e/g;
- $n =~ s/,/\./g;
- $num =~ s/,/\./g;
- my $sig = $sign eq '-' ? "." . ($exp - 1 + length $num) : '';
- my $dec = sprintf "%${sig}f", $n;
- $dec =~ s/\.[0]+$//g;
- return $dec;
- } elsif ($n =~ /^\s*([-+]?)(\d+)[\.,]*(\d*)\s*$/) {
- return $1.$2.".".$3;
- } elsif ($n =~ /^\s*(.*?)\s*$/) {
- return $1;
- } else {
- return $n;
- }
-}
-
-
-sub execute {
- my $self = shift;
- my $sql = shift;
- eval {
- my $sth = $self->{handle}->prepare($sql);
- $sth->execute();
- };
- if ($@) {
- printf STDERR "bumm %s\n", $@;
- }
-}
-
-sub errstr {
- my $self = shift;
- return $self->{errstr};
-}
-
-sub DESTROY {
- my $self = shift;
- $self->trace("try to clean up command and result files");
- unlink $self->{sql_commandfile} if -f $self->{sql_commandfile};
- unlink $self->{sql_resultfile} if -f $self->{sql_resultfile};
-}
-
-sub create_commandfile {
- my $self = shift;
- my $sql = shift;
- open CMDCMD, "> $self->{sql_commandfile}";
- printf CMDCMD "%s\n", $sql;
- close CMDCMD;
-}
-
-
-package DBD::MySQL::Server::Connection::Sqlrelay;
-
-use strict;
-use Net::Ping;
-
-our @ISA = qw(DBD::MySQL::Server::Connection);
-
-
-sub init {
- my $self = shift;
- my %params = @_;
- my $retval = undef;
- if ($self->{mode} =~ /^server::tnsping/) {
- if (! $self->{connect}) {
- $self->{errstr} = "Please specify a database";
- } else {
- if ($self->{connect} =~ /([\.\w]+):(\d+)/) {
- $self->{host} = $1;
- $self->{port} = $2;
- $self->{socket} = "";
- } elsif ($self->{connect} =~ /([\.\w]+):([\w\/]+)/) {
- $self->{host} = $1;
- $self->{socket} = $2;
- $self->{port} = "";
- }
- }
- } else {
- if (! $self->{hostname} || ! $self->{username} || ! $self->{password}) {
- if ($self->{hostname} && $self->{hostname} =~ /(\w+)\/(\w+)@([\.\w]+):(\d+)/) {
- $self->{username} = $1;
- $self->{password} = $2;
- $self->{hostname} = $3;
- $self->{port} = $4;
- $self->{socket} = "";
- } elsif ($self->{hostname} && $self->{hostname} =~ /(\w+)\/(\w+)@([\.\w]+):([\w\/]+)/) {
- $self->{username} = $1;
- $self->{password} = $2;
- $self->{hostname} = $3;
- $self->{socket} = $4;
- $self->{port} = "";
- } else {
- $self->{errstr} = "Please specify database, username and password";
- return undef;
- }
- } else {
- if ($self->{hostname} =~ /([\.\w]+):(\d+)/) {
- $self->{hostname} = $1;
- $self->{port} = $2;
- $self->{socket} = "";
- } elsif ($self->{hostname} =~ /([\.\w]+):([\w\/]+)/) {
- $self->{hostname} = $1;
- $self->{socket} = $2;
- $self->{port} = "";
- } else {
- $self->{errstr} = "Please specify hostname, username, password and port/socket";
- return undef;
- }
- }
- }
- if (! exists $self->{errstr}) {
- eval {
- require DBI;
- use POSIX ':signal_h';
- local $SIG{'ALRM'} = sub {
- die "alarm\n";
- };
- my $mask = POSIX::SigSet->new( SIGALRM );
- my $action = POSIX::SigAction->new(
- sub { die "alarm\n" ; }, $mask);
- my $oldaction = POSIX::SigAction->new();
- sigaction(SIGALRM ,$action ,$oldaction );
- alarm($self->{timeout} - 1); # 1 second before the global unknown timeout
- if ($self->{handle} = DBI->connect(
- sprintf("DBI:SQLRelay:host=%s;port=%d;socket=%s",
- $self->{hostname}, $self->{port}, $self->{socket}),
- $self->{username},
- $self->{password},
- { RaiseError => 1, AutoCommit => 0, PrintError => 1 })) {
- $retval = $self;
- if ($self->{mode} =~ /^server::tnsping/ && $self->{handle}->ping()) {
- # database connected. fake a "unknown user"
- $self->{errstr} = "ORA-01017";
- }
- } else {
- $self->{errstr} = DBI::errstr();
- }
- };
- if ($@) {
- $self->{errstr} = $@;
- $self->{errstr} =~ s/at [\w\/\.]+ line \d+.*//g;
- $retval = undef;
- }
- }
- $self->{tac} = Time::HiRes::time();
- return $retval;
-}
-
-sub fetchrow_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my @row = ();
- $self->trace(sprintf "fetchrow_array: %s", $sql);
- eval {
- $sth = $self->{handle}->prepare($sql);
- if (scalar(@arguments)) {
- $sth->execute(@arguments);
- } else {
- $sth->execute();
- }
- @row = $sth->fetchrow_array();
- };
- if ($@) {
- $self->debug(sprintf "bumm %s", $@);
- }
- if (-f "/tmp/check_mysql_health_simulation/".$self->{mode}) {
- my $simulation = do { local (@ARGV, $/) =
- "/tmp/check_mysql_health_simulation/".$self->{mode}; <> };
- @row = split(/\s+/, (split(/\n/, $simulation))[0]);
- }
- return $row[0] unless wantarray;
- return @row;
-}
-
-sub fetchall_array {
- my $self = shift;
- my $sql = shift;
- my @arguments = @_;
- my $sth = undef;
- my $rows = undef;
- $self->trace(sprintf "fetchall_array: %s", $sql);
- eval {
- $sth = $self->{handle}->prepare($sql);
- if (scalar(@arguments)) {
- $sth->execute(@arguments);
- } else {
- $sth->execute();
- }
- $rows = $sth->fetchall_arrayref();
- };
- if ($@) {
- printf STDERR "bumm %s\n", $@;
- }
- if (-f "/tmp/check_mysql_health_simulation/".$self->{mode}) {
- my $simulation = do { local (@ARGV, $/) =
- "/tmp/check_mysql_health_simulation/".$self->{mode}; <> };
- @{$rows} = map { [ split(/\s+/, $_) ] } split(/\n/, $simulation);
- }
- return @{$rows};
-}
-
-sub func {
- my $self = shift;
- $self->{handle}->func(@_);
-}
-
-sub execute {
- my $self = shift;
- my $sql = shift;
- eval {
- my $sth = $self->{handle}->prepare($sql);
- $sth->execute();
- };
- if ($@) {
- printf STDERR "bumm %s\n", $@;
- }
-}
-
-sub DESTROY {
- my $self = shift;
- #$self->trace(sprintf "disconnecting DBD %s",
- # $self->{handle} ? "with handle" : "without handle");
- #$self->{handle}->disconnect() if $self->{handle};
-}
-
-
-
-
-package DBD::MySQL::Cluster;
-
-use strict;
-use Time::HiRes;
-use IO::File;
-use Data::Dumper;
-
-
-{
- our $verbose = 0;
- our $scream = 0; # scream if something is not implemented
- our $access = "dbi"; # how do we access the database.
- our $my_modules_dyn_dir = ""; # where we look for self-written extensions
-
- my @clusters = ();
- my $initerrors = undef;
-
- sub add_cluster {
- push(@clusters, shift);
- }
-
- sub return_clusters {
- return @clusters;
- }
-
- sub return_first_cluster() {
- return $clusters[0];
- }
-
-}
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- hostname => $params{hostname},
- port => $params{port},
- username => $params{username},
- password => $params{password},
- timeout => $params{timeout},
- warningrange => $params{warningrange},
- criticalrange => $params{criticalrange},
- version => 'unknown',
- nodes => [],
- ndbd_nodes => 0,
- ndb_mgmd_nodes => 0,
- mysqld_nodes => 0,
- };
- bless $self, $class;
- $self->init_nagios();
- if ($self->connect(%params)) {
- DBD::MySQL::Cluster::add_cluster($self);
- $self->init(%params);
- }
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- if ($self->{show}) {
- my $type = undef;
- foreach (split /\n/, $self->{show}) {
- if (/\[(\w+)\((\w+)\)\]\s+(\d+) node/) {
- $type = uc $2;
- } elsif (/id=(\d+)(.*)/) {
- push(@{$self->{nodes}}, DBD::MySQL::Cluster::Node->new(
- type => $type,
- id => $1,
- status => $2,
- ));
- }
- }
- } else {
- }
- if ($params{mode} =~ /^cluster::ndbdrunning/) {
- foreach my $node (@{$self->{nodes}}) {
- $node->{type} eq "NDB" && $node->{status} eq "running" && $self->{ndbd_nodes}++;
- $node->{type} eq "MGM" && $node->{status} eq "running" && $self->{ndb_mgmd_nodes}++;
- $node->{type} eq "API" && $node->{status} eq "running" && $self->{mysqld_nodes}++;
- }
- } else {
- printf "broken mode %s\n", $params{mode};
- }
-}
-
-sub dump {
- my $self = shift;
- my $message = shift || "";
- printf "%s %s\n", $message, Data::Dumper::Dumper($self);
-}
-
-sub nagios {
- my $self = shift;
- my %params = @_;
- my $dead_ndb = 0;
- my $dead_api = 0;
- if (! $self->{nagios_level}) {
- if ($params{mode} =~ /^cluster::ndbdrunning/) {
- foreach my $node (grep { $_->{type} eq "NDB"} @{$self->{nodes}}) {
- next if $params{selectname} && $params{selectname} ne $_->{id};
- if (! $node->{connected}) {
- $self->add_nagios_critical(
- sprintf "ndb node %d is not connected", $node->{id});
- $dead_ndb++;
- }
- }
- foreach my $node (grep { $_->{type} eq "API"} @{$self->{nodes}}) {
- next if $params{selectname} && $params{selectname} ne $_->{id};
- if (! $node->{connected}) {
- $self->add_nagios_critical(
- sprintf "api node %d is not connected", $node->{id});
- $dead_api++;
- }
- }
- if (! $dead_ndb) {
- $self->add_nagios_ok("all ndb nodes are connected");
- }
- if (! $dead_api) {
- $self->add_nagios_ok("all api nodes are connected");
- }
- }
- }
- $self->add_perfdata(sprintf "ndbd_nodes=%d ndb_mgmd_nodes=%d mysqld_nodes=%d",
- $self->{ndbd_nodes}, $self->{ndb_mgmd_nodes}, $self->{mysqld_nodes});
-}
-
-
-sub init_nagios {
- my $self = shift;
- no strict 'refs';
- if (! ref($self)) {
- my $nagiosvar = $self."::nagios";
- my $nagioslevelvar = $self."::nagios_level";
- $$nagiosvar = {
- messages => {
- 0 => [],
- 1 => [],
- 2 => [],
- 3 => [],
- },
- perfdata => [],
- };
- $$nagioslevelvar = $ERRORS{OK},
- } else {
- $self->{nagios} = {
- messages => {
- 0 => [],
- 1 => [],
- 2 => [],
- 3 => [],
- },
- perfdata => [],
- };
- $self->{nagios_level} = $ERRORS{OK},
- }
-}
-
-sub check_thresholds {
- my $self = shift;
- my $value = shift;
- my $defaultwarningrange = shift;
- my $defaultcriticalrange = shift;
- my $level = $ERRORS{OK};
- $self->{warningrange} = $self->{warningrange} ?
- $self->{warningrange} : $defaultwarningrange;
- $self->{criticalrange} = $self->{criticalrange} ?
- $self->{criticalrange} : $defaultcriticalrange;
- if ($self->{warningrange} !~ /:/ && $self->{criticalrange} !~ /:/) {
- # warning = 10, critical = 20, warn if > 10, crit if > 20
- $level = $ERRORS{WARNING} if $value > $self->{warningrange};
- $level = $ERRORS{CRITICAL} if $value > $self->{criticalrange};
- } elsif ($self->{warningrange} =~ /([\d\.]+):/ &&
- $self->{criticalrange} =~ /([\d\.]+):/) {
- # warning = 98:, critical = 95:, warn if < 98, crit if < 95
- $self->{warningrange} =~ /([\d\.]+):/;
- $level = $ERRORS{WARNING} if $value < $1;
- $self->{criticalrange} =~ /([\d\.]+):/;
- $level = $ERRORS{CRITICAL} if $value < $1;
- }
- return $level;
- #
- # syntax error must be reported with returncode -1
- #
-}
-
-sub add_nagios {
- my $self = shift;
- my $level = shift;
- my $message = shift;
- push(@{$self->{nagios}->{messages}->{$level}}, $message);
- # recalc current level
- foreach my $llevel qw(CRITICAL WARNING UNKNOWN OK) {
- if (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$llevel}}})) {
- $self->{nagios_level} = $ERRORS{$llevel};
- }
- }
-}
-
-sub add_nagios_ok {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{OK}, $message);
-}
-
-sub add_nagios_warning {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{WARNING}, $message);
-}
-
-sub add_nagios_critical {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{CRITICAL}, $message);
-}
-
-sub add_nagios_unknown {
- my $self = shift;
- my $message = shift;
- $self->add_nagios($ERRORS{UNKNOWN}, $message);
-}
-
-sub add_perfdata {
- my $self = shift;
- my $data = shift;
- push(@{$self->{nagios}->{perfdata}}, $data);
-}
-
-sub merge_nagios {
- my $self = shift;
- my $child = shift;
- foreach my $level (0..3) {
- foreach (@{$child->{nagios}->{messages}->{$level}}) {
- $self->add_nagios($level, $_);
- }
- #push(@{$self->{nagios}->{messages}->{$level}},
- # @{$child->{nagios}->{messages}->{$level}});
- }
- push(@{$self->{nagios}->{perfdata}}, @{$child->{nagios}->{perfdata}});
-}
-
-
-sub calculate_result {
- my $self = shift;
- if ($ENV{NRPE_MULTILINESUPPORT} &&
- length join(" ", @{$self->{nagios}->{perfdata}}) > 200) {
- foreach my $level ("CRITICAL", "WARNING", "UNKNOWN", "OK") {
- # first the bad news
- if (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$level}}})) {
- $self->{nagios_message} .=
- "\n".join("\n", @{$self->{nagios}->{messages}->{$ERRORS{$level}}});
- }
- }
- $self->{nagios_message} =~ s/^\n//g;
- $self->{perfdata} = join("\n", @{$self->{nagios}->{perfdata}});
- } else {
- foreach my $level ("CRITICAL", "WARNING", "UNKNOWN", "OK") {
- # first the bad news
- if (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$level}}})) {
- $self->{nagios_message} .=
- join(", ", @{$self->{nagios}->{messages}->{$ERRORS{$level}}}).", ";
- }
- }
- $self->{nagios_message} =~ s/, $//g;
- $self->{perfdata} = join(" ", @{$self->{nagios}->{perfdata}});
- }
- foreach my $level ("OK", "UNKNOWN", "WARNING", "CRITICAL") {
- if (scalar(@{$self->{nagios}->{messages}->{$ERRORS{$level}}})) {
- $self->{nagios_level} = $ERRORS{$level};
- }
- }
-}
-
-sub debug {
- my $self = shift;
- my $msg = shift;
- if ($DBD::MySQL::Cluster::verbose) {
- printf "%s %s\n", $msg, ref($self);
- }
-}
-
-sub connect {
- my $self = shift;
- my %params = @_;
- my $retval = undef;
- $self->{tic} = Time::HiRes::time();
- eval {
- use POSIX ':signal_h';
- local $SIG{'ALRM'} = sub {
- die "alarm\n";
- };
- my $mask = POSIX::SigSet->new( SIGALRM );
- my $action = POSIX::SigAction->new(
- sub { die "connection timeout\n" ; }, $mask);
- my $oldaction = POSIX::SigAction->new();
- sigaction(SIGALRM ,$action ,$oldaction );
- alarm($self->{timeout} - 1); # 1 second before the global unknown timeout
- my $ndb_mgm = "ndb_mgm";
- $params{hostname} = "127.0.0.1" if ! $params{hostname};
- $ndb_mgm .= sprintf " --ndb-connectstring=%s", $params{hostname}
- if $params{hostname};
- $ndb_mgm .= sprintf ":%d", $params{port}
- if $params{port};
- $self->{show} = `$ndb_mgm -e show 2>&1`;
- if ($? == -1) {
- $self->add_nagios_critical("ndb_mgm failed to execute $!");
- } elsif ($? & 127) {
- $self->add_nagios_critical("ndb_mgm failed to execute $!");
- } elsif ($? >> 8 != 0) {
- $self->add_nagios_critical("ndb_mgm unable to connect");
- } else {
- if ($self->{show} !~ /Cluster Configuration/) {
- $self->add_nagios_critical("got no cluster configuration");
- } else {
- $retval = 1;
- }
- }
- };
- if ($@) {
- $self->{errstr} = $@;
- $self->{errstr} =~ s/at $0 .*//g;
- chomp $self->{errstr};
- $self->add_nagios_critical($self->{errstr});
- $retval = undef;
- }
- $self->{tac} = Time::HiRes::time();
- return $retval;
-}
-
-sub trace {
- my $self = shift;
- my $format = shift;
- $self->{trace} = -f "/tmp/check_mysql_health.trace" ? 1 : 0;
- if ($self->{verbose}) {
- printf("%s: ", scalar localtime);
- printf($format, @_);
- }
- if ($self->{trace}) {
- my $logfh = new IO::File;
- $logfh->autoflush(1);
- if ($logfh->open("/tmp/check_mysql_health.trace", "a")) {
- $logfh->printf("%s: ", scalar localtime);
- $logfh->printf($format, @_);
- $logfh->printf("\n");
- $logfh->close();
- }
- }
-}
-
-sub DESTROY {
- my $self = shift;
- my $handle1 = "null";
- my $handle2 = "null";
- if (defined $self->{handle}) {
- $handle1 = ref($self->{handle});
- if (defined $self->{handle}->{handle}) {
- $handle2 = ref($self->{handle}->{handle});
- }
- }
- $self->trace(sprintf "DESTROY %s with handle %s %s", ref($self), $handle1, $handle2);
- if (ref($self) eq "DBD::MySQL::Cluster") {
- }
- $self->trace(sprintf "DESTROY %s exit with handle %s %s", ref($self), $handle1, $handle2);
- if (ref($self) eq "DBD::MySQL::Cluster") {
- #printf "humpftata\n";
- }
-}
-
-sub save_state {
- my $self = shift;
- my %params = @_;
- my $extension = "";
- mkdir $params{statefilesdir} unless -d $params{statefilesdir};
- my $statefile = sprintf "%s/%s_%s",
- $params{statefilesdir}, $params{hostname}, $params{mode};
- $extension .= $params{differenciator} ? "_".$params{differenciator} : "";
- $extension .= $params{socket} ? "_".$params{socket} : "";
- $extension .= $params{port} ? "_".$params{port} : "";
- $extension .= $params{database} ? "_".$params{database} : "";
- $extension .= $params{tablespace} ? "_".$params{tablespace} : "";
- $extension .= $params{datafile} ? "_".$params{datafile} : "";
- $extension .= $params{name} ? "_".$params{name} : "";
- $extension =~ s/\//_/g;
- $extension =~ s/\(/_/g;
- $extension =~ s/\)/_/g;
- $extension =~ s/\*/_/g;
- $extension =~ s/\s/_/g;
- $statefile .= $extension;
- $statefile = lc $statefile;
- open(STATE, ">$statefile");
- if ((ref($params{save}) eq "HASH") && exists $params{save}->{timestamp}) {
- $params{save}->{localtime} = scalar localtime $params{save}->{timestamp};
- }
- printf STATE Data::Dumper::Dumper($params{save});
- close STATE;
- $self->debug(sprintf "saved %s to %s",
- Data::Dumper::Dumper($params{save}), $statefile);
-}
-
-sub load_state {
- my $self = shift;
- my %params = @_;
- my $extension = "";
- my $statefile = sprintf "%s/%s_%s",
- $params{statefilesdir}, $params{hostname}, $params{mode};
- $extension .= $params{differenciator} ? "_".$params{differenciator} : "";
- $extension .= $params{socket} ? "_".$params{socket} : "";
- $extension .= $params{port} ? "_".$params{port} : "";
- $extension .= $params{database} ? "_".$params{database} : "";
- $extension .= $params{tablespace} ? "_".$params{tablespace} : "";
- $extension .= $params{datafile} ? "_".$params{datafile} : "";
- $extension .= $params{name} ? "_".$params{name} : "";
- $extension =~ s/\//_/g;
- $extension =~ s/\(/_/g;
- $extension =~ s/\)/_/g;
- $extension =~ s/\*/_/g;
- $extension =~ s/\s/_/g;
- $statefile .= $extension;
- $statefile = lc $statefile;
- if ( -f $statefile) {
- our $VAR1;
- eval {
- require $statefile;
- };
- if($@) {
-printf "rumms\n";
- }
- $self->debug(sprintf "load %s", Data::Dumper::Dumper($VAR1));
- return $VAR1;
- } else {
- return undef;
- }
-}
-
-sub valdiff {
- my $self = shift;
- my $pparams = shift;
- my %params = %{$pparams};
- my @keys = @_;
- my $last_values = $self->load_state(%params) || eval {
- my $empty_events = {};
- foreach (@keys) {
- $empty_events->{$_} = 0;
- }
- $empty_events->{timestamp} = 0;
- $empty_events;
- };
- foreach (@keys) {
- $self->{'delta_'.$_} = $self->{$_} - $last_values->{$_};
- $self->debug(sprintf "delta_%s %f", $_, $self->{'delta_'.$_});
- }
- $self->{'delta_timestamp'} = time - $last_values->{timestamp};
- $params{save} = eval {
- my $empty_events = {};
- foreach (@keys) {
- $empty_events->{$_} = $self->{$_};
- }
- $empty_events->{timestamp} = time;
- $empty_events;
- };
- $self->save_state(%params);
-}
-
-sub requires_version {
- my $self = shift;
- my $version = shift;
- my @instances = DBD::MySQL::Cluster::return_clusters();
- my $instversion = $instances[0]->{version};
- if (! $self->version_is_minimum($version)) {
- $self->add_nagios($ERRORS{UNKNOWN},
- sprintf "not implemented/possible for MySQL release %s", $instversion);
- }
-}
-
-sub version_is_minimum {
- # the current version is newer or equal
- my $self = shift;
- my $version = shift;
- my $newer = 1;
- my @instances = DBD::MySQL::Cluster::return_clusters();
- my @v1 = map { $_ eq "x" ? 0 : $_ } split(/\./, $version);
- my @v2 = split(/\./, $instances[0]->{version});
- if (scalar(@v1) > scalar(@v2)) {
- push(@v2, (0) x (scalar(@v1) - scalar(@v2)));
- } elsif (scalar(@v2) > scalar(@v1)) {
- push(@v1, (0) x (scalar(@v2) - scalar(@v1)));
- }
- foreach my $pos (0..$#v1) {
- if ($v2[$pos] > $v1[$pos]) {
- $newer = 1;
- last;
- } elsif ($v2[$pos] < $v1[$pos]) {
- $newer = 0;
- last;
- }
- }
- #printf STDERR "check if %s os minimum %s\n", join(".", @v2), join(".", @v1);
- return $newer;
-}
-
-sub instance_rac {
- my $self = shift;
- my @instances = DBD::MySQL::Cluster::return_clusters();
- return (lc $instances[0]->{parallel} eq "yes") ? 1 : 0;
-}
-
-sub instance_thread {
- my $self = shift;
- my @instances = DBD::MySQL::Cluster::return_clusters();
- return $instances[0]->{thread};
-}
-
-sub windows_cluster {
- my $self = shift;
- my @instances = DBD::MySQL::Cluster::return_clusters();
- if ($instances[0]->{os} =~ /Win/i) {
- return 1;
- } else {
- return 0;
- }
-}
-
-sub system_vartmpdir {
- my $self = shift;
- if ($^O =~ /MSWin/) {
- return $self->system_tmpdir();
- } else {
- return "/var/tmp/check_mysql_health";
- }
-}
-
-sub system_oldvartmpdir {
- my $self = shift;
- return "/tmp";
-}
-
-sub system_tmpdir {
- my $self = shift;
- if ($^O =~ /MSWin/) {
- return $ENV{TEMP} if defined $ENV{TEMP};
- return $ENV{TMP} if defined $ENV{TMP};
- return File::Spec->catfile($ENV{windir}, 'Temp')
- if defined $ENV{windir};
- return 'C:\Temp';
- } else {
- return "/tmp";
- }
-}
-
-
-package DBD::MySQL::Cluster::Node;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Cluster);
-
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- mode => $params{mode},
- timeout => $params{timeout},
- type => $params{type},
- id => $params{id},
- status => $params{status},
- };
- bless $self, $class;
- $self->init(%params);
- if ($params{type} eq "NDB") {
- bless $self, "DBD::MySQL::Cluster::Node::NDB";
- $self->init(%params);
- }
- return $self;
-}
-
-sub init {
- my $self = shift;
- my %params = @_;
- if ($self->{status} =~ /@(\d+\.\d+\.\d+\.\d+)\s/) {
- $self->{addr} = $1;
- $self->{connected} = 1;
- } elsif ($self->{status} =~ /accepting connect from (\d+\.\d+\.\d+\.\d+)/) {
- $self->{addr} = $1;
- $self->{connected} = 0;
- }
- if ($self->{status} =~ /starting,/) {
- $self->{status} = "starting";
- } elsif ($self->{status} =~ /shutting,/) {
- $self->{status} = "shutting";
- } else {
- $self->{status} = $self->{connected} ? "running" : "dead";
- }
-}
-
-
-package DBD::MySQL::Cluster::Node::NDB;
-
-use strict;
-
-our @ISA = qw(DBD::MySQL::Cluster::Node);
-
-
-sub init {
- my $self = shift;
- my %params = @_;
- if ($self->{status} =~ /Nodegroup:\s*(\d+)/) {
- $self->{nodegroup} = $1;
- }
- $self->{master} = ($self->{status} =~ /Master\)/) ? 1 : 0;
-}
-
-
-package Extraopts;
-
-use strict;
-use File::Basename;
-use Data::Dumper;
-
-sub new {
- my $class = shift;
- my %params = @_;
- my $self = {
- file => $params{file},
- commandline => $params{commandline},
- config => {},
- section => 'default_no_section',
- };
- bless $self, $class;
- $self->prepare_file_and_section();
- $self->init();
- return $self;
-}
-
-sub prepare_file_and_section {
- my $self = shift;
- if (! defined $self->{file}) {
- # ./check_stuff --extra-opts
- $self->{section} = basename($0);
- $self->{file} = $self->get_default_file();
- } elsif ($self->{file} =~ /^[^@]+$/) {
- # ./check_stuff --extra-opts=special_opts
- $self->{section} = $self->{file};
- $self->{file} = $self->get_default_file();
- } elsif ($self->{file} =~ /^@(.*)/) {
- # ./check_stuff --extra-opts=@/etc/myconfig.ini
- $self->{section} = basename($0);
- $self->{file} = $1;
- } elsif ($self->{file} =~ /^(.*?)@(.*)/) {
- # ./check_stuff --extra-opts=special_opts@/etc/myconfig.ini
- $self->{section} = $1;
- $self->{file} = $2;
- }
-}
-
-sub get_default_file {
- my $self = shift;
- foreach my $default (qw(/etc/nagios/plugins.ini
- /usr/local/nagios/etc/plugins.ini
- /usr/local/etc/nagios/plugins.ini
- /etc/opt/nagios/plugins.ini
- /etc/nagios-plugins.ini
- /usr/local/etc/nagios-plugins.ini
- /etc/opt/nagios-plugins.ini)) {
- if (-f $default) {
- return $default;
- }
- }
- return undef;
-}
-
-sub init {
- my $self = shift;
- if (! defined $self->{file}) {
- $self->{errors} = sprintf 'no extra-opts file specified and no default file found';
- } elsif (! -f $self->{file}) {
- $self->{errors} = sprintf 'could not open %s', $self->{file};
- } else {
- my $data = do { local (@ARGV, $/) = $self->{file}; <> };
- my $in_section = 'default_no_section';
- foreach my $line (split(/\n/, $data)) {
- if ($line =~ /\[(.*)\]/) {
- $in_section = $1;
- } elsif ($line =~ /(.*?)\s*=\s*(.*)/) {
- $self->{config}->{$in_section}->{$1} = $2;
- }
- }
- }
-}
-
-sub is_valid {
- my $self = shift;
- return ! exists $self->{errors};
-}
-
-sub overwrite {
- my $self = shift;
- my %commandline = ();
- if (scalar(keys %{$self->{config}->{default_no_section}}) > 0) {
- foreach (keys %{$self->{config}->{default_no_section}}) {
- $commandline{$_} = $self->{config}->{default_no_section}->{$_};
- }
- }
- if (exists $self->{config}->{$self->{section}}) {
- foreach (keys %{$self->{config}->{$self->{section}}}) {
- $commandline{$_} = $self->{config}->{$self->{section}}->{$_};
- }
- }
- foreach (keys %commandline) {
- if (! exists $self->{commandline}->{$_}) {
- $self->{commandline}->{$_} = $commandline{$_};
- }
- }
-}
-
-
-
-package main;
-
-use strict;
-use Getopt::Long qw(:config no_ignore_case);
-use File::Basename;
-use lib dirname($0);
-
-
-
-use vars qw ($PROGNAME $REVISION $CONTACT $TIMEOUT $STATEFILESDIR $needs_restart %commandline);
-
-$PROGNAME = "check_mysql_health";
-$REVISION = '$Revision: 2.1.7 $';
-$CONTACT = 'gerhard.lausser@consol.de';
-$TIMEOUT = 60;
-$STATEFILESDIR = '/var/tmp/check_mysql_health';
-$needs_restart = 0;
-
-my @modes = (
- ['server::connectiontime',
- 'connection-time', undef,
- 'Time to connect to the server' ],
- ['server::uptime',
- 'uptime', undef,
- 'Time the server is running' ],
- ['server::instance::connectedthreads',
- 'threads-connected', undef,
- 'Number of currently open connections' ],
- ['server::instance::threadcachehitrate',
- 'threadcache-hitrate', undef,
- 'Hit rate of the thread-cache' ],
- ['server::instance::createdthreads',
- 'threads-created', undef,
- 'Number of threads created per sec' ],
- ['server::instance::runningthreads',
- 'threads-running', undef,
- 'Number of currently running threads' ],
- ['server::instance::cachedthreads',
- 'threads-cached', undef,
- 'Number of currently cached threads' ],
- ['server::instance::abortedconnects',
- 'connects-aborted', undef,
- 'Number of aborted connections per sec' ],
- ['server::instance::abortedclients',
- 'clients-aborted', undef,
- 'Number of aborted connections (because the client died) per sec' ],
- ['server::instance::replication::slavelag',
- 'slave-lag', ['replication-slave-lag'],
- 'Seconds behind master' ],
- ['server::instance::replication::slaveiorunning',
- 'slave-io-running', ['replication-slave-io-running'],
- 'Slave io running: Yes' ],
- ['server::instance::replication::slavesqlrunning',
- 'slave-sql-running', ['replication-slave-sql-running'],
- 'Slave sql running: Yes' ],
- ['server::instance::querycachehitrate',
- 'qcache-hitrate', ['querycache-hitrate'],
- 'Query cache hitrate' ],
- ['server::instance::querycachelowmemprunes',
- 'qcache-lowmem-prunes', ['querycache-lowmem-prunes'],
- 'Query cache entries pruned because of low memory' ],
- ['server::instance::myisam::keycache::hitrate',
- 'keycache-hitrate', ['myisam-keycache-hitrate'],
- 'MyISAM key cache hitrate' ],
- ['server::instance::innodb::bufferpool::hitrate',
- 'bufferpool-hitrate', ['innodb-bufferpool-hitrate'],
- 'InnoDB buffer pool hitrate' ],
- ['server::instance::innodb::bufferpool::waitfree',
- 'bufferpool-wait-free', ['innodb-bufferpool-wait-free'],
- 'InnoDB buffer pool waits for clean page available' ],
- ['server::instance::innodb::logwaits',
- 'log-waits', ['innodb-log-waits'],
- 'InnoDB log waits because of a too small log buffer' ],
- ['server::instance::tablecachehitrate',
- 'tablecache-hitrate', undef,
- 'Table cache hitrate' ],
- ['server::instance::tablelockcontention',
- 'table-lock-contention', undef,
- 'Table lock contention' ],
- ['server::instance::tableindexusage',
- 'index-usage', undef,
- 'Usage of indices' ],
- ['server::instance::tabletmpondisk',
- 'tmp-disk-tables', undef,
- 'Percent of temp tables created on disk' ],
- ['server::instance::needoptimize',
- 'table-fragmentation', undef,
- 'Show tables which should be optimized' ],
- ['server::instance::openfiles',
- 'open-files', undef,
- 'Percent of opened files' ],
- ['server::instance::slowqueries',
- 'slow-queries', undef,
- 'Slow queries' ],
- ['server::instance::longprocs',
- 'long-running-procs', undef,
- 'long running processes' ],
- ['cluster::ndbdrunning',
- 'cluster-ndbd-running', undef,
- 'ndnd nodes are up and running' ],
- ['server::sql',
- 'sql', undef,
- 'any sql command returning a single number' ],
-);
-
-# rrd data store names are limited to 19 characters
-my %labels = (
- bufferpool_hitrate => {
- groundwork => 'bp_hitrate',
- },
- bufferpool_hitrate_now => {
- groundwork => 'bp_hitrate_now',
- },
- bufferpool_free_waits_rate => {
- groundwork => 'bp_freewaits',
- },
- innodb_log_waits_rate => {
- groundwork => 'inno_log_waits',
- },
- keycache_hitrate => {
- groundwork => 'kc_hitrate',
- },
- keycache_hitrate_now => {
- groundwork => 'kc_hitrate_now',
- },
- threads_created_per_sec => {
- groundwork => 'thrds_creat_per_s',
- },
- connects_aborted_per_sec => {
- groundwork => 'conn_abrt_per_s',
- },
- clients_aborted_per_sec => {
- groundwork => 'clnt_abrt_per_s',
- },
- thread_cache_hitrate => {
- groundwork => 'tc_hitrate',
- },
- thread_cache_hitrate_now => {
- groundwork => 'tc_hitrate_now',
- },
- qcache_lowmem_prunes_rate => {
- groundwork => 'qc_lowm_prnsrate',
- },
- slow_queries_rate => {
- groundwork => 'slow_q_rate',
- },
- tablecache_hitrate => {
- groundwork => 'tac_hitrate',
- },
- tablecache_fillrate => {
- groundwork => 'tac_fillrate',
- },
- tablelock_contention => {
- groundwork => 'tl_contention',
- },
- tablelock_contention_now => {
- groundwork => 'tl_contention_now',
- },
- pct_tmp_table_on_disk => {
- groundwork => 'tmptab_on_disk',
- },
- pct_tmp_table_on_disk_now => {
- groundwork => 'tmptab_on_disk_now',
- },
-);
-
-sub print_usage () {
- print <<EOUS;
- Usage:
- $PROGNAME [-v] [-t <timeout>] [[--hostname <hostname>]
- [--port <port> | --socket <socket>]
- --username <username> --password <password>] --mode <mode>
- [--method mysql]
- $PROGNAME [-h | --help]
- $PROGNAME [-V | --version]
-
- Options:
- --hostname
- the database server's hostname
- --port
- the database's port. (default: 3306)
- --socket
- the database's unix socket.
- --username
- the mysql db user
- --password
- the mysql db user's password
- --database
- the database's name. (default: information_schema)
- --warning
- the warning range
- --critical
- the critical range
- --mode
- the mode of the plugin. select one of the following keywords:
-EOUS
- my $longest = length ((reverse sort {length $a <=> length $b} map { $_->[1] } @modes)[0]);
- my $format = " %-".
- (length ((reverse sort {length $a <=> length $b} map { $_->[1] } @modes)[0])).
- "s\t(%s)\n";
- foreach (@modes) {
- printf $format, $_->[1], $_->[3];
- }
- printf "\n";
- print <<EOUS;
- --name
- the name of something that needs to be further specified,
- currently only used for sql statements
- --name2
- if name is a sql statement, this statement would appear in
- the output and the performance data. This can be ugly, so
- name2 can be used to appear instead.
- --regexp
- if this parameter is used, name will be interpreted as a
- regular expression.
- --units
- one of %, KB, MB, GB. This is used for a better output of mode=sql
- and for specifying thresholds for mode=tablespace-free
- --labelformat
- one of pnp4nagios (which is the default) or groundwork.
- It is used to shorten performance data labels to 19 characters.
-
- In mode sql you can url-encode the statement so you will not have to mess
- around with special characters in your Nagios service definitions.
- Instead of
- --name="select count(*) from v\$session where status = 'ACTIVE'"
- you can say
- --name=select%20count%28%2A%29%20from%20v%24session%20where%20status%20%3D%20%27ACTIVE%27
- For your convenience you can call check_mysql_health with the --mode encode
- option and it will encode the standard input.
-
- You can find the full documentation at
- http://www.consol.de/opensource/nagios/check-mysql-health
-
-EOUS
-
-}
-
-sub print_help () {
- print "Copyright (c) 2009 Gerhard Lausser\n\n";
- print "\n";
- print " Check various parameters of MySQL databases \n";
- print "\n";
- print_usage();
- support();
-}
-
-
-sub print_revision ($$) {
- my $commandName = shift;
- my $pluginRevision = shift;
- $pluginRevision =~ s/^\$Revision: //;
- $pluginRevision =~ s/ \$\s*$//;
- print "$commandName ($pluginRevision)\n";
- print "This nagios plugin comes with ABSOLUTELY NO WARRANTY. You may redistribute\ncopies of this plugin under the terms of the GNU General Public License.\n";
-}
-
-sub support () {
- my $support='Send email to gerhard.lausser@consol.de if you have questions\nregarding use of this software. \nPlease include version information with all correspondence (when possible,\nuse output from the --version option of the plugin itself).\n';
- $support =~ s/@/\@/g;
- $support =~ s/\\n/\n/g;
- print $support;
-}
-
-sub contact_author ($$) {
- my $item = shift;
- my $strangepattern = shift;
- if ($commandline{verbose}) {
- printf STDERR
- "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n".
- "You found a line which is not recognized by %s\n".
- "This means, certain components of your system cannot be checked.\n".
- "Please contact the author %s and\nsend him the following output:\n\n".
- "%s /%s/\n\nThank you!\n".
- "++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++\n",
- $PROGNAME, $CONTACT, $item, $strangepattern;
- }
-}
-
-%commandline = ();
-my @params = (
- "timeout|t=i",
- "version|V",
- "help|h",
- "verbose|v",
- "debug|d",
- "hostname|H=s",
- "database=s",
- "port|P=s",
- "socket|S=s",
- "username|u=s",
- "password|p=s",
- "mode|m=s",
- "name=s",
- "name2=s",
- "regexp",
- "perfdata",
- "warning=s",
- "critical=s",
- "dbthresholds:s",
- "absolute|a",
- "environment|e=s%",
- "method=s",
- "runas|r=s",
- "scream",
- "shell",
- "eyecandy",
- "encode",
- "units=s",
- "lookback=i",
- "3",
- "statefilesdir=s",
- "with-mymodules-dyn-dir=s",
- "report=s",
- "labelformat=s",
- "extra-opts:s");
-
-if (! GetOptions(\%commandline, @params)) {
- print_help();
- exit $ERRORS{UNKNOWN};
-}
-
-if (exists $commandline{'extra-opts'}) {
- # read the extra file and overwrite other parameters
- my $extras = Extraopts->new(file => $commandline{'extra-opts'}, commandline =>
- \%commandline);
- if (! $extras->is_valid()) {
- printf "extra-opts are not valid: %s\n", $extras->{errors};
- exit $ERRORS{UNKNOWN};
- } else {
- $extras->overwrite();
- }
-}
-
-if (exists $commandline{version}) {
- print_revision($PROGNAME, $REVISION);
- exit $ERRORS{OK};
-}
-
-if (exists $commandline{help}) {
- print_help();
- exit $ERRORS{OK};
-} elsif (! exists $commandline{mode}) {
- printf "Please select a mode\n";
- print_help();
- exit $ERRORS{OK};
-}
-
-if ($commandline{mode} eq "encode") {
- my $input = <>;
- chomp $input;
- $input =~ s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
- printf "%s\n", $input;
- exit $ERRORS{OK};
-}
-
-if (exists $commandline{3}) {
- $ENV{NRPE_MULTILINESUPPORT} = 1;
-}
-
-if (exists $commandline{timeout}) {
- $TIMEOUT = $commandline{timeout};
-}
-
-if (exists $commandline{verbose}) {
- $DBD::MySQL::Server::verbose = exists $commandline{verbose};
-}
-
-if (exists $commandline{scream}) {
-# $DBD::MySQL::Server::hysterical = exists $commandline{scream};
-}
-
-if (exists $commandline{method}) {
- # snmp or mysql cmdline
-} else {
- $commandline{method} = "dbi";
-}
-
-if (exists $commandline{report}) {
- # short, long, html
-} else {
- $commandline{report} = "long";
-}
-
-if (exists $commandline{labelformat}) {
- # groundwork
-} else {
- $commandline{labelformat} = "pnp4nagios";
-}
-
-if (exists $commandline{'with-mymodules-dyn-dir'}) {
- $DBD::MySQL::Server::my_modules_dyn_dir = $commandline{'with-mymodules-dyn-dir'};
-} else {
- $DBD::MySQL::Server::my_modules_dyn_dir = '/usr/local/nagios/libexec';
-}
-
-if (exists $commandline{environment}) {
- # if the desired environment variable values are different from
- # the environment of this running script, then a restart is necessary.
- # because setting $ENV does _not_ change the environment of the running script.
- foreach (keys %{$commandline{environment}}) {
- if ((! $ENV{$_}) || ($ENV{$_} ne $commandline{environment}->{$_})) {
- $needs_restart = 1;
- $ENV{$_} = $commandline{environment}->{$_};
- printf STDERR "new %s=%s forces restart\n", $_, $ENV{$_}
- if $DBD::MySQL::Server::verbose;
- }
- }
- # e.g. called with --runas dbnagio. shlib_path environment variable is stripped
- # during the sudo.
- # so the perl interpreter starts without a shlib_path. but --runas cares for
- # a --environment shlib_path=...
- # so setting the environment variable in the code above and restarting the
- # perl interpreter will help it find shared libs
-}
-
-if (exists $commandline{runas}) {
- # remove the runas parameter
- # exec sudo $0 ... the remaining parameters
- $needs_restart = 1;
- # if the calling script has a path for shared libs and there is no --environment
- # parameter then the called script surely needs the variable too.
- foreach my $important_env qw(LD_LIBRARY_PATH SHLIB_PATH
- ORACLE_HOME TNS_ADMIN ORA_NLS ORA_NLS33 ORA_NLS10) {
- if ($ENV{$important_env} && ! scalar(grep { /^$important_env=/ }
- keys %{$commandline{environment}})) {
- $commandline{environment}->{$important_env} = $ENV{$important_env};
- printf STDERR "add important --environment %s=%s\n",
- $important_env, $ENV{$important_env} if $DBD::MySQL::Server::verbose;
- }
- }
-}
-
-if ($needs_restart) {
- my @newargv = ();
- my $runas = undef;
- if (exists $commandline{runas}) {
- $runas = $commandline{runas};
- delete $commandline{runas};
- }
- foreach my $option (keys %commandline) {
- if (grep { /^$option/ && /=/ } @params) {
- if (ref ($commandline{$option}) eq "HASH") {
- foreach (keys %{$commandline{$option}}) {
- push(@newargv, sprintf "--%s", $option);
- push(@newargv, sprintf "%s=%s", $_, $commandline{$option}->{$_});
- }
- } else {
- push(@newargv, sprintf "--%s", $option);
- push(@newargv, sprintf "%s", $commandline{$option});
- }
- } else {
- push(@newargv, sprintf "--%s", $option);
- }
- }
- if ($runas) {
- exec "sudo", "-S", "-u", $runas, $0, @newargv;
- } else {
- exec $0, @newargv;
- # this makes sure that even a SHLIB or LD_LIBRARY_PATH are set correctly
- # when the perl interpreter starts. Setting them during runtime does not
- # help loading e.g. libclntsh.so
- }
- exit;
-}
-
-if (exists $commandline{shell}) {
- # forget what you see here.
- system("/bin/sh");
-}
-
-if (! exists $commandline{statefilesdir}) {
- if (exists $ENV{OMD_ROOT}) {
- $commandline{statefilesdir} = $ENV{OMD_ROOT}."/var/tmp/check_mysql_health";
- } else {
- $commandline{statefilesdir} = $STATEFILESDIR;
- }
-}
-
-if (exists $commandline{name}) {
- # objects can be encoded like an url
- # with s/([^A-Za-z0-9])/sprintf("%%%02X", ord($1))/seg;
- if (($commandline{mode} ne "sql") ||
- (($commandline{mode} eq "sql") &&
- ($commandline{name} =~ /select%20/i))) { # protect ... like '%cac%' ... from decoding
- $commandline{name} =~ s/\%([A-Fa-f0-9]{2})/pack('C', hex($1))/seg;
- }
- if ($commandline{name} =~ /^0$/) {
- # without this, $params{selectname} would be treated like undef
- $commandline{name} = "00";
- }
-}
-
-$SIG{'ALRM'} = sub {
- printf "UNKNOWN - %s timed out after %d seconds\n", $PROGNAME, $TIMEOUT;
- exit $ERRORS{UNKNOWN};
-};
-alarm($TIMEOUT);
-
-my $nagios_level = $ERRORS{UNKNOWN};
-my $nagios_message = "";
-my $perfdata = "";
-if ($commandline{mode} =~ /^my-([^\-.]+)/) {
- my $param = $commandline{mode};
- $param =~ s/\-/::/g;
- push(@modes, [$param, $commandline{mode}, undef, 'my extension']);
-} elsif ((! grep { $commandline{mode} eq $_ } map { $_->[1] } @modes) &&
- (! grep { $commandline{mode} eq $_ } map { defined $_->[2] ? @{$_->[2]} : () } @modes)) {
- printf "UNKNOWN - mode %s\n", $commandline{mode};
- print_usage();
- exit 3;
-}
-
-my %params = (
- timeout => $TIMEOUT,
- mode => (
- map { $_->[0] }
- grep {
- ($commandline{mode} eq $_->[1]) ||
- ( defined $_->[2] && grep { $commandline{mode} eq $_ } @{$_->[2]})
- } @modes
- )[0],
- cmdlinemode => $commandline{mode},
- method => $commandline{method} ||
- $ENV{NAGIOS__SERVICEMYSQL_METH} ||
- $ENV{NAGIOS__HOSTMYSQL_METH} || 'dbi',
- hostname => $commandline{hostname} ||
- $ENV{NAGIOS__SERVICEMYSQL_HOST} ||
- $ENV{NAGIOS__HOSTMYSQL_HOST} || 'localhost',
- database => $commandline{database} ||
- $ENV{NAGIOS__SERVICEMYSQL_DATABASE} ||
- $ENV{NAGIOS__HOSTMYSQL_DATABASE} || 'information_schema',
- port => $commandline{port} || (($commandline{mode} =~ /^cluster/) ?
- ($ENV{NAGIOS__SERVICENDBMGM_PORT} || $ENV{NAGIOS__HOSTNDBMGM_PORT} || 1186) :
- ($ENV{NAGIOS__SERVICEMYSQL_PORT} || $ENV{NAGIOS__HOSTMYSQL_PORT} || 3306)),
- socket => $commandline{socket} ||
- $ENV{NAGIOS__SERVICEMYSQL_SOCKET} ||
- $ENV{NAGIOS__HOSTMYSQL_SOCKET},
- username => $commandline{username} ||
- $ENV{NAGIOS__SERVICEMYSQL_USER} ||
- $ENV{NAGIOS__HOSTMYSQL_USER},
- password => $commandline{password} ||
- $ENV{NAGIOS__SERVICEMYSQL_PASS} ||
- $ENV{NAGIOS__HOSTMYSQL_PASS},
- warningrange => $commandline{warning},
- criticalrange => $commandline{critical},
- dbthresholds => $commandline{dbthresholds},
- absolute => $commandline{absolute},
- lookback => $commandline{lookback},
- selectname => $commandline{name} || $commandline{tablespace} || $commandline{datafile},
- regexp => $commandline{regexp},
- name => $commandline{name},
- name2 => $commandline{name2} || $commandline{name},
- units => $commandline{units},
- lookback => $commandline{lookback} || 0,
- eyecandy => $commandline{eyecandy},
- statefilesdir => $commandline{statefilesdir},
- verbose => $commandline{verbose},
- report => $commandline{report},
- labelformat => $commandline{labelformat},
-);
-
-my $server = undef;
-my $cluster = undef;
-
-if ($params{mode} =~ /^(server|my)/) {
- $server = DBD::MySQL::Server->new(%params);
- $server->nagios(%params);
- $server->calculate_result(\%labels);
- $nagios_message = $server->{nagios_message};
- $nagios_level = $server->{nagios_level};
- $perfdata = $server->{perfdata};
-} elsif ($params{mode} =~ /^cluster/) {
- $cluster = DBD::MySQL::Cluster->new(%params);
- $cluster->nagios(%params);
- $cluster->calculate_result(\%labels);
- $nagios_message = $cluster->{nagios_message};
- $nagios_level = $cluster->{nagios_level};
- $perfdata = $cluster->{perfdata};
-}
-
-printf "%s - %s", $ERRORCODES{$nagios_level}, $nagios_message;
-printf " | %s", $perfdata if $perfdata;
-printf "\n";
-exit $nagios_level;
-
-
-__END__
-
-
diff --git a/files/plugins/check_openvpn_server.pl b/files/plugins/check_openvpn_server.pl
deleted file mode 100755
index b74ace89..00000000
--- a/files/plugins/check_openvpn_server.pl
+++ /dev/null
@@ -1,109 +0,0 @@
-#!/usr/bin/perl
-#
-# Filaname: check_openvpn
-# Created: 2012-06-15
-# Website: http://blog.kernelpicnic.net
-#
-# Description:
-# This script is for verifying the status of an OpenVPN daemon. It has been
-# written to integrate directly with Nagios / Opsview.
-#
-# Usage:
-# check_openvpn [OPTIONS]...
-#
-# -H, --hostname Host to check
-# -p, --port Port number to check
-# -h, --help Display help.
-#
-#############################################################################
-
-# Custom library path for Nagis modules.
-use lib qw ( /usr/local/nagios/perl/lib );
-
-# Enforce sanity.
-use strict;
-use warnings;
-
-# Required modules.
-use Getopt::Long qw(:config no_ignore_case);
-use Nagios::Plugin;
-use IO::Socket;
-
-# Define defaults.
-my $help = 0;
-my $timeout = 5;
-
-# Ensure required variables are set.
-my($hostname, $port);
-
-my $options = GetOptions(
- "hostname|H=s" => \$hostname,
- "timeout|t=s" => \$timeout,
- "port|p=s" => \$port,
- "help|h" => \$help,
-);
-
-# Check if help has been requested.
-if($help || !$hostname || !$port) {
-
- printf("\n");
- printf("Usage: check_openvpn [OPTIONS]...\n\n");
- printf(" -H, --hostname Host to check\n");
- printf(" -p, --port Port number to check\n");
- printf(" -h, --help This help page\n");
- printf(" -t, --timeout Socket timeout\n");
- printf("\n");
-
- exit(-1);
-
-}
-
-# Setup a new Nagios::Plugin object.
-my $nagios = Nagios::Plugin->new();
-
-# Define the check string to send to the OpenVPN server - as binary due
-# to non-printable characters.
-my $check_string = "001110000011001010010010011011101000000100010001110"
- ."100110110101010110011000000000000000000000000000000"
- ."0000000000";
-
-# Attempt to setup a socket to the specified host.
-my $host_sock = IO::Socket::INET->new(
- Proto => 'udp',
- PeerAddr => $hostname,
- PeerPort => $port,
-);
-
-# Ensure we have a socket.
-if(!$host_sock) {
- $nagios->nagios_exit(UNKNOWN, "Unable to bind socket");
-}
-
-# Fire off the check request.
-$host_sock->send(pack("B*", $check_string));
-
-# Wait for $timeout for response for a response, otherwise, fail.
-my $response;
-
-eval {
-
- # Define how to handle ALARM.
- local $SIG{ALRM} = sub {
- $nagios->nagios_exit(CRITICAL, "No response received");
- };
-
- # Set the alarm for the given timeout value.
- alarm($timeout);
-
- # Check for response.
- $host_sock->recv($response, 1)
- or $nagios->nagios_exit(CRITICAL, "No response received");
-
- # Alright, response received, cancel alarm.
- alarm(0);
- 1;
-
-};
-
-# Reply received, return okay.
-$nagios->nagios_exit(OK, "Response received from host");
diff --git a/files/plugins/check_pop3_login b/files/plugins/check_pop3_login
deleted file mode 100644
index 4eb29b88..00000000
--- a/files/plugins/check_pop3_login
+++ /dev/null
@@ -1,83 +0,0 @@
-#!/usr/bin/python
-# -*- coding: UTF-8 -*-
-# -*- Mode: Python -*-
-#
-# Copyright (C) 2006 Bertera Pietro <pietro@bertera.it>
-# Copyright (C) 2015 mh <mh@immerda.ch>
-# Response time monitoring with perfdata modification by Ivan Savcic <isavcic@gmail.com> and Milos Buncic, 2012.
-# Derived from: https://github.com/isavcic/check_imap_login
-
-# This file may be distributed and/or modified under the terms of
-# the GNU General Public License version 2 as published by
-# the Free Software Foundation.
-# This file is distributed without any warranty; without even the implied
-# warranty of merchantability or fitness for a particular purpose.
-
-import sys, os, poplib, getopt
-from time import time
-
-def usage():
- print sys.argv[0] + " -u <user> -p <password> -H <host> [-s] -w <warning threshold (sec)> -c <critical threshold (sec)>\n -s is for using POP3s"
-
-def main():
- try:
- opts, args = getopt.getopt(sys.argv[1:], "u:p:sH:w:c:")
- except getopt.GetoptError:
- usage()
- return 3
-
- user = host = password = use_ssl = warning = critical = None
-
- for o, a in opts:
- if o == "-u":
- user = a
- elif o == "-p":
- password = a
- elif o == "-s":
- use_ssl = True
- elif o == "-H":
- host = a
- elif o == "-w":
- warning = float(a)
- elif o == "-c":
- critical = float(a)
-
- if user == None or password == None or host == None or warning == None or critical == None:
- usage()
- return 1
-
- if use_ssl:
- M = poplib.POP3_SSL(host=host)
- else:
- M = poplib.POP3(host)
-
- timestamp = time()
-
- try:
- M.getwelcome()
- M.user(user)
- M.pass_(password)
- except Exception, e:
- print "CRITICAL POP3 Login Failed: %s" % e
- return 2
-
- M.quit()
-
- timestamp = time() - timestamp
-
- if timestamp < warning:
- status = "OK"
- exitcode = 0
- if timestamp >= warning:
- status = "WARNING"
- exitcode = 1
- if timestamp >= critical:
- status = "CRITICAL"
- exitcode = 2
-
- print '%s POP3 Login | response_time=%.3fs;%.3f;%.3f' % (status, timestamp, warning, critical)
-
- return exitcode
-
-if __name__ == "__main__":
- sys.exit(main())
diff --git a/files/pnp4nagios/action.gif b/files/pnp4nagios/action.gif
deleted file mode 100644
index 96571a40..00000000
--- a/files/pnp4nagios/action.gif
+++ /dev/null
Binary files differ
diff --git a/files/pnp4nagios/apache.conf b/files/pnp4nagios/apache.conf
deleted file mode 100644
index 816bf05c..00000000
--- a/files/pnp4nagios/apache.conf
+++ /dev/null
@@ -1,31 +0,0 @@
-# SAMPLE CONFIG SNIPPETS FOR APACHE WEB SERVER
-
-Alias /pnp4nagios "/usr/share/pnp4nagios/html"
-
-<Directory "/usr/share/pnp4nagios/html">
- AllowOverride None
- Order allow,deny
- Allow from all
- #
- # Use the same value as defined in nagios.conf
- #
- AuthName "Nagios Access"
- AuthType Basic
- AuthUserFile /etc/nagios3/htpasswd.users
- Require valid-user
- <IfModule mod_rewrite.c>
- # Turn on URL rewriting
- RewriteEngine On
- Options FollowSymLinks
- # Installation directory
- RewriteBase /pnp4nagios/
- # Protect application and system files from being viewed
- RewriteRule ^(application|modules|system) - [F,L]
- # Allow any files or directories that exist to be displayed directly
- RewriteCond %{REQUEST_FILENAME} !-f
- RewriteCond %{REQUEST_FILENAME} !-d
- # Rewrite all other URLs to index.php/URL
- RewriteRule .* index.php/$0 [PT,L]
- </IfModule>
- DirectoryIndex index.php
-</Directory>
diff --git a/files/pnp4nagios/npcd b/files/pnp4nagios/npcd
deleted file mode 100644
index 64b3d4d9..00000000
--- a/files/pnp4nagios/npcd
+++ /dev/null
@@ -1,8 +0,0 @@
-# Default settings for the NPCD init script.
-
-# Should NPCD be started? ("yes" to enable)
-RUN="yes"
-
-# Additional options that are passed to the daemon.
-DAEMON_OPTS="-d -f /etc/pnp4nagios/npcd.cfg"
-
diff --git a/files/pnp4nagios/pnp4nagios-popup-templates.cfg b/files/pnp4nagios/pnp4nagios-popup-templates.cfg
deleted file mode 100644
index de17d841..00000000
--- a/files/pnp4nagios/pnp4nagios-popup-templates.cfg
+++ /dev/null
@@ -1,31 +0,0 @@
-# http://docs.pnp4nagios.org/de/pnp-0.6/webfe
-
-define host {
- name host-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
-define service {
- name srv-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$' class='tips' rel='/pnp4nagios/index.php/popup?host=$HOSTNAME$&srv=$SERVICEDESC$
- register 0
-}
-
-# templates for explicit use, i.e.
-# use => 'generic-host-pnp'
-
-define host {
- name generic-host-pnp
- use generic-host,host-pnp
-# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
-define service {
- name generic-service-pnp
- use generic-service,srv-pnp
-# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
diff --git a/files/pnp4nagios/pnp4nagios-templates.cfg b/files/pnp4nagios/pnp4nagios-templates.cfg
deleted file mode 100644
index 64c51865..00000000
--- a/files/pnp4nagios/pnp4nagios-templates.cfg
+++ /dev/null
@@ -1,33 +0,0 @@
-# http://docs.pnp4nagios.org/de/pnp-0.6/webfe
-
-# templates for additional use, i.e.
-# use => 'generic-host,host-pnp'
-define host {
- name host-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
-define service {
- name srv-pnp
- action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=$SERVICEDESC$
- register 0
-}
-
-# templates for explicit use, i.e.
-# use => 'generic-host-pnp'
-
-define host {
- name generic-host-pnp
- use generic-host,host-pnp
-# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
-define service {
- name generic-service-pnp
- use generic-service,srv-pnp
-# action_url /pnp4nagios/index.php/graph?host=$HOSTNAME$&srv=_HOST_
- register 0
-}
-
diff --git a/files/pnp4nagios/status-header.ssi b/files/pnp4nagios/status-header.ssi
deleted file mode 100644
index 472be3a2..00000000
--- a/files/pnp4nagios/status-header.ssi
+++ /dev/null
@@ -1,8 +0,0 @@
-<script src="/pnp4nagios/media/js/jquery-min.js" type="text/javascript"></script>
-<script src="/pnp4nagios/media/js/jquery.cluetip.js" type="text/javascript"></script>
-<script type="text/javascript">
-$(document).ready(function() {
- $('a.tips').cluetip({ajaxCache: false, dropShadow: false,showTitle: false });
-});
-</script>
-