icinga2/itl/command-plugins.conf

1002 lines
22 KiB
Plaintext

/******************************************************************************
* 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 "ipv4-or-ipv6" {
vars.check_address = {{
var addr_v4 = macro("$address$")
var addr_v6 = macro("$address6$")
if (addr_v4) {
return addr_v4
} else {
return addr_v6
}
}}
}
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 "ping" {
import "ping-common"
import "ipv4-or-ipv6"
vars.ping_address = "$check_address$"
}
object CheckCommand "ping4" {
import "ping-common"
command += [ "-4" ]
vars.ping_address = "$address$"
}
object CheckCommand "ping6" {
import "ping-common"
command += [ "-6" ]
vars.ping_address = "$address6$"
}
template CheckCommand "hostalive-common" {
vars.ping_wrta = 3000.0
vars.ping_wpl = 80
vars.ping_crta = 5000.0
vars.ping_cpl = 100
}
object CheckCommand "hostalive" {
import "ping"
import "hostalive-common"
}
object CheckCommand "hostalive4" {
import "ping4"
import "hostalive-common"
}
object CheckCommand "hostalive6" {
import "ping6"
import "hostalive-common"
}
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"
import "ipv4-or-ipv6"
command = [
PluginDir + "/check_tcp",
"-H", "$tcp_address$",
"-p", "$tcp_port$"
]
vars.tcp_address = "$check_address$"
}
object CheckCommand "ssl" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_address$"
}
object CheckCommand "udp" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [
PluginDir + "/check_udp",
"-H", "$udp_address$",
"-p", "$udp_port$"
]
vars.udp_address = "$check_address$"
}
object CheckCommand "http" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_address$"
vars.http_ssl = false
vars.http_sni = false
vars.http_linespan = false
vars.http_invertregex = false
}
object CheckCommand "ftp" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_ftp" ]
arguments = {
"-H" = "$ftp_address$"
}
vars.ftp_address = "$check_address$"
}
object CheckCommand "smtp" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_smtp" ]
arguments = {
"-H" = "$smtp_address$"
"-p" = "$smtp_port$"
"-f" = "$smtp_mail_from$"
}
vars.smtp_address = "$check_address$"
}
object CheckCommand "ssmtp" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_ssmtp" ]
arguments = {
"-H" = "$ssmtp_address$"
"-p" = "$ssmtp_port$"
}
vars.ssmtp_address = "$check_address$"
}
object CheckCommand "imap" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_imap" ]
arguments = {
"-H" = "$imap_address$"
"-p" = "$imap_port$"
}
vars.imap_address = "$check_address$"
}
object CheckCommand "simap" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_simap" ]
arguments = {
"-H" = "$simap_address$"
"-p" = "$simap_port$"
}
vars.simap_address = "$check_address$"
}
object CheckCommand "pop" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_pop" ]
arguments = {
"-H" = "$pop_address$"
"-p" = "$pop_port$"
}
vars.pop_address = "$check_address$"
}
object CheckCommand "spop" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_spop" ]
arguments = {
"-H" = "$spop_address$"
"-p" = "$spop_port$"
}
vars.spop_address = "$check_address$"
}
object CheckCommand "ntp_time" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_ntp_time" ]
arguments = {
"-H" = "$ntp_address$"
}
vars.ntp_address = "$check_address$"
}
object CheckCommand "ssh" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_ssh" ]
arguments = {
"-p" = "$ssh_port$"
"-t" = "$ssh_timeout$"
"host" = {
value = "$ssh_address$"
skip_key = true
order = 1
}
}
vars.ssh_address = "$check_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_partitions$"
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", "devfs", "mtmfs"]
}
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 = {{
var addr_v4 = macro("$address$")
var addr_v6 = macro("$address6$")
if (addr_v4) {
return addr_v4
} else {
return "udp6:[" + addr_v6 + "]"
}
}}
vars.snmp_community = "public"
vars.snmp_invert_search = false
vars.snmp_timeout = "10"
}
object CheckCommand "snmpv3" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_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"
import "ipv4-or-ipv6"
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 = "$check_address$"
}
object CheckCommand "dig" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_dig" ]
arguments = {
"-H" = "$dig_server$"
"-l" = "$dig_lookup$"
}
vars.dig_server = "$check_address$"
}
object CheckCommand "nscp" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_address$"
vars.nscp_port = 12489
}
object CheckCommand "by_ssh" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_address$"
vars.by_ssh_quiet = false
}
object CheckCommand "ups" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_ups" ]
arguments = {
"-H" = "$ups_address$"
"-u" = "$ups_name$"
}
vars.ups_address = "$check_address$"
vars.ups_name = "ups"
}
object CheckCommand "nrpe" {
import "plugin-check-command"
import "ipv4-or-ipv6"
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 = "$check_address$"
vars.nrpe_no_ssl = false
vars.nrpe_timeout_unknown = false
timeout = 5m
}
object CheckCommand "hpjd" {
import "plugin-check-command"
import "ipv4-or-ipv6"
command = [ PluginDir + "/check_hpjd" ]
arguments = {
"-H" = "$hpjd_address$"
"-C" = "$hpjd_community$"
"-p" = "$hpjd_port$"
}
vars.hpjd_address = "$check_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" ]
}