/****************************************************************************** * Icinga 2 * * Copyright (C) 2012-2015 Icinga Development Team (http://www.icinga.org) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software Foundation * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ******************************************************************************/ template CheckCommand "ping-common" { import "plugin-check-command" command = [ PluginDir + "/check_ping" ] arguments = { "-H" = "$ping_address$" "-w" = "$ping_wrta$,$ping_wpl$%" "-c" = "$ping_crta$,$ping_cpl$%" "-p" = "$ping_packets$" "-t" = "$ping_timeout$" } vars.ping_wrta = 100 vars.ping_wpl = 5 vars.ping_crta = 200 vars.ping_cpl = 15 } object CheckCommand "ping4" { import "ping-common" command += [ "-4" ] vars.ping_address = "$address$" } object CheckCommand "ping6" { import "ping-common" command += [ "-6" ] vars.ping_address = "$address6$" } object CheckCommand "hostalive" { import "ping4" vars.ping_wrta = 3000.0 vars.ping_wpl = 80 vars.ping_crta = 5000.0 vars.ping_cpl = 100 } template CheckCommand "fping-common" { import "plugin-check-command" command = [ PluginDir + "/check_fping", "$fping_address$" ] arguments = { "-w" = "$fping_wrta$,$fping_wpl$%" "-c" = "$fping_crta$,$fping_cpl$%" "-n" = "$fping_number$" "-i" = "$fping_interval$" "-b" = "$fping_bytes$" "-T" = "$fping_target_timeout$" "-S" = "$fping_source_ip$" "-I" = "$fping_source_interface$" } vars.fping_wrta = 100 vars.fping_wpl = 5 vars.fping_crta = 200 vars.fping_cpl = 15 vars.fping_number = 5 vars.fping_interval = 500 } object CheckCommand "fping4" { import "fping-common" command += [ "-4" ] vars.fping_address = "$address$" } object CheckCommand "fping6" { import "fping-common" command += [ "-6" ] vars.fping_address = "$address6$" } object CheckCommand "dummy" { import "plugin-check-command" command = [ PluginDir + "/check_dummy", "$dummy_state$", "$dummy_text$" ] vars.dummy_state = 0 vars.dummy_text = "Check was successful." } object CheckCommand "passive" { import "dummy" vars.dummy_state = 3 vars.dummy_text = "No Passive Check Result Received." } object CheckCommand "tcp" { import "plugin-check-command" command = [ PluginDir + "/check_tcp", "-H", "$tcp_address$", "-p", "$tcp_port$" ] vars.tcp_address = "$address$" } object CheckCommand "ssl" { import "plugin-check-command" command = [ PluginDir + "/check_tcp" ] arguments = { "-H" = "$ssl_address$" "-p" = "$ssl_port$" "--ssl" = { } "--timeout" = "$ssl_timeout$" "-D" = "$ssl_cert_valid_days_warn$,$ssl_cert_valid_days_critical$" } vars.ssl_address = "$address$" } object CheckCommand "udp" { import "plugin-check-command" command = [ PluginDir + "/check_udp", "-H", "$udp_address$", "-p", "$udp_port$" ] vars.udp_address = "$address$" } object CheckCommand "http" { import "plugin-check-command" command = [ PluginDir + "/check_http" ] arguments = { "-H" = "$http_vhost$" "-I" = "$http_address$" "-u" = "$http_uri$" "-p" = "$http_port$" "-S" = { set_if = "$http_ssl$" } "--sni" = { set_if = "$http_sni$" } "-C" = { value = "$http_certificate$" description = "Minimum number of days a certificate has to be valid. Port defaults to 443." } "-J" = { value = "$http_clientcert$" description = "Name of file contains the client certificate (PEM format)" } "-K" = { value = "$http_privatekey$" description = "Name of file contains the private key (PEM format)" } "-a" = { value = "$http_auth_pair$" description = "Username:password on sites with basic authentication" } "--no-body" = { set_if = "$http_ignore_body$" } "-w" = "$http_warn_time$" "-c" = "$http_critical_time$" "-e" = "$http_expect$" "-d" = { value = "$http_headerstring$" description = "String to expect in the response headers" } "-s" = { value = "$http_string$" description = "String to expect in the content" } "-P" = { value = "$http_post$" description = "URL encoded http POST data" } "-j" = { value = "$http_method$" description = "Set http method (for example: HEAD, OPTIONS, TRACE, PUT, DELETE)" } "-M" = { value = "$http_maxage$" description = "Warn if document is more than seconds old" } "-T" = { value = "$http_contenttype$" description = "Specify Content-Type header when POSTing" } "-l" = { set_if = "$http_linespan$" description = "Allow regex to span newline" order = 1 } "-r" = { value = "$http_expect_body_regex$" description = "Search page for regex" order = 2 } "-R" = { value = "$http_expect_body_eregi$" description = "Search page for case-insensitive regex" order = 2 } "--invert-regex" = { set_if = "$http_invertregex$" description = "Return CRITICAL if found, OK if not" } "-b" = { value = "$http_proxy_auth_pair$" description = "Username:password on proxy-servers with basic authentication" } "-A" = { value = "$http_useragent$" description = "String to be sent in http header as User Agent" } "-k" = { value = "$http_header$" description = "Any other tags to be sent in http header" } "-E" = { set_if = "$http_extendedperfdata$" description = "Print additional perfdata" } "-f" = { value = "$http_onredirect$" description = "How to handle redirect pages" } "-m" = { value = "$http_pagesize$" description = "Minim page size required:Maximum page size required" } "-t" = { value = "$http_timeout$" description = "Seconds before connection times out" } } vars.http_address = "$address$" vars.http_ssl = false vars.http_sni = false vars.http_linespan = false vars.http_invertregex = false } object CheckCommand "ftp" { import "plugin-check-command" command = [ PluginDir + "/check_ftp" ] arguments = { "-H" = "$ftp_address$" } vars.ftp_address = "$address$" } object CheckCommand "smtp" { import "plugin-check-command" command = [ PluginDir + "/check_smtp" ] arguments = { "-H" = "$smtp_address$" "-p" = "$smtp_port$" "-f" = "$smtp_mail_from$" } vars.smtp_address = "$address$" } object CheckCommand "ssmtp" { import "plugin-check-command" command = [ PluginDir + "/check_ssmtp" ] arguments = { "-H" = "$ssmtp_address$" "-p" = "$ssmtp_port$" } vars.ssmtp_address = "$address$" } object CheckCommand "imap" { import "plugin-check-command" command = [ PluginDir + "/check_imap" ] arguments = { "-H" = "$imap_address$" "-p" = "$imap_port$" } vars.imap_address = "$address$" } object CheckCommand "simap" { import "plugin-check-command" command = [ PluginDir + "/check_simap" ] arguments = { "-H" = "$simap_address$" "-p" = "$simap_port$" } vars.simap_address = "$address$" } object CheckCommand "pop" { import "plugin-check-command" command = [ PluginDir + "/check_pop" ] arguments = { "-H" = "$pop_address$" "-p" = "$pop_port$" } vars.pop_address = "$address$" } object CheckCommand "spop" { import "plugin-check-command" command = [ PluginDir + "/check_spop" ] arguments = { "-H" = "$spop_address$" "-p" = "$spop_port$" } vars.spop_address = "$address$" } object CheckCommand "ntp_time" { import "plugin-check-command" command = [ PluginDir + "/check_ntp_time" ] arguments = { "-H" = "$ntp_address$" } vars.ntp_address = "$address$" } object CheckCommand "ssh" { import "plugin-check-command" command = [ PluginDir + "/check_ssh" ] arguments = { "-p" = "$ssh_port$" "-t" = "$ssh_timeout$" "host" = { value = "$ssh_address$" skip_key = true order = 1 } } vars.ssh_address = "$address$" } object CheckCommand "disk" { import "plugin-check-command" command = [ PluginDir + "/check_disk" ] arguments = { "-w" = { value = "$disk_wfree$" description = "Exit with WARNING status if less than INTEGER units of disk are free or Exit with WARNING status if less than PERCENT of disk space is free" required = true } "-c" = { value = "$disk_cfree$" description = "Exit with CRITICAL status if less than INTEGER units of disk are free or Exit with CRITCAL status if less than PERCENT of disk space is free" required = true } "-W" = { value = "$disk_inode_wfree$" description = "Exit with WARNING status if less than PERCENT of inode space is free" } "-K" = { value = "$disk_inode_cfree$" description = "Exit with CRITICAL status if less than PERCENT of inode space is free" } "-p" = { value = "$disk_partition$" description = "Path or partition (may be repeated)" repeat_key = true } "-p_old" = { key = "-p" value = "$disk_partition$" } "-x" = { value = "$disk_partitions_excluded$" description = "Ignore device (only works if -p unspecified)" } "-x_old" = { key = "-x" value = "$disk_partition_excluded$" } "-C" = { set_if = "$disk_clear$" description = "Clear thresholds" } "-E" = { set_if = "$disk_exact_match$" description = "For paths or partitions specified with -p, only check for exact paths" } "-e" = { set_if = "$disk_errors_only$" description = "Display only devices/mountpoints with errors" } "-g" = { value = "$disk_group$" description = "Group paths. Thresholds apply to (free-)space of all partitions together" } "-k" = { set_if = "$disk_kilobytes$" description = "Same as --units kB" } "-l" = { set_if = "$disk_local$" description = " Only check local filesystems" } "-L" = { set_if = "$disk_stat_remote_fs$" description = "Only check local filesystems against thresholds. Yet call stat on remote filesystems to test if they are accessible (e.g. to detect Stale NFS Handles)" } "-M" = { set_if = "$disk_mountpoint$" description = "Display the mountpoint instead of the partition" } "-m" = { set_if = "$disk_megabytes$" description = "Same as --units MB" } "-A" = { set_if = "$disk_all$" description = "Explicitly select all paths. This is equivalent to -R .*" } "-R" = { value = "$disk_eregi_path$" description = "Case insensitive regular expression for path/partition (may be repeated)" repeat_key = true } "-r" = { value = "$disk_ereg_path$" description = "Regular expression for path or partition (may be repeated)" repeat_key = true } "-I" = { value = "$disk_ignore_eregi_path$" description = "Regular expression to ignore selected path/partition (case insensitive) (may be repeated)" repeat_key = true } "-i" = { value = "$disk_ignore_ereg_path$" description = "Regular expression to ignore selected path or partition (may be repeated)" repeat_key = true } "-t" = { value = "$disk_timeout$" description = "Seconds before connection times out (default: 10)" } "-u" = { value = "$disk_units$" description = "Choose bytes, kB, MB, GB, TB (default: MB)" } "-X" = { value = "$disk_exclude_type$" description = "Ignore all filesystems of indicated type (may be repeated)" repeat_key = true } } vars.disk_wfree = 20 vars.disk_cfree = 10 vars.disk_megabytes = true vars.disk_exclude_type = ["none", "tmpfs", "sysfs", "proc", "devtmpfs"] } object CheckCommand "users" { import "plugin-check-command" command = [ PluginDir + "/check_users" ] arguments = { "-w" = "$users_wgreater$" "-c" = "$users_cgreater$" } vars.users_wgreater = 20 vars.users_cgreater = 50 } object CheckCommand "procs" { import "plugin-check-command" command = [ PluginDir + "/check_procs" ] arguments = { "-w" = { value = "$procs_warning$" description = "Generate warning state if metric is outside this range" } "-c" = { value = "$procs_critical$" description = "Generate critical state if metric is outside this range" } "-m" = { value = "$procs_metric$" description = "Check thresholds against metric" } "-t" = { value = "$procs_timeout$" description = "Seconds before plugin times out" } "-T" = { set_if = "$procs_traditional$" description = "Filter own process the traditional way by PID instead of /proc/pid/exe" } "-s" = { value = "$procs_state$" description = "Only scan for processes that have one or more of the status flags you specify" } "-p" = { value = "$procs_ppid$" description = "Only scan for children of the parent process ID indicated" } "-z" = { value = "$procs_vsz$" description = "Only scan for processes with VSZ higher than indicated" } "-r" = { value = "$procs_rss$" description = "Only scan for processes with RSS higher than indicated" } "-P" = { value = "$procs_pcpu$" description = "Only scan for processes with PCPU higher than indicated" } "-u" = { value = "$procs_user$" description = "Only scan for processes with user name or ID indicated" } "-a" = { value = "$procs_argument$" description = "Only scan for processes with args that contain STRING" } "--ereg-argument-array" = { value = "$procs_argument_regex$" description = "Only scan for processes with args that contain the regex STRING" } "-C" = { value = "$procs_command$" description = "Only scan for exact matches of COMMAND (without path)" } "-k" = { set_if = "$procs_nokthreads$" description = "Only scan for non kernel threads" } } vars.procs_traditional = false vars.procs_nokthreads = false vars.procs_warning = 250 vars.procs_critical = 400 } object CheckCommand "swap" { import "plugin-check-command" command = [ PluginDir + "/check_swap" ] arguments = { "-w" = "$swap_wfree$%" "-c" = "$swap_cfree$%" } vars.swap_wfree = 50 vars.swap_cfree = 25 } object CheckCommand "load" { import "plugin-check-command" command = [ PluginDir + "/check_load" ] arguments = { "-w" = "$load_wload1$,$load_wload5$,$load_wload15$" "-c" = "$load_cload1$,$load_cload5$,$load_cload15$" } vars.load_wload1 = 5.0 vars.load_wload5 = 4.0 vars.load_wload15 = 3.0 vars.load_cload1 = 10.0 vars.load_cload5 = 6.0 vars.load_cload15 = 4.0 } object CheckCommand "snmp" { import "plugin-check-command" command = [ PluginDir + "/check_snmp" ] arguments = { "-H" = "$snmp_address$" "-o" = "$snmp_oid$" "-C" = "$snmp_community$" "-c" = "$snmp_crit$" "-w" = "$snmp_warn$" "-s" = "$snmp_string$" "-r" = "$snmp_ereg$" "-R" = "$snmp_eregi$" "-l" = "$snmp_label$" "-u" = "$snmp_units$" "-t" = "$snmp_timeout$" "--invert-search" = { set_if = "$snmp_invert_search$" description = "Invert search result and return CRITICAL if found" } } vars.snmp_address = "$address$" vars.snmp_community = "public" vars.snmp_invert_search = false vars.snmp_timeout = "10" } object CheckCommand "snmpv3" { import "plugin-check-command" command = [ PluginDir + "/check_snmp" ] arguments = { "-H" = "$snmpv3_address$" "-P" = 3 "--seclevel" = "authPriv" "-U" = "$snmpv3_user$" "-a" = "$snmpv3_auth_alg$" "-A" = "$snmpv3_auth_key$" "-x" = "$snmpv3_priv_alg$" "-X" = "$snmpv3_priv_key$" "-o" = "$snmpv3_oid$" "-c" = "$snmpv3_crit$" "-w" = "$snmpv3_warn$" "-l" = "$snmpv3_label$" } vars.snmpv3_address = "$address$" vars.snmpv3_auth_alg = "SHA" vars.snmpv3_priv_alg = "AES" } object CheckCommand "snmp-uptime" { import "snmp" vars.snmp_oid = "1.3.6.1.2.1.1.3.0" } object CheckCommand "apt" { import "plugin-check-command" command = [ PluginDir + "/check_apt" ] } object CheckCommand "dhcp" { import "plugin-check-command" command = [ PluginDir + "/check_dhcp" ] arguments = { "-s" = "$dhcp_serverip$" "-r" = "$dhcp_requestedip$" "-t" = "$dhcp_timeout$" "-i" = "$dhcp_interface$" "-m" = "$dhcp_mac$" "-u" = { set_if = "$dhcp_unicast$" } } vars.dhcp_unicast = false } object CheckCommand "dns" { import "plugin-check-command" command = [ PluginDir + "/check_dns" ] arguments = { "-H" = "$dns_lookup$" "-s" = "$dns_server$" "-a" = "$dns_expected_answers$" "-a_old" = { key = "-a" value ="$dns_expected_answer$" } "-A" = { set_if = "$dns_authoritative$" } } vars.dns_lookup = "$host_name$" vars.dns_expected_answer = "$address$" } object CheckCommand "dig" { import "plugin-check-command" command = [ PluginDir + "/check_dig" ] arguments = { "-H" = "$dig_server$" "-l" = "$dig_lookup$" } vars.dig_server = "$address$" } object CheckCommand "nscp" { import "plugin-check-command" command = [ PluginDir + "/check_nt" ] arguments = { "-H" = "$nscp_address$" "-p" = "$nscp_port$" "-s" = "$nscp_password$" "-v" = { value = "$nscp_variable$" required = true } "-l" = { value = "$nscp_params$" repeat_key = false } "-w" = "$nscp_warn$" "-c" = "$nscp_crit$" "-t" = "$nscp_timeout$" } vars.nscp_address = "$address$" vars.nscp_port = 12489 } object CheckCommand "by_ssh" { import "plugin-check-command" command = [ PluginDir + "/check_by_ssh" ] arguments = { "-H" = "$by_ssh_address$" "-p" = "$by_ssh_port$" "-C" = "$by_ssh_command$" "-l" = "$by_ssh_logname$" "-i" = "$by_ssh_identity$" "-q" = { set_if = "$by_ssh_quiet$" } "-w" = "$by_ssh_warn$" "-c" = "$by_ssh_crit$" "-t" = "$by_ssh_timeout$" } vars.by_ssh_address = "$address$" vars.by_ssh_quiet = false } object CheckCommand "ups" { import "plugin-check-command" command = [ PluginDir + "/check_ups" ] arguments = { "-H" = "$ups_address$" "-u" = "$ups_name$" } vars.ups_address = "$address$" vars.ups_name = "ups" } object CheckCommand "nrpe" { import "plugin-check-command" command = [ PluginDir + "/check_nrpe" ] arguments = { "-H" = "$nrpe_address$" "-p" = "$nrpe_port$" "-c" = "$nrpe_command$" "-n" = { set_if = "$nrpe_no_ssl$" description = "Do not use SSL." } "-u" = { set_if = "$nrpe_timeout_unknown$" description = "Make socket timeouts return an UNKNOWN state instead of CRITICAL" } "-t" = "$nrpe_timeout$" "-a" = { value = "$nrpe_arguments$" repeat_key = false order = 1 } } vars.nrpe_address = "$address$" vars.nrpe_no_ssl = false vars.nrpe_timeout_unknown = false timeout = 5m } object CheckCommand "hpjd" { import "plugin-check-command" command = [ PluginDir + "/check_hpjd" ] arguments = { "-H" = "$hpjd_address$" "-C" = "$hpjd_community$" "-p" = "$hpjd_port$" } vars.hpjd_address = "$address$" } object CheckCommand "icmp" { import "plugin-check-command" command = [ PluginDir + "/check_icmp" ] arguments = { "-H" = { value = "$icmp_address$" repeat_key = false order = 1 } "-w" = "$icmp_wrta$,$icmp_wpl$%" "-c" = "$icmp_crta$,$icmp_cpl$%" "-s" = "$icmp_source$" "-n" = "$icmp_packets$" "-i" = "$icmp_packet_interval$" "-I" = "$icmp_target_interval$" "-m" = "$icmp_hosts_alive$" "-b" = "$icmp_data_bytes$" "-t" = "$icmp_timeout$" } vars.icmp_address = "$address$" vars.icmp_wrta = 100 vars.icmp_wpl = 5 vars.icmp_crta = 200 vars.icmp_cpl = 15 } /* Contrib plugins */ object CheckCommand "running_kernel" { import "plugin-check-command" command = [ "sudo", PluginDir + "/check_running_kernel" ] }