diff options
Diffstat (limited to '')
32 files changed, 10054 insertions, 0 deletions
diff --git a/itl/CMakeLists.txt b/itl/CMakeLists.txt new file mode 100644 index 0000000..b302aa3 --- /dev/null +++ b/itl/CMakeLists.txt @@ -0,0 +1,8 @@ +# Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ + +add_subdirectory(plugins-contrib.d) + +install( + FILES itl command-icinga.conf hangman plugins command-plugins.conf manubulon command-plugins-manubulon.conf windows-plugins command-plugins-windows.conf nscp command-nscp-local.conf plugins-contrib + DESTINATION ${ICINGA2_INCLUDEDIR} +) diff --git a/itl/command-icinga.conf b/itl/command-icinga.conf new file mode 100644 index 0000000..206324a --- /dev/null +++ b/itl/command-icinga.conf @@ -0,0 +1,41 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "icinga" { + import "icinga-check-command" +} + +object CheckCommand "cluster" { + import "cluster-check-command" +} + +object CheckCommand "cluster-zone" { + import "cluster-zone-check-command" + + vars.cluster_zone = "$host.name$" +} + +object CheckCommand "dummy" { + import "dummy-check-command" + + 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 "random" { + import "random-check-command" +} + +object CheckCommand "exception" { + import "exception-check-command" +} + +object CheckCommand "sleep" { + import "sleep-check-command" +} diff --git a/itl/command-nscp-local.conf b/itl/command-nscp-local.conf new file mode 100644 index 0000000..8498d68 --- /dev/null +++ b/itl/command-nscp-local.conf @@ -0,0 +1,347 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +if (!globals.contains("NscpPath")) { + globals.NscpPath = dirname(msi_get_component_path("{5C45463A-4AE9-4325-96DB-6E239C034F93}")) +} + +object CheckCommand "nscp-local" { + command = [ NscpPath + "\\nscp.exe", "client" ] + + arguments = { + "--log" = { + value = "$nscp_log_level$" + description = "The log level to use" + } + "--load-all" = { + set_if ="$nscp_load_all$" + description = "Load all plugins (currently only used with generate)" + } + "--module" = { + value = "$nscp_modules$" + description = "Specify which NSClient++ modules are required. 'nscp client' just needs 'CheckSystem' by default." + repeat_key = true + } + "-q" = { + value = "$nscp_query$" + description = "Run a query with a given name" + required = true + } + "-b" = { + set_if = "$nscp_boot$" + description = "Boot the client before executing command (similar as running the command from test mode)" + } + "-a" = { + value = "$nscp_arguments$" + repeat_key = true + description = "List of arguments (arguments gets -- prefixed automatically (--argument foo=bar is the same as setting '--foo bar')" + } + "--show-all" = { + set_if = "$nscp_showall$" + description = "" + } + } + + vars.nscp_log_level = "critical" + vars.nscp_load_all = false + vars.nscp_boot = true + vars.nscp_showall = false + vars.nscp_modules = [ "CheckSystem" ] +} + +object CheckCommand "nscp-local-cpu" { + import "nscp-local" + + arguments += { + "--time" = { + value = "$nscp_cpu_time$" + repeat_key = true + description = "The time to check" + } + "--warning" = { + value = "load>$nscp_cpu_warning$" + } + "--critical" = { + value = "load>$nscp_cpu_critical$" + } + "-a" = { + value = "$nscp_cpu_arguments$" + repeat_key = true + } + } + + vars.nscp_query = "check_cpu" + vars.nscp_showall = "$nscp_cpu_showall$" + + vars.nscp_cpu_time = [ "1m", "5m", "15m" ] + vars.nscp_cpu_showall = true + vars.nscp_cpu_warning = 80 + vars.nscp_cpu_critical = 90 +} + +object CheckCommand "nscp-local-memory" { + import "nscp-local" + + arguments += { + "--type=committed" = { + set_if = "$nscp_memory_committed$" + description = "Total memory (RAM+PAGE)" + } + "--type=physical" = { + set_if = "$nscp_memory_physical$" + description = "Physical memory (RAM)" + } + "--warning" = { + value = "$nscp_memory_op$ $nscp_memory_warning$" + } + "--critical" = { + value = "$nscp_memory_op$ $nscp_memory_critical$" + } + "-a" = { + value = "$nscp_memory_arguments$" + repeat_key = true + } + } + + vars.nscp_query = "check_memory" + vars.nscp_showall = "$nscp_memory_showall$" + + vars.nscp_memory_op = {{ + if (!macro("$nscp_memory_free$")) { + return "used >" + } else { + return "free <" + } + }} + + vars.nscp_memory_committed = false + vars.nscp_memory_physical = true + vars.nscp_memory_free = true + vars.nscp_memory_warning = {{ + if (!macro("$nscp_memory_free$")) { + return 80 + } else { + return 20 + } + }} + vars.nscp_memory_critical = {{ + if (!macro("$nscp_memory_free$")) { + return 90 + } else { + return 10 + } + }} + vars.nscp_memory_showall = false +} + +object CheckCommand "nscp-local-os-version" { + import "nscp-local" + + vars.nscp_query = "check_os_version" +} + +object CheckCommand "nscp-local-pagefile" { + import "nscp-local" + + vars.nscp_query = "check_pagefile" +} + +object CheckCommand "nscp-local-process" { + import "nscp-local" + + vars.nscp_query = "check_process" +} + +object CheckCommand "nscp-local-service" { + import "nscp-local" + + arguments += { + "--service" = { + value = "$nscp_service_name$" + repeat_key = true + } + "--ok" = { + value = "$nscp_service_otype$='$nscp_service_ok$'" + } + "--warning" = { + value = "$nscp_service_wtype$='$nscp_service_warning$'" + } + "--critical" = { + value = "$nscp_service_ctype$='$nscp_service_critical$'" + } + "-a" = { + value = "$nscp_service_arguments$" + repeat_key = true + } + } + + vars.nscp_query = "check_service" + vars.nscp_showall = "$nscp_service_showall$" + + vars.nscp_service_showall = true + vars.nscp_service_type = "state" + vars.nscp_service_otype = vars.nscp_service_type + vars.nscp_service_wtype = vars.nscp_service_type + vars.nscp_service_ctype = vars.nscp_service_type +} + +object CheckCommand "nscp-local-uptime" { + import "nscp-local" + + vars.nscp_query = "check_uptime" +} + +object CheckCommand "nscp-local-version" { + import "nscp-local" + + vars.nscp_query = "check_version" + vars.nscp_modules = [ "CheckHelpers" ] +} + +object CheckCommand "nscp-local-disk" { + import "nscp-local" + + arguments += { + "--drive" = { + value = "$nscp_disk_drive$" + repeat_key = true + } + "--exclude" = { + value = "$nscp_disk_exclude$" + repeat_key = true + } + "--warning" = { + value = "$nscp_disk_op$ $nscp_disk_warning$" + } + "--critical" = { + value = "$nscp_disk_op$ $nscp_disk_critical$" + } + "-a" = { + value = "$nscp_disk_arguments$" + repeat_key = true + } + } + + vars.nscp_query = "check_drivesize" + vars.nscp_showall = "$nscp_disk_showall$" + + vars.nscp_disk_op = {{ + if (!macro("$nscp_disk_free$")) { + return "used >" + } else { + return "free <" + } + }} + + vars.nscp_disk_showall = true + vars.nscp_disk_free = false + vars.nscp_disk_warning = {{ + if (!macro("$nscp_disk_free$")) { return 80 } else { return 20 } + }} + vars.nscp_disk_critical = {{ + if (!macro("$nscp_disk_free$")) { return 90 } else { return 10 } + }} + + vars.nscp_modules = [ "CheckDisk" ] +} + +object CheckCommand "nscp-local-counter" { + import "nscp-local" + + arguments += { + "--counter" = { + value = "$nscp_counter_name$" + repeat_key = true + } + "--warning" = { + value = "value $nscp_counter_op$ $nscp_counter_warning$" + } + "--critical" = { + value = "value $nscp_counter_op$ $nscp_counter_critical$" + } + "--perf-syntax" = { + value = "$nscp_counter_perfsyntax$" + } + "-a" = { + value = "$nscp_counter_arguments$" + repeat_key = true + } + } + + vars.nscp_counter_op = {{ + if (!macro("$nscp_counter_less$")) { + return ">" + } else { + return "<" + } + }} + + vars.nscp_query = "check_pdh" + vars.nscp_showall = "$nscp_counter_showall$" + vars.nscp_counter_less = false + vars.nscp_counter_perfsyntax = "$nscp_counter_name$" +} + +object CheckCommand "nscp-local-tasksched" { + import "nscp-local" + + arguments += { + "--filter" = { + set_if = {{ + var scheduler_name = macro("$nscp_tasksched_name$") + if (len(scheduler_name) > 0 ) { + return true + } else { + return false + } + }} + value = "title='$nscp_tasksched_name$'" + description = "Name of the task to check." + } + "--folder" = { + value = "$nscp_tasksched_folder$" + description = "The folder in which the tasks to check reside." + } + "--hidden" = { + set_if = "$nscp_tasksched_hidden$" + description = "Look for hidden tasks." + } + "--recursive" = { + value = "$nscp_tasksched_recursive$" + description = "Recurse sub folder (defaults to true)." + } + "--warning" = { + value = "$nscp_tasksched_warning$" + description = "Filter which marks items which generates a warning state." + } + "--critical" = { + value = "$nscp_tasksched_critical$" + description = "Filter which marks items which generates a critical state." + } + "--empty-state" = { + value = "$nscp_tasksched_emptystate$" + description = "Return status to use when nothing matched filter." + } + "--perf-syntax" = { + value = "$nscp_tasksched_perfsyntax$" + description = "Performance alias syntax." + } + "--detail-syntax" = { + value = "$nscp_tasksched_detailsyntax$" + description = "Detail level syntax." + } + "-a" = { + value = "$nscp_tasksched_arguments$" + repeat_key = true + } + } + + vars.nscp_modules = "CheckTaskSched" + vars.nscp_query = "check_tasksched" + vars.nscp_showall = "$nscp_tasksched_showall$" + vars.nscp_tasksched_recursive = true + vars.nscp_tasksched_perfsyntax = "%(title)" + vars.nscp_tasksched_detailsyntax = "%(folder)/%(title): %(exit_code) != 0" + vars.nscp_tasksched_warning = "exit_code != 0" + vars.nscp_tasksched_critical = "exit_code < 0" + +} diff --git a/itl/command-plugins-manubulon.conf b/itl/command-plugins-manubulon.conf new file mode 100644 index 0000000..add365b --- /dev/null +++ b/itl/command-plugins-manubulon.conf @@ -0,0 +1,407 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * main snmp-manubulon template + */ + +template CheckCommand "snmp-manubulon-command" { + import "ipv4-or-ipv6" + + arguments = { + "-H" = { + value = "$snmp_address$" + description = "Name or IP address of host to check" + } + "-C" = { + set_if = "$snmp_nocrypt$" + value = "$snmp_community$" + description = "Community name for the host's SNMP agent (implies v1 protocol)" + } + "-p" = { + value = "$snmp_port$" + description = "SNMP port (Default 161)" + } + "-2" = { + set_if = "$snmp_v2$" + description = "Use snmp v2c" + } + "-l" = { + set_if = "$snmp_v3$" + value = "$snmp_login$" + description = "Login and auth password for snmpv3 authentication" + } + "-x" = { + set_if = "$snmp_v3$" + value = "$snmp_password$" + description = "Priv password" + } + "-L" = { + set_if = "$snmp_v3_use_authprotocol$" + value = "$snmp_authprotocol$" + description = "<authproto>,<privproto> - <Authentication protocol (md5|sha : default md5)>,<Priv protocole (des|aes : default des)>" + } + "-X" = { + set_if = "$snmp_v3_use_privpass$" + value = "$snmp_privpass$" + description = "Priv password for snmpv3 (AuthPriv protocol)" + } + "-w" = { + value = "$snmp_warn$" + } + "-c" = { + value = "$snmp_crit$" + } + "-t" = { + value = "$snmp_timeout$" + description = "Timeout for SNMP in seconds (Default: 5)" + } + } + + vars.snmp_address = "$check_address$" + vars.snmp_nocrypt = true + vars.snmp_community = "public" + vars.snmp_v2 = false + vars.snmp_v3 = false + vars.snmp_login = "snmpuser" + vars.snmp_v3_use_privpass = false + vars.snmp_v3_use_authprotocol = false + vars.snmp_authprotocol = "md5,des" + vars.snmp_timeout = "5" +} + + +/** + * snmp env + * Url reference: http://nagios.manubulon.com/snmp_env.html + */ + +object CheckCommand "snmp-env" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_env.pl" ] + + arguments += { + "-T" = { + value = "$snmp_env_type$" + description = "Environment Type [cisco|nokia|bc|iron|foundry|linux]" + } + "-F" = { + value = "$snmp_env_fan$" + description = "Minimum fan rpm value (only needed for 'iron' & 'linux')" + } + "-c" = { + value = "$snmp_env_celsius$" + description = "Maximum temp in degrees celsius (only needed for 'iron' & 'linux')" + } + "-f" = { + set_if = "$snmp_perf$" + description = "Perfparse compatible output" + } + } + + vars.snmp_env_type = "cisco" + vars.snmp_perf = true +} + + +/** + * snmp load + * Url reference: http://nagios.manubulon.com/snmp_load.html + */ + +object CheckCommand "snmp-load" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_load.pl" ] + + arguments += { + "-T" = { + value = "$snmp_load_type$" + description = "CPU check" + } + "-f" = { + set_if = "$snmp_perf$" + description = "Perfparse compatible output" + } + } + + vars.snmp_load_type = "stand" + vars.snmp_warn = 85 + vars.snmp_crit = 95 + vars.snmp_perf = true +} + + +/** + * Memory and swap usage on Linux given by Net-snmp + * Memory usage on cisco routers or Pix + * For other systems use check_snmp_storage.pl + * Url reference: http://nagios.manubulon.com/snmp_mem.html + */ + +object CheckCommand "snmp-memory" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_mem.pl" ] + + arguments += { + "-f" = { + set_if = "$snmp_perf$" + description = "Performance data output" + } + "-I" = { + set_if = "$snmp_is_cisco$" + description = "check cisco memory (sum of all memory pools)" + } + "-E" = { + set_if = "$snmp_is_hp$" + description = "check HP / Procurve memory" + } + "-m" = { + set_if = "$snmp_memcached$" + description = "Include cached memory in used memory" + } + "-b" = { + set_if = "$snmp_membuffer$" + description = "Exclude buffered memory in used memory" + } + } + + vars.snmp_warn = "94,50" + vars.snmp_crit = "98,80" + vars.snmp_perf = true + vars.snmp_is_cisco = false + vars.snmp_memcached = false + vars.snmp_membuffer = false +} + + +/** + * snmp storage - Disk/Memory + * Url reference: http://nagios.manubulon.com/snmp_storage.html + */ +object CheckCommand "snmp-storage" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_storage.pl" ] + + arguments += { + "-m" = { + value = "$snmp_storage_name$" + description = "Name in description OID (can be mounpoints '/home' or 'Swap Space'...)" + } + "-f" = { + set_if = "$snmp_perf$" + description = "Perfparse compatible output" + } + "-e" = { + set_if = "$snmp_exclude$" + description = "Select all storages except the one(s) selected by -m. No action on storage type selection." + } + "-o" = { + value = "$snmp_storage_olength$" + description = "Max-size of the SNMP message, usefull in case of Too Long responses." + } + "-q" = { + value = "$snmp_storage_type$" + description = "Storage type: Other, Ram, VirtualMemory, FixedDisk, RemovableDisk, FloppyDisk, CompactDisk, RamDisk, FlashMemory, or NetworkDisk" + } + } + + vars.snmp_storage_name = "^/$$" + vars.snmp_warn = 80 + vars.snmp_crit = 90 + vars.snmp_perf = true + vars.snmp_exclude = false +} + + +/** + * snmp network interfaces + * Url reference: http://nagios.manubulon.com/snmp_int.html + */ + +object CheckCommand "snmp-interface" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_int.pl" ] + + arguments += { + "-n" = { + value = "$snmp_interface$" + description = "Name in description OID (eth0, ppp0 ...). This is treated as a regexp : -n eth will match eth0,eth1,..." + } + "-k" = { + set_if = "$snmp_interface_perf$" + description = "Check the input/ouput bandwidth of the interface" + } + "--label" = { + value = "$snmp_interface_label$" + description = "Add label before speed in output : in=, out=, errors-out=, etc..." + } + "-Y" = { + set_if = "$snmp_interface_bits_bytes$" + description = "Output performance data in bits/s or Bytes/s" + } + "-y" = { + set_if = "$snmp_interface_percent$" + description = "Output performance data in % of max speed" + } + "-B" = { + set_if = "$snmp_interface_kbits$" + description = "Make the warning and critical levels in K|M|G Bits/s instead of K|M|G Bytes/s" + } + "-M" = { + set_if = "$snmp_interface_megabytes$" + description = "Make the warning and critical levels in Mbps" + } + "--64bits" = { + set_if = "$snmp_interface_64bit$" + description = "Use 64 bits counters instead of the standard counters when checking bandwidth & performance data for interface >= 1Gbps" + } + "-e" = { + set_if = "$snmp_interface_errors$" + description = "Add error & discard to Perfparse output" + } + "-q" = { + set_if = "$snmp_interface_extended_checks$" + description = "Also check the error and discard input/output. When enabled format of snmp_warn and snmp_crit changes to <In bytes>,<Out bytes>,<In error>,<Out error>,<In disc>,<Out disc>" + } + "-i" = { + set_if = "$snmp_interface_inverse$" + description = "Make critical when up" + } + "-r" = { + set_if = "$snmp_interface_noregexp$" + description = "Do not use regexp to match NAME in description OID" + } + "-d" = { + value = "$snmp_interface_delta$" + description = "Make an average of <delta> seconds (default 300=5min)" + } + "-u" = { + set_if = "$snmp_interface_warncrit_percent$" + description = "Make the warning and critical levels in % of reported interface speed" + } + "-N" = { + set_if = "$snmp_interface_ifname$" + } + "-A" = { + set_if = "$snmp_interface_ifalias$" + } + "-f" = { + set_if = "$snmp_perf$" + description = "Perfparse compatible output (no output when interface is down)" + } + "-W" = { + set_if = "$snmp_interface_weathermap$" + description = "Include 'weathermap' data for NagVis in performance data" + } + "-a" = { + set_if = "$snmp_interface_admin$" + description = "Use administrative status instead of operational" + } + } + + vars.snmp_interface = "eth0" + vars.snmp_interface_perf = true + vars.snmp_interface_bits_bytes = true + vars.snmp_interface_percent = false + vars.snmp_interface_kbits = true + vars.snmp_interface_megabytes = true + vars.snmp_interface_64bit = false + vars.snmp_interface_errors = true + vars.snmp_interface_extended_checks = false + vars.snmp_interface_noregexp = false + vars.snmp_interface_delta = 300 + vars.snmp_interface_warncrit_percent = false + vars.snmp_interface_ifname = false + vars.snmp_interface_ifalias = false + vars.snmp_warn = "300,400" + vars.snmp_crit = "0,600" + vars.snmp_perf = true +} + + +/** + * snmp process + * Url reference: http://nagios.manubulon.com/snmp_process.html + */ + +object CheckCommand "snmp-process" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_process.pl" ] + + arguments += { + "-n" = { + value = "$snmp_process_name$" + description = "Regex service name eg. ^apache2$" + } + "-F" = { + set_if = "$snmp_perf$" + description = "Add performance output (outputs : memory_usage, num_process, cpu_usage)" + } + "-A" = { + set_if = "$snmp_process_use_params$" + description = "Add parameters to select processes (ex : 'named.*-t /var/named/chroot' will only select named process with this parameter)" + } + "-f" = { + set_if = "$snmp_process_use_fullpath$" + description = "Use full path name instead of process name to select processes (ex : '/opt/app1/app1bin' will only select named process with this full path)" + } + "-m" = { + set_if = "$snmp_process_mem_usage$" + value = "$snmp_process_mem_threshold$" + description = "Checks memory usage. Values warning and critical in Mb eg. 512,1024" + } + "-u" = { + set_if = "$snmp_process_cpu_usage$" + value = "$snmp_process_cpu_threshold$" + description = "Checks CPU usage. Values warning and critical in % (value can be > 100% : 100%=1 CPU) eg. 15,50" + } + } + + vars.snmp_process_name = ".*" + vars.snmp_warn = 0 + vars.snmp_crit = 0 + vars.snmp_perf = true + vars.snmp_process_use_params = false + vars.snmp_process_use_fullpath = false + vars.snmp_process_mem_usage = false + vars.snmp_process_mem_threshold = "0,0" + vars.snmp_process_cpu_usage = false + vars.snmp_process_cpu_threshold = "0,0" +} + +/** + * snmp service + * Url reference: http://nagios.manubulon.com/snmp_windows.html + */ + +object CheckCommand "snmp-service" { + import "snmp-manubulon-command" + + command = [ ManubulonPluginDir + "/check_snmp_win.pl" ] + + arguments += { + "-n" = { + value = "$snmp_service_name$" + description = "Comma separated names of services (perl regular expressions can be used for every one). By default, it is not case sensitive. eg. ^dns$" + } + "-N" = { + value = "$snmp_service_count$" + description = "Compare matching services with <n> instead of the number of names provided." + } + "-s" = { + set_if = "$snmp_service_showall$" + description = "Show all services in the output, instead of only the non-active ones." + } + "-r" = { + set_if = "$snmp_service_noregexp$" + description = "Do not use regexp to match NAME in service description." + } + } + + vars.snmp_service_name = ".*" +} diff --git a/itl/command-plugins-windows.conf b/itl/command-plugins-windows.conf new file mode 100644 index 0000000..22ab623 --- /dev/null +++ b/itl/command-plugins-windows.conf @@ -0,0 +1,319 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "disk-windows" { + command = [ PluginDir + "/check_disk.exe" ] + + arguments = { + "-w" = { + value = "$disk_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$disk_win_crit$" + description = "Critical threshold" + } + "-p" = { + value = "$disk_win_path$" + description = "Optional paths to check" + repeat_key = true + } + "-u" = { + value = "$disk_win_unit$" + description = "Use this unit to display disk space" + } + "-x" = { + value = "$disk_win_exclude$" + description = "Exclude these drives from check" + } + "-U" = { + set_if = "$disk_win_show_used$" + description = "Work with used instead of free space" + } + } + + //The default + vars.disk_win_unit = "mb" + vars.disk_win_warn = "20%" + vars.disk_win_crit = "10%" +} + +object CheckCommand "load-windows" { + command = [ PluginDir + "/check_load.exe" ] + + arguments = { + "-w" = { + value = "$load_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$load_win_crit$" + description = "Critical threshold" + } + } +} + +object CheckCommand "memory-windows" { + command = [ PluginDir + "/check_memory.exe" ] + + arguments = { + "-w" = { + value = "$memory_win_warn$" + description = "Warning Threshold" + } + "-c" = { + value = "$memory_win_crit$" + description = "Critical Threshold" + } + "-u" = { + value = "$memory_win_unit$" + description = "Use this unit to display memory" + } + "-U" = { + set_if = "$memory_win_show_used$" + description = "Show used memory instead of the free memory" + } + } + + //The default + vars.memory_win_unit = "mb" + vars.memory_win_warn = "10%" + vars.memory_win_crit = "5%" +} + +object CheckCommand "network-windows" { + command = [ PluginDir + "/check_network.exe" ] + + arguments = { + "-w" = { + value = "$network_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$network_win_crit$" + description = "Critical threshold" + } + "-n" = { + set_if = "$network_no_isatap$" + description = "Don't show ISATAP interfaces in output" + } + } + vars.network_no_isatap = true +} + +object CheckCommand "perfmon-windows" { + command = [ PluginDir + "/check_perfmon.exe" ] + + arguments = { + "-w" = { + value = "$perfmon_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$perfmon_win_crit$" + description = "Critical threshold" + } + "-P" = { + value = "$perfmon_win_counter$" + description = "The Performance Counter string" + required = true + } + "--performance-wait" = { + value = "$perfmon_win_wait$" + description = "Wait time between two counter collections in ms" + } + "--fmt-countertype" = { + value = "$perfmon_win_type$" + description = "Performance counter type" + } + "--perf-syntax" = { + value = "$perfmon_win_syntax$" + description = "Use this instead of the counter name in the perfomance data" + } + } + + vars.performance_win_wait = 1000 + vars.perfmon_win_type = "double" +} + + +template CheckCommand "ping-common-windows" { + command = [ PluginDir + "/check_ping.exe" ] + + arguments = { + "-H" = { + value = "$ping_win_address$" + required = true + description = "Address to ping" + } + "-w" = { + value = "$ping_win_wrta$,$ping_win_wpl$%" + description = "Warning threshold: RTA and package loss seperated by comma" + } + "-c" = { + value = "$ping_win_crta$,$ping_win_cpl$%" + description = "Warning threshold: RTA and package loss seperated by comma" + } + "-p" = { + value = "$ping_win_packets$" + description = "Number of packages to send" + } + "-t" = { + value = "$ping_win_timeout$" + description = "Timeout in ms" + } + } + + vars.ping_win_packets = "5" + vars.ping_win_timeout = "1000" +} + +object CheckCommand "ping-windows" { + import "ping-common-windows" + import "ipv4-or-ipv6" + + vars.ping_win_address = "$check_address$" +} + +object CheckCommand "ping4-windows" { + import "ping-common-windows" + + command += [ "-4" ] + + vars.ping_win_address = "$address$" +} + +object CheckCommand "ping6-windows" { + import "ping-common-windows" + + command += [ "-6" ] + + vars.ping_win_address = "$address6$" +} + +object CheckCommand "procs-windows" { + command = [ PluginDir + "/check_procs.exe" ] + + arguments = { + "-w" = { + value = "$procs_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$procs_win_crit$" + description = "Critical threshold" + } + "-u" = { + value = "$procs_win_user$" + description = "Count only procs of this user" + } + } +} + +object CheckCommand "service-windows" { + command = [ PluginDir + "/check_service.exe" ] + + arguments = { + "-w" = { + set_if = "$service_win_warn$" + description = "Warn instead of critical when service is not running" + } + "-s" = { + value = "$service_win_service$" + required = true + description = "Service to check" + } + "--description" = { + set_if = "$service_win_description$" + description = "Use service description instead of name" + } + } +} + +object CheckCommand "swap-windows" { + command = [ PluginDir + "/check_swap.exe" ] + + arguments = { + "-w" = { + value = "$swap_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$swap_win_crit$" + description = "Critical threshold" + } + "-u" = { + value = "$swap_win_unit$" + description = "Unit to display swap in" + } + "-U" = { + set_if = "$swap_win_show_used$" + description = "Show used swap instead of the free swap" + } + } + + // Default + vars.swap_win_unit = "mb" + vars.swap_win_warn = "10%" + vars.swap_win_crit = "5%" +} + +object CheckCommand "update-windows" { + command = [ PluginDir + "/check_update.exe" ] + + arguments = { + "-w" = { + value = "$update_win_warn$" + description = "Number of updates to trigger a warning" + } + "-c" = { + value = "$update_win_crit$" + description = "Number of updates to trigger a critical" + } + "--possible-reboot" = { + set_if = "$update_win_reboot$" + description = "Treat 'may need update' as 'definitely needs update'" + } + "--no-reboot-critical" = { + set_if = "$ignore_reboot$" + description = "Do not automatically return critical if an update requiring reboot is present." + } + } + + timeout = 5m +} + +object CheckCommand "uptime-windows" { + command = [ PluginDir + "/check_uptime.exe" ] + + arguments = { + "-w" = { + value = "$uptime_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$uptime_win_crit$" + description = "Critical threshold" + } + "-u" = { + value = "$uptime_win_unit$" + description = "Time unit to use" + } + } + + vars.uptime_win_unit = "s" +} + +object CheckCommand "users-windows" { + command = [ PluginDir + "/check_users.exe" ] + + arguments = { + "-w" = { + value = "$users_win_warn$" + description = "Warning threshold" + } + "-c" = { + value = "$users_win_crit$" + description = "Critical threshold" + } + } +} diff --git a/itl/command-plugins.conf b/itl/command-plugins.conf new file mode 100644 index 0000000..9dd1fc6 --- /dev/null +++ b/itl/command-plugins.conf @@ -0,0 +1,3226 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +template CheckCommand "ipv4-or-ipv6" { + vars.check_address = {{ + var addr_v4 = macro("$address$") + var addr_v6 = macro("$address6$") + + if (addr_v4 && !macro("$check_ipv6$") || macro("$check_ipv4$")) { + return addr_v4 + } else { + return addr_v6 + } + }} + + vars.check_ipv4 = false + vars.check_ipv6 = false +} + +template CheckCommand "ping-common" { + command = [ PluginDir + "/check_ping" ] + + arguments = { + "-H" = { + value = "$ping_address$" + description = "host to ping" + } + "-w" = { + value = "$ping_wrta$,$ping_wpl$%" + description = "warning threshold pair" + } + "-c" = { + value = "$ping_crta$,$ping_cpl$%" + description = "critical threshold pair" + } + "-p" = { + value = "$ping_packets$" + description = "number of ICMP ECHO packets to send (Default: 5)" + } + "-t" = { + value = "$ping_timeout$" + description = "Seconds before connection times out (default: 10)" + } + } + + 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" { + command = [ + PluginDir + "/check_fping", + "$fping_address$" + ] + + arguments = { + "-w" = { + value = "$fping_wrta$,$fping_wpl$%" + description = "warning threshold pair" + } + "-c" = { + value = "$fping_crta$,$fping_cpl$%" + description = "critical threshold pair" + } + "-n" = { + value = "$fping_number$" + description = "number of ICMP packets to send (default: 1)" + } + "-i" = { + value = "$fping_interval$" + description = "Interval (ms) between sending packets (default: fping's default for -p)" + } + "-b" = { + value = "$fping_bytes$" + description = "size of ICMP packet (default: 56)" + } + "-T" = { + value = "$fping_target_timeout$" + description = "Target timeout (ms) (default: fping's default for -t)" + } + "-S" = { + value = "$fping_source_ip$" + description = "name or IP Address of sourceip" + } + "-I" = { + value = "$fping_source_interface$" + description = "source interface name" + } + } + + 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 "tcp" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_tcp" ] + + arguments = { + "-H" = { + value = "$tcp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)." + } + "-p" = { + value = "$tcp_port$" + description = "The TCP port number." + } + "-e" = { + value = "$tcp_expect$" + description = "String to expect in server response (may be repeated)." + } + "-A" = { + set_if = "$tcp_all$" + description = "All expect strings need to occur in server response. Defaults to false." + } + "-E_send" = { + key = "-E" + order = 1 + set_if = "$tcp_escape_send$" + description = "Enable usage of \n, \r, \t or \\ in send string." + } + "-s" = { + order = 2 + value = "$tcp_send$" + description = "String to send to the server." + } + "-E_quit" = { + key = "-E" + order = 3 + set_if = "$tcp_escape_quit$" + description = "Enable usage of \n, \r, \t or \\ in quit string." + } + "-q" = { + order = 4 + value = "$tcp_quit$" + description = "String to send server to initiate a clean close of the connection." + } + "-r" = { + value = "$tcp_refuse$" + description = "Accept TCP refusals with states ok, warn, crit. Defaults to crit." + } + "-M" = { + value = "$tcp_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit. Defaults to warn." + } + "-j" = { + set_if = "$tcp_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$tcp_maxbytes$" + description = "Close connection once more than this number of bytes are received." + } + "-d" = { + value = "$tcp_delay$" + description = "Seconds to wait between sending string and polling for response." + } + "-D" = { + value = "$tcp_certificate$" + description = "Minimum number of days a certificate has to be valid. 1st value is number of days for warning, 2nd is critical (if not specified: 0) - seperated by comma." + } + "-S" = { + set_if = "$tcp_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$tcp_wtime$" + description = "Response time to result in warning status (seconds)." + } + "-c" = { + value = "$tcp_ctime$" + description = "Response time to result in critical status (seconds)." + } + "-t" = { + value = "$tcp_timeout$" + description = "Seconds before connection times out. Defaults to 10." + } + "-4" = { + set_if = "$tcp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$tcp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.tcp_address = "$check_address$" + vars.tcp_all = false + vars.tcp_refuse = "crit" + vars.tcp_mismatch = "warn" + vars.tcp_timeout = 10 + vars.check_ipv4 = "$tcp_ipv4$" + vars.check_ipv6 = "$tcp_ipv6$" +} + +object CheckCommand "ssl" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_tcp" ] + + arguments = { + "-H" = { + value = "$ssl_address$" + description = "Host address" + } + "-p" = { + value = "$ssl_port$" + description ="TCP port (default: 443)" + } + "--ssl" = { + description = "Use SSL for the connection" + } + "-t" = { + value = "$ssl_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-D" = {{ + var days_warn = macro("$ssl_cert_valid_days_warn$") + var days_critical = macro("$ssl_cert_valid_days_critical$") + if (days_warn) { + if (days_critical) { + return days_warn + "," + days_critical + } else { + return days_warn + } + } + }} + "--sni" = { + value = "$ssl_sni$" + description = "Enable SSL/TLS hostname extension support (SNI)" + } + } + + vars.ssl_address = "$check_address$" + vars.ssl_port = 443 + vars.ssl_cert_valid_days_warn = false + vars.ssl_cert_valid_days_critical = false +} + + +object CheckCommand "udp" { + import "ipv4-or-ipv6" + + command = [ + PluginDir + "/check_udp", + "-H", "$udp_address$", + "-p", "$udp_port$" + ] + + arguments = { + "-s" = { + value = "$udp_send$" + required = true + description = "String to send to the server" + } + "-e" = { + value = "$udp_expect$" + required = true + description = " String to expect in server response" + } + "-q" = { + value = "$udp_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-4" = { + set_if = "$udp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$udp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.udp_address = "$check_address$" + vars.check_ipv4 = "$udp_ipv4$" + vars.check_ipv6 = "$udp_ipv6$" +} + +object CheckCommand "http" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_http" ] + + arguments = { + "-H" = { + value = "$http_vhost$" + description = "Host name argument for servers using host headers (virtual host)" + } + "-I" = { + set_if = {{ string(macro("$http_address$")) != "" }} + value = "$http_address$" + description = "IP address or name (use numeric address if possible to bypass DNS lookup)" + } + "-u" = { + value = "$http_uri$" + description = "URL to GET or POST (default: /)" + } + "-p" = { + value = "$http_port$" + description = "Port number (default: 80)" + } + "-S" = { + set_if = "$http_ssl$" + description = "Connect via SSL" + } + "-S1" = { + set_if = "$http_ssl_force_tlsv1$" + description = "Connect via SSL version TLSv1" + } + "-S1.1" = { + set_if = "$http_ssl_force_tlsv1_1$" + description = "Connect via SSL version TLSv1.1" + } + "-S1.2" = { + set_if = "$http_ssl_force_tlsv1_2$" + description = "Connect via SSL version TLSv1.2" + } + "-S2" = { + set_if = "$http_ssl_force_sslv2$" + description = "Connect via SSL version SSLv2" + } + "-S3" = { + set_if = "$http_ssl_force_sslv3$" + description = "Connect via SSL version SSLv3" + } + "-S1+" = { + set_if = "$http_ssl_force_tlsv1_or_higher$" + description = "Connect via SSL version TLSv1 and newer" + } + "-S1.1+" = { + set_if = "$http_ssl_force_tlsv1_1_or_higher$" + description = "Connect via SSL version TLSv1.1 and newer" + } + "-S1.2+" = { + set_if = "$http_ssl_force_tlsv1_2_or_higher$" + description = "Connect via SSL version TLSv1.2 and newer" + } + "-S2+" = { + set_if = "$http_ssl_force_sslv2_or_higher$" + description = "Connect via SSL version SSLv2 and newer" + } + "-S3+" = { + set_if = "$http_ssl_force_sslv3_or_higher$" + description = "Connect via SSL version SSLv3 and newer" + } + "--sni" = { + set_if = "$http_sni$" + description = "Enable SSL/TLS hostname extension support (SNI)" + } + "-C" = { + value = "$http_certificate$" + description = "Minimum number of days a certificate has to be valid. This parameter explicitely sets the port to 443 and ignores the URL if passed." + } + "-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$" + description = "Don't wait for document body: stop reading after headers" + } + "-w" = { + value = "$http_warn_time$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$http_critical_time$" + description = "Response time to result in critical status (seconds)" + } + "-e" = { + value = "$http_expect$" + description = "Comma-delimited list of strings, at least one of them is expected in the first (status) line of the server response (default: HTTP/1.)" + } + "-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" + } + "-4" = { + set_if = "$http_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$http_ipv6$" + description = "Use IPv6 connection" + } + "-L" = { + set_if = "$http_link$" + description = "Wrap output in HTML link" + } + "-v" = { + set_if = "$http_verbose$" + description = "Show details for command-line debugging" + } + } + + vars.http_address = "$check_address$" + vars.http_ssl = false + vars.http_sni = false + vars.http_linespan = false + vars.http_invertregex = false + vars.check_ipv4 = "$http_ipv4$" + vars.check_ipv6 = "$http_ipv6$" + vars.http_link = false + vars.http_verbose = false +} + +object CheckCommand "ftp" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ftp" ] + + arguments = { + "-H" = { + value = "$ftp_address$" + description = "The host's address. Defaults to $address$ or $address6$ if the address attribute is not set." + } + "-p" = { + value = "$ftp_port$" + description = "The FTP port number. Defaults to none" + } + "-e" = { + value = "$ftp_expect$" + description = "String to expect in server response (may be repeated)." + } + "-A" = { + set_if = "$ftp_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-E_send" = { + key = "-E" + order = 1 + set_if = "$ftp_escape_send$" + description = "Enable usage of \n, \r, \t or \\ in send string. Default is nothing." + } + "-s" = { + order = 2 + value = "$ftp_send$" + description = "String to send to the server." + } + "-E_quit" = { + key = "-E" + order = 3 + set_if = "$ftp_escape_quit$" + description = "Can use \n, \r, \t or \\ in quit string. Default is \r\n added to end of quit." + } + "-q" = { + order = 4 + value = "$ftp_quit$" + description = "String to send server to initiate a clean close of the connection." + } + "-r" = { + value = "$ftp_refuse$" + description = "Accept TCP refusals with states ok, warn, crit. Defaults to crit." + } + "-M" = { + value = "$ftp_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit. Defaults to warn." + } + "-j" = { + set_if = "$ftp_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$ftp_maxbytes$" + description = "Close connection once more than this number of bytes are received." + } + "-d" = { + value = "$ftp_delay$" + description = "Seconds to wait between sending string and polling for response." + } + "-D" = { + value = "$ftp_certificate$" + description = "Minimum number of days a certificate has to be valid. 1st value is number of days for warning, 2nd is critical (if not specified: 0) - seperated by comma." + } + "-S" = { + set_if = "$ftp_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$ftp_wtime$" + description = "Response time to result in warning status (seconds)." + } + "-c" = { + value = "$ftp_ctime$" + description = "Response time to result in critical status (seconds)." + } + "-t" = { + value = "$ftp_timeout$" + description = "Seconds before connection times out. Defaults to 10." + } + "-4" = { + set_if = "$ftp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$ftp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.ftp_address = "$check_address$" + vars.ftp_ssl = false + vars.ftp_refuse = "crit" + vars.ftp_mismatch = "warn" + vars.ftp_timeout = 10 + vars.check_ipv4 = "$ftp_ipv4$" + vars.check_ipv6 = "$ftp_ipv6$" +} + +object CheckCommand "smtp" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_smtp" ] + + arguments = { + "-H" = { + value = "$smtp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$smtp_port$" + description = "Port number (default: 25)" + } + "-f" = { + value = "$smtp_mail_from$" + description = "FROM-address to include in MAIL command, required by Exchange 2000" + } + "-e" = { + value = "$smtp_expect$" + description = "String to expect in first line of server response (default: '220')" + } + "-C" = { + value = "$smtp_command$" + description = "SMTP command" + } + "-R" = { + value = "$smtp_response$" + description = "Expected response to command (may be used repeatedly)" + } + "-F" = { + value = "$smtp_helo_fqdn$" + description = "FQDN used for HELO" + } + "-D" = { + value = "$smtp_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$smtp_starttls$" + description = "Use STARTTLS for the connection." + } + "-A" = { + value = "$smtp_authtype$" + description = "SMTP AUTH type to check (default none, only LOGIN supported)" + } + "-U" = { + value = "$smtp_authuser$" + description = "SMTP AUTH username" + } + "-P" = { + value = "$smtp_authpass$" + description = "SMTP AUTH password" + } + "-q" = { + value = "$smtp_ignore_quit$" + description = "Ignore failure when sending QUIT command to server" + } + "-w" = { + value = "$smtp_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$smtp_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$smtp_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$smtp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$smtp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.smtp_address = "$check_address$" + vars.check_ipv4 = "$smtp_ipv4$" + vars.check_ipv6 = "$smtp_ipv6$" +} + +object CheckCommand "ssmtp" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ssmtp" ] + + arguments = { + "-H" = { + value = "$ssmtp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$ssmtp_port$" + description = "Port number (default: none)" + } + "-E" = { + value = "$ssmtp_escape$" + description = "Can use \n, \r, \t or \\ in send or quit string. Must come before send or quit option. Default: nothing added to send, \r\n added to end of quit" + } + "-s" = { + value = "$ssmtp_send$" + description = "String to send to the server" + } + "-e" = { + value = "$ssmtp_expect$" + description = "String to expect in server response (may be repeated)" + } + "-A" = { + set_if = "$ssmtp_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-q" = { + value = "$ssmtp_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-r" = { + value = "$ssmtp_refuse$" + description = "Accept TCP refusals with states ok, warn, crit (default: crit)" + } + "-M" = { + value = "$ssmtp_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit (default: warn)" + } + "-j" = { + set_if = "$ssmtp_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$ssmtp_maxbytes$" + description = "Close connection once more than this number of bytes are received" + } + "-d" = { + value = "$ssmtp_delay$" + description = "Seconds to wait between sending string and polling for response" + } + "-D" = { + value = "$ssmtp_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$ssmtp_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$ssmtp_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$ssmtp_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$ssmtp_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$ssmtp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$ssmtp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.ssmtp_address = "$check_address$" + vars.check_ipv4 = "$ssmtp_ipv4$" + vars.check_ipv6 = "$ssmtp_ipv6$" +} + +object CheckCommand "imap" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_imap" ] + + arguments = { + "-H" = { + value = "$imap_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$imap_port$" + description = "Port number (default: none)" + } + "-E" = { + value = "$imap_escape$" + description = "Can use \n, \r, \t or \\ in send or quit string. Must come before send or quit option. Default: nothing added to send, \r\n added to end of quit" + } + "-s" = { + value = "$imap_send$" + description = "String to send to the server" + } + "-e" = { + value = "$imap_expect$" + description = "String to expect in server response (may be repeated)" + } + "-A" = { + set_if = "$imap_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-q" = { + value = "$imap_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-r" = { + value = "$imap_refuse$" + description = "Accept TCP refusals with states ok, warn, crit (default: crit)" + } + "-M" = { + value = "$imap_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit (default: warn)" + } + "-j" = { + set_if = "$imap_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$imap_maxbytes$" + description = "Close connection once more than this number of bytes are received" + } + "-d" = { + value = "$imap_delay$" + description = "Seconds to wait between sending string and polling for response" + } + "-D" = { + value = "$imap_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$imap_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$imap_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$imap_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$imap_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$imap_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$imap_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.imap_address = "$check_address$" + vars.check_ipv4 = "$imap_ipv4$" + vars.check_ipv6 = "$imap_ipv6$" +} + +object CheckCommand "simap" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_simap" ] + + arguments = { + "-H" = { + value = "$simap_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$simap_port$" + description = "Port number (default: none)" + } + "-E" = { + value = "$simap_escape$" + description = "Can use \n, \r, \t or \\ in send or quit string. Must come before send or quit option. Default: nothing added to send, \r\n added to end of quit" + } + "-s" = { + value = "$simap_send$" + description = "String to send to the server" + } + "-e" = { + value = "$simap_expect$" + description = "String to expect in server response (may be repeated)" + } + "-A" = { + set_if = "$simap_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-q" = { + value = "$simap_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-r" = { + value = "$simap_refuse$" + description = "Accept TCP refusals with states ok, warn, crit (default: crit)" + } + "-M" = { + value = "$simap_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit (default: warn)" + } + "-j" = { + set_if = "$simap_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$simap_maxbytes$" + description = "Close connection once more than this number of bytes are received" + } + "-d" = { + value = "$simap_delay$" + description = "Seconds to wait between sending string and polling for response" + } + "-D" = { + value = "$simap_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$simap_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$simap_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$simap_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$simap_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$simap_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$simap_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.simap_address = "$check_address$" + vars.check_ipv4 = "$simap_ipv4$" + vars.check_ipv6 = "$simap_ipv6$" +} + +object CheckCommand "pop" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_pop" ] + + arguments = { + "-H" = { + value = "$pop_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$pop_port$" + description = "Port number (default: none)" + } + "-E" = { + value = "$pop_escape$" + description = "Can use \n, \r, \t or \\ in send or quit string. Must come before send or quit option. Default: nothing added to send, \r\n added to end of quit" + } + "-s" = { + value = "$pop_send$" + description = "String to send to the server" + } + "-e" = { + value = "$pop_expect$" + description = "String to expect in server response (may be repeated)" + } + "-A" = { + set_if = "$pop_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-q" = { + value = "$pop_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-r" = { + value = "$pop_refuse$" + description = "Accept TCP refusals with states ok, warn, crit (default: crit)" + } + "-M" = { + value = "$pop_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit (default: warn)" + } + "-j" = { + set_if = "$pop_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$pop_maxbytes$" + description = "Close connection once more than this number of bytes are received" + } + "-d" = { + value = "$pop_delay$" + description = "Seconds to wait between sending string and polling for response" + } + "-D" = { + value = "$pop_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$pop_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$pop_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$pop_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$pop_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$pop_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$pop_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.pop_address = "$check_address$" + vars.check_ipv4 = "$pop_ipv4$" + vars.check_ipv6 = "$pop_ipv6$" +} + +object CheckCommand "spop" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_spop" ] + + arguments = { + "-H" = { + value = "$spop_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$spop_port$" + description = "Port number (default: none)" + } + "-E" = { + value = "$spop_escape$" + description = "Can use \n, \r, \t or \\ in send or quit string. Must come before send or quit option. Default: nothing added to send, \r\n added to end of quit" + } + "-s" = { + value = "$spop_send$" + description = "String to send to the server" + } + "-e" = { + value = "$spop_expect$" + description = "String to expect in server response (may be repeated)" + } + "-A" = { + set_if = "$spop_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-q" = { + value = "$spop_quit$" + description = "String to send server to initiate a clean close of the connection" + } + "-r" = { + value = "$spop_refuse$" + description = "Accept TCP refusals with states ok, warn, crit (default: crit)" + } + "-M" = { + value = "$spop_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit (default: warn)" + } + "-j" = { + set_if = "$spop_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$spop_maxbytes$" + description = "Close connection once more than this number of bytes are received" + } + "-d" = { + value = "$spop_delay$" + description = "Seconds to wait between sending string and polling for response" + } + "-D" = { + value = "$spop_certificate_age$" + description = "Minimum number of days a certificate has to be valid" + } + "-S" = { + set_if = "$spop_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$spop_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$spop_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$spop_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$spop_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$spop_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.spop_address = "$check_address$" + vars.check_ipv4 = "$spop_ipv4$" + vars.check_ipv6 = "$spop_ipv6$" +} + +object CheckCommand "ntp_time" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ntp_time" ] + + arguments = { + "-H" = { + value = "$ntp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$ntp_port$" + description = "Port number (default: 123)" + } + "-q" = { + set_if = "$ntp_quiet$" + description = "Returns UNKNOWN instead of CRITICAL if offset cannot be found" + } + "-w" = { + value = "$ntp_warning$" + description = "Offset to result in warning status (seconds)" + } + "-c" = { + value = "$ntp_critical$" + description = "Offset to result in critical status (seconds)" + } + "-o" = { + value = "$ntp_timeoffset$" + description = "Expected offset of the ntp server relative to local server (seconds)" + } + "-t" = { + value = "$ntp_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$ntp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$ntp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.ntp_address = "$check_address$" + vars.check_ipv4 = "$ntp_ipv4$" + vars.check_ipv6 = "$ntp_ipv6$" +} + +object CheckCommand "ntp_peer" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ntp_peer" ] + + arguments = { + "-H" = { + value = "$ntp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$ntp_port$" + description = "Port number (default: 123)" + } + "-q" = { + set_if = "$ntp_quiet$" + description = "Returns UNKNOWN instead of CRITICAL or WARNING if server isn't synchronized" + } + "-w" = { + value = "$ntp_warning$" + description = "Offset to result in warning status (seconds)" + } + "-c" = { + value = "$ntp_critical$" + description = "Offset to result in critical status (seconds)" + } + "-W" = { + value = "$ntp_wstratum$" + description = "Warning threshold for stratum of server's synchronization peer" + } + "-C" = { + value = "$ntp_cstratum$" + description = "Critical threshold for stratum of server's synchronization peer" + } + "-j" = { + value = "$ntp_wjitter$" + description = "Warning threshold for jitter" + } + "-k" = { + value = "$ntp_cjitter$" + description = "Critical threshold for jitter" + } + "-m" = { + value = "$ntp_wsource$" + description = "Warning threshold for number of usable time sources (truechimers)" + } + "-n" = { + value = "$ntp_csource$" + description = "Critical threshold for number of usable time sources (truechimers)" + } + "-t" = { + value = "$ntp_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$ntp_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$ntp_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.ntp_address = "$check_address$" + vars.check_ipv4 = "$ntp_ipv4$" + vars.check_ipv6 = "$ntp_ipv6$" +} + +object CheckCommand "ssh" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ssh" ] + + arguments = { + "-p" = { + value = "$ssh_port$" + description = "Port number (default: 22)" + } + "-t" = { + value = "$ssh_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "host" = { + value = "$ssh_address$" + skip_key = true + order = 1 + } + "-4" = { + set_if = "$ssh_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$ssh_ipv6$" + description = "Use IPv6 connection" + } + } + + vars.ssh_address = "$check_address$" + vars.check_ipv4 = "$ssh_ipv4$" + vars.check_ipv6 = "$ssh_ipv6$" +} + +object CheckCommand "disk" { + 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 + order = -3 + } + "-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 + order = -3 + } + "-W" = { + value = "$disk_inode_wfree$" + description = "Exit with WARNING status if less than PERCENT of inode space is free" + order = -3 + } + "-K" = { + value = "$disk_inode_cfree$" + description = "Exit with CRITICAL status if less than PERCENT of inode space is free" + order = -3 + } + "-p" = { + value = "$disk_partitions$" + description = "Path or partition (may be repeated)" + repeat_key = true + order = 1 + } + "-p_old" = { + key = "-p" + value = "$disk_partition$" + order = 1 + } + "-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" + } + "-f" = { + set_if = "$disk_ignore_reserved$" + description = "Don't account root-reserved blocks into freespace in perfdata" + } + "-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 .*" + order = 1 + } + "-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 + order = 2 + } + "-i" = { + value = "$disk_ignore_ereg_path$" + description = "Regular expression to ignore selected path or partition (may be repeated)" + repeat_key = true + order = 2 + } + "-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 + } + "-N" = { + value = "$disk_include_type$" + description = "Check only 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", + "configfs", + "devtmpfs", + "devfs", + "mtmfs", + "tracefs", + "cgroup", + "fuse.gvfsd-fuse", + "fuse.gvfs-fuse-daemon", + "fdescfs", + "overlay", + "nsfs", + "squashfs" + ] +} + +object CheckCommand "disk_smb" { + command = [ PluginDir + "/check_disk_smb" ] + + arguments = { + "-H" = { + value = "$disk_smb_hostname$" + description = "NetBIOS name of the server." + } + "-s" = { + value = "$disk_smb_share$" + description = "Share name to be tested." + } + "-W" = { + value = "$disk_smb_workgroup$" + description = "Workgroup or Domain used (Defaults to 'WORKGROUP' if omitted)." + } + "-a" = { + value = "$disk_smb_address$" + description = "IP-address of HOST (only necessary if HOST is in another network)." + } + "-u" = { + value = "$disk_smb_username$" + description = "Username to log in to server. (Defaults to 'guest' if omitted)." + } + "-p" = { + value = "$disk_smb_password$" + description = "Password to log in to server. (Defaults to an empty password if omitted)." + } + "-w" = { + value = "$disk_smb_wused$" + description = "Percent of used space at which a warning will be generated (Default: 85%)." + } + "-c" = { + value = "$disk_smb_cused$" + description = "Percent of used space at which a critical will be generated (Defaults: 95%)" + } + "-P" = { + value = "$disk_smb_port$" + description = "Port to be used to connect to. Some Windows boxes use 139, others 445 (Defaults to smbclient default if omitted)." + } + } + + vars.disk_smb_wused = "85%" + vars.disk_smb_cused = "95%" +} + +object CheckCommand "users" { + command = [ PluginDir + "/check_users" ] + + arguments = { + "-w" = { + value = "$users_wgreater$" + description = "Set WARNING status if more than INTEGER users are logged in" + } + "-c" = { + value = "$users_cgreater$" + description = "Set CRITICAL status if more than INTEGER users are logged in" + } + } + + vars.users_wgreater = 20 + vars.users_cgreater = 50 +} + +object CheckCommand "procs" { + 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" { + command = [ PluginDir + "/check_swap" ] + + arguments = { + "-w" = {{ + if (macro("$swap_integer$")) { + return macro("$swap_wfree$") + } else { + return macro("$swap_wfree$%") + } + }} + "-c" = {{ + if (macro("$swap_integer$")) { + return macro("$swap_cfree$") + } else { + return macro("$swap_cfree$%") + } + }} + "-a" = { + set_if = "$swap_allswaps$" + description = "Conduct comparisons for all swap partitions, one by one" + } + "-n" = { + value = "$swap_noswap$" + description = "Resulting state when there is no swap regardless of thresholds. Possible values are \"ok\", \"warning\", \"critical\", \"unknown\". Defaults to \"critical\"" + } + } + + vars.swap_wfree = 50 + vars.swap_cfree = 25 + vars.swap_integer = false + vars.swap_allswaps = false +} + +object CheckCommand "load" { + command = [ PluginDir + "/check_load" ] + + arguments = { + "-w" = { + value = "$load_wload1$,$load_wload5$,$load_wload15$" + description = "Exit with WARNING status if load average exceeds WLOADn" + } + "-c" = { + value = "$load_cload1$,$load_cload5$,$load_cload15$" + description = "Exit with CRITICAL status if load average exceed CLOADn; the load average format is the same used by 'uptime' and 'w'" + } + "-r" = { + set_if = "$load_percpu$" + description = "Divide the load averages by the number of CPUs (when possible)" + } + } + + 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 + + vars.load_percpu = false +} + +object CheckCommand "snmp" { + command = [ PluginDir + "/check_snmp" ] + + arguments = { + "-H" = { + value = "$snmp_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-o" = { + value = "$snmp_oid$" + description = "Object identifier(s) or SNMP variables whose value you wish to query" + } + "-C" = { + value = "$snmp_community$" + description = "Optional community string for SNMP communication (default is 'public')" + } + "-c" = { + value = "$snmp_crit$" + description = "Critical threshold range(s)" + } + "-w" = { + value = "$snmp_warn$" + description = "Warning threshold range(s)" + } + "-s" = { + value = "$snmp_string$" + description = "Return OK state (for that OID) if STRING is an exact match" + } + "-r" = { + value = "$snmp_ereg$" + description = "Return OK state (for that OID) if extended regular expression REGEX matches" + } + "-R" = { + value = "$snmp_eregi$" + description = "Return OK state (for that OID) if case-insensitive extended REGEX matches" + } + "-l" = { + value = "$snmp_label$" + description = "Prefix label for output from plugin" + } + "-u" = { + value = "$snmp_units$" + description = "Units label(s) for output data (e.g., 'sec.')" + } + "-t" = { + value = "$snmp_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-p" = { + value = "$snmp_port$" + description = "Port number (default: 161)" + } + "-e" = { + value = "$snmp_retries$" + description = "Number of retries to be used in the requests" + } + "--invert-search" = { + set_if = "$snmp_invert_search$" + description = "Invert search result and return CRITICAL if found" + } + "-P" = { + value = "$snmp_version$" + description = "SNMP protocol version" + } + "-m" = { + value = "$snmp_miblist$" + description = "List of MIBS to be loaded (default = none if using numeric OIDs or 'ALL' for symbolic OIDs.)" + } + "--rate-multiplier" = { + value = "$snmp_rate_multiplier$" + description = "Converts rate per second. For example, set to 60 to convert to per minute" + } + "--rate" = { + set_if = "$snmp_rate$" + description = "Enable rate calculation" + } + "-n" = { + set_if = "$snmp_getnext$" + description = "Use SNMP GETNEXT instead of SNMP GET" + } + "--offset" = { + value = "$snmp_offset$" + description = "Add/substract the specified OFFSET to numeric sensor data" + } + "-D" = { + value = "$snmp_output_delimiter$" + description = "Separates output on multiple OID requests" + } + "-O" = { + set_if = "$snmp_perf_oids$" + description = "Label performance data with OIDs instead of --label's" + } + } + + 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 "ipv4-or-ipv6" + + command = [ PluginDir + "/check_snmp" ] + + arguments = { + "-H" = { + value = "$snmpv3_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$snmpv3_port$" + description = "Port number" + } + "-n" = { + set_if = "$snmpv3_getnext$" + description = "Use SNMP GETNEXT instead of SNMP GET" + } + "-P" = { + value = 3 + description = "SNMP protocol version" + } + "-L" = { + value = "$snmpv3_seclevel$" + description = "SNMPv3 securityLevel" + } + "-a" = { + value = "$snmpv3_auth_alg$" + description = "SNMPv3 auth proto" + } + "-U" = { + value = "$snmpv3_user$" + description = "SNMPv3 username" + } + "-N" = { + value = "$snmpv3_context$" + description = "SNMPv3 context" + } + "-A" = { + value = "$snmpv3_auth_key$" + description = "SNMPv3 authentication password" + } + "-X" = { + value = "$snmpv3_priv_key$" + description = "SNMPv3 privacy password" + } + "-o" = { + value = "$snmpv3_oid$" + description = "Object identifier(s) or SNMP variables whose value you wish to query" + } + "-x" = { + value = "$snmpv3_priv_alg$" + description = "SNMPv3 priv proto (default DES)" + } + "-w" = { + value = "$snmpv3_warn$" + description = "Warning threshold range(s)" + } + "-c" = { + value = "$snmpv3_crit$" + description = "Critical threshold range(s)" + } + "-s" = { + value = "$snmpv3_string$" + description = "Return OK state (for that OID) if STRING is an exact match" + } + "-r" = { + value = "$snmpv3_ereg$" + description = "Return OK state (for that OID) if extended regular expression REGEX matches" + } + "-R" = { + value = "$snmpv3_eregi$" + description = "Return OK state (for that OID) if case-insensitive extended REGEX matches" + } + "--invert-search" = { + set_if = "$snmpv3_invert_search$" + description = "Invert search result and return CRITICAL if found" + } + "-l" = { + value = "$snmpv3_label$" + description = "Prefix label for output from plugin" + } + "-m" = { + value = "$snmpv3_miblist$" + description = "List of SNMP MIBs for translating OIDs between numeric and textual representation" + } + "-u" = { + value = "$snmpv3_units$" + description = "Units label(s) for output data (e.g., 'sec.')" + } + "--rate-multiplier" = { + value = "$snmpv3_rate_multiplier$" + description = "Converts rate per second. For example, set to 60 to convert to per minute" + } + "--rate" = { + set_if = "$snmpv3_rate$" + description = "Enable rate calculation" + } + "-t" = { + value = "$snmpv3_timeout$" + description = "Seconds before connection times out (default: 10)" + } + } + + vars.snmpv3_address = "$check_address$" + vars.snmpv3_auth_alg = "SHA" + vars.snmpv3_priv_alg = "AES" + vars.snmpv3_seclevel = "authPriv" + vars.snmpv3_timeout = "10" +} + +object CheckCommand "snmp-uptime" { + import "snmp" + + vars.snmp_oid = "1.3.6.1.2.1.1.3.0" +} + +object CheckCommand "apt" { + command = [ PluginDir + "/check_apt" ] + + arguments = { + // apt-get takes only options starting with "-" (like "-sqq") before + // the upgrade command, so passing e.g. "foobar" as "--upgrade=foobar" + // makes no sense. This allows to easily decide between "-x=-y" + // (strings starting with "-") and "-x" (everything else). + "--upgrade" = { + set_if = {{ + var v = macro("$apt_upgrade$") + return match("-*", string(v).trim()) ? false : v + }} + description = "[Default] Perform an upgrade. If an optional OPTS argument is provided, apt-get will be run with these command line options instead of the default." + } + "--dist-upgrade" = { + set_if = {{ + var v = macro("$apt_dist_upgrade$") + return match("-*", string(v).trim()) ? false : v + }} + description = "Perform a dist-upgrade instead of normal upgrade. Like with -U OPTS can be provided to override the default options." + } + "--upgrade=OPTS" = { + set_if = {{ match("-*", string(macro("$apt_upgrade$")).trim()) }} + key = "--upgrade" + separator = "=" + value = "$apt_upgrade$" + description = "[Default] Perform an upgrade. If an optional OPTS argument is provided, apt-get will be run with these command line options instead of the default." + } + "--dist-upgrade=OPTS" = { + set_if = {{ match("-*", string(macro("$apt_dist_upgrade$")).trim()) }} + key = "--dist-upgrade" + separator = "=" + value = "$apt_dist_upgrade$" + description = "Perform a dist-upgrade instead of normal upgrade. Like with -U OPTS can be provided to override the default options." + } + + "--extra-opts" = { + value = "$apt_extra_opts$" + description = "Read options from an ini file." + } + "--include" = { + value = "$apt_include$" + description = "Include only packages matching REGEXP. Can be specified multiple times the values will be combined together." + } + "--exclude" = { + value = "$apt_exclude$" + description = "Exclude packages matching REGEXP from the list of packages that would otherwise be included. Can be specified multiple times." + } + "--critical" = { + value = "$apt_critical$" + description = "If the full package information of any of the upgradable packages match this REGEXP, the plugin will return CRITICAL status. Can be specified multiple times." + } + "--timeout" = { + value = "$apt_timeout$" + description = "Seconds before plugin times out (default: 10)." + } + "--only-critical" = { + set_if = "$apt_only_critical$" + description = "Only warn about critical upgrades." + } + "--list" = { + set_if = "$apt_list$" + description = "List packages available for upgrade." + } + } + + timeout = 5m +} + +object CheckCommand "dhcp" { + command = [ PluginDir + "/check_dhcp" ] + + arguments = { + "-s" = { + value = "$dhcp_serverip$" + description = "IP address of DHCP server that we must hear from" + } + "-r" = { + value = "$dhcp_requestedip$" + description = "IP address that should be offered by at least one DHCP server" + } + "-t" = { + value = "$dhcp_timeout$" + description = "Seconds to wait for DHCPOFFER before timeout occurs" + } + "-i" = { + value = "$dhcp_interface$" + description = "Interface to to use for listening (i.e. eth0)" + } + "-m" = { + value = "$dhcp_mac$" + description = "MAC address to use in the DHCP request" + } + "-u" = { + set_if = "$dhcp_unicast$" + description = "Unicast testing: mimic a DHCP relay" + } + } + + vars.dhcp_unicast = false +} + +object CheckCommand "dns" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_dns" ] + + arguments = { + "-H" = { + value = "$dns_lookup$" + description = "The name or address you want to query." + } + "-s" = { + value = "$dns_server$" + description = "Optional DNS server you want to use for the lookup." + } + "-q" = { + value = "$dns_query_type$" + description = "Optional DNS record query type where TYPE =(A, AAAA, SRV, TXT, MX, ANY). The default query type is 'A' (IPv4 host entry)" + } + "-a" = { + value = "$dns_expected_answers$" + description = "Optional ip address or host you expect the DNS server to return. Host must end with a dot (.). This option can be repeated multiple times (Returns OK if any value match). If multiple addresses are returned at once: for version 2.2 and earlier of the monitoring-plugins, you have to match the whole string of addresses separated with commas (sorted alphabetically). For version 2.3 and later, you need to pass a list of strings, one for each address you want to match." + } + "-L" = { + set_if = "$dns_all_expected$" + description = "Return critical if the list of expected addresses does not match all addresses returned. Only supported in newer versions of monitoring-plugins (2.3 and later), and is needed in such versions to replicate behaviour of previous versions of the plugins. When not passed, one address is enough for success, instead of all." + } + "-A" = { + set_if = "$dns_authoritative$" + description = "Optionally expect the DNS server to be authoritative for the lookup" + } + "-n" = { + set_if = "$dns_accept_cname$" + description = "Optionally accept cname responses as a valid result to a query. The default is to ignore cname responses as part of the result" + } + "-w" = { + value = "$dns_wtime$" + description = "Return warning if elapsed time exceeds value." + } + "-c" = { + value = "$dns_ctime$" + description = "Return critical if elapsed time exceeds value." + } + "-t" = { + value = "$dns_timeout$" + description = "Seconds before connection times out. Defaults to 10." + } + } + + vars.dns_lookup = "$host.name$" + vars.dns_timeout = 10 +} + +object CheckCommand "dig" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_dig" ] + + arguments = { + "-H" = { + value = "$dig_server$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$dig_port$" + description = "Port number (default: 53)" + } + "-l" = { + value = "$dig_lookup$" + required = true + description = "Machine name to lookup" + } + "-T" = { + value = "$dig_record_type$" + description = "Record type to lookup (default: A)" + } + "-a" = { + value = "$dig_expected_address$" + description = "An address expected to be in the answer section" + } + "-A" = { + value = "$dig_arguments$" + description = "Pass STRING as argument(s) to dig" + } + "-w" = { + value = "$dig_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$dig_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$dig_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-4" = { + set_if = "$dig_ipv4$" + description = "Force dig to only use IPv4 query transport" + } + "-6" = { + set_if = "$dig_ipv6$" + description = "Force dig to only use IPv6 query transport" + } + } + + vars.dig_server = "$check_address$" + vars.check_ipv4 = "$dig_ipv4$" + vars.check_ipv6 = "$dig_ipv6$" +} + +object CheckCommand "nscp" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_nt" ] + + arguments = { + "-H" = { + value = "$nscp_address$" + description = "Name of the host to check" + } + "-p" = { + value = "$nscp_port$" + description = "Optional port number (default: 1248)" + } + "-s" = { + value = "$nscp_password$" + description = "Password needed for the request" + } + "-v" = { + value = "$nscp_variable$" + required = true + description = "Variable to check" + } + "-l" = { + value = "$nscp_params$" + repeat_key = false + } + "-w" = { + value = "$nscp_warn$" + description = "Threshold which will result in a warning status" + } + "-c" = { + value = "$nscp_crit$" + description = "Threshold which will result in a critical status" + } + "-t" = { + value = "$nscp_timeout$" + description = "Seconds before connection attempt times out" + } + "-d" = { + value = "SHOWALL" + set_if = "$nscp_showall$" + description = "Use with SERVICESTATE to see working services or PROCSTATE for running processes" + } + } + + vars.nscp_address = "$check_address$" + vars.nscp_port = 12489 + vars.nscp_showall = false +} + +object CheckCommand "by_ssh" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_by_ssh" ] + + arguments = { + "-H" = { + value = "$by_ssh_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$by_ssh_port$" + description = "Port number (default: none)" + } + "-C" = {{ + var command = macro("$by_ssh_command$") + var arguments = macro("$by_ssh_arguments$") + + if (typeof(command) == String && !arguments) { + return command + } + + var escaped_args = [] + for (arg in resolve_arguments(command, arguments)) { + escaped_args.add(escape_shell_arg(arg)) + } + return escaped_args.join(" ") + }} + "-l" = { + value = "$by_ssh_logname$" + description = "SSH user name on remote host [optional]" + } + "-i" = { + value = "$by_ssh_identity$" + description = "identity of an authorized key [optional]" + } + "-q" = { + set_if = "$by_ssh_quiet$" + description = "Tell ssh to suppress warning and diagnostic messages [optional]" + } + "-w" = { + value = "$by_ssh_warn$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$by_ssh_crit$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$by_ssh_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-o" = { + value = "$by_ssh_options$" + description = "Provide ssh options (may be repeated)" + } + "-4" = { + set_if = "$by_ssh_ipv4$" + description = "Use IPv4 only" + } + "-6" = { + set_if = "$by_ssh_ipv6$" + description = "Use IPv6 only" + } + "-E" = { + value = "$by_ssh_skip_stderr$" + description = "Ignore all or (if specified) first n lines on STDERR [optional]" + } + } + + vars.by_ssh_address = "$check_address$" + vars.by_ssh_quiet = false + vars.check_ipv4 = "$by_ssh_ipv4$" + vars.check_ipv6 = "$by_ssh_ipv6$" +} + +object CheckCommand "ups" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ups" ] + + arguments = { + "-H" = { + value = "$ups_address$" + description = "Address of the upsd server" + required = true + } + "-u" = { + value = "$ups_name$" + description = "Name of the UPS to monitor" + required = true + } + "-p" = { + value = "$ups_port$" + description = "Port number (default: 3493)" + } + "-v" = { + value = "$ups_variable$" + description = "Variable to monitor, valid strings are LINE, TEMP, BATTPCT or LOADPCT" + } + "-w" = { + value = "$ups_warning$" + description = "Warning threshold for the selected variable" + } + "-c" = { + value = "$ups_critical$" + description = "Critical threshold for the selected variable" + } + "-T" = { + set_if = "$ups_celsius$" + description = "Display temperature in degrees Celsius instead of Fahrenheit" + } + "-t" = { + value = "$ups_timeout$" + description = "Seconds before the connection times out (default: 10)" + } + } + + vars.ups_address = "$check_address$" + vars.ups_name = "ups" +} + +object CheckCommand "nrpe" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_nrpe" ] + + arguments = { + "-H" = { + value = "$nrpe_address$" + description = "The address of the host running the NRPE daemon" + } + "-p" = { + value = "$nrpe_port$" + } + "-c" = { + value = "$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" = { + value = "$nrpe_timeout$" + description = "<interval>:<state> = <Number of seconds before connection times out>:<Check state to exit with in the event of a timeout (default=CRITICAL)>" + } + "-a" = { + value = "$nrpe_arguments$" + repeat_key = false + order = 1 + } + "-4" = { + set_if = "$nrpe_ipv4$" + description = "Use IPv4 connection" + } + "-6" = { + set_if = "$nrpe_ipv6$" + description = "Use IPv6 connection" + } + "-2" = { + set_if = "$nrpe_version_2$" + description = "Use this if you want to connect to NRPE v2" + } + "-A" = { + value = "$nrpe_ca$" + description = "The CA file to use for PKI" + } + "-C" = { + value = "$nrpe_cert$" + description = "The cert file to use for PKI" + } + "-K" = { + value = "$nrpe_key$" + description = "The key file to use for PKI" + } + "-S" = { + value = "$nrpe_ssl_version$" + description = "The SSL/TLS version to use" + } + "-L" = { + value = "$nrpe_cipher_list$" + description = "The list of SSL ciphers to use" + } + "-d" = { + value = "$nrpe_dh_opt$" + description = "Anonymous Diffie Hellman use: 0 = deny, 1 = allow, 2 = force" + } + } + + vars.nrpe_address = "$check_address$" + vars.nrpe_no_ssl = false + vars.nrpe_timeout_unknown = false + vars.check_ipv4 = "$nrpe_ipv4$" + vars.check_ipv6 = "$nrpe_ipv6$" + vars.nrpe_version_2 = false + timeout = 5m +} + +object CheckCommand "hpjd" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_hpjd" ] + + arguments = { + "-H" = { + value = "$hpjd_address$" + description = "Host address" + } + "-C" = { + value = "$hpjd_community$" + description = "The SNMP community name (default=public)" + } + "-p" = { + value = "$hpjd_port$" + description = "Specify the port to check (default=161)" + } + } + + vars.hpjd_address = "$check_address$" +} + +object CheckCommand "icmp" { + command = [ PluginDir + "/check_icmp" ] + + arguments = { + "-H" = { + value = "$icmp_address$" + repeat_key = false + order = 1 + description = "Host address" + } + "-w" = { + value = "$icmp_wrta$,$icmp_wpl$%" + description = "warning threshold (currently 200.000ms,40%)" + } + "-c" = { + value = "$icmp_crta$,$icmp_cpl$%" + description = "critical threshold (currently 500.000ms,80%)" + } + "-s" = { + value = "$icmp_source$" + description = "specify a source IP address or device name" + } + "-n" = { + value = "$icmp_packets$" + description = "number of packets to send (currently 5)" + } + "-i" = { + value = "$icmp_packet_interval$" + description = "max packet interval (currently 80.000ms)" + } + "-I" = { + value = "$icmp_target_interval$" + description = "max target interval (currently 0.000ms)" + } + "-m" = { + value = "$icmp_hosts_alive$" + description = "number of alive hosts required for success" + } + "-b" = { + value = "$icmp_data_bytes$" + description = "Number of icmp data bytes to send. Packet size will be data bytes + icmp header (currently 68 + 8)" + } + "-t" = { + value = "$icmp_timeout$" + description = "timeout value (seconds, currently 10)" + } + "-l" = { + value = "$icmp_ttl$" + description = "TTL on outgoing packets (currently 0)" + } + } + + vars.icmp_address = "$address$" + vars.icmp_wrta = 100 + vars.icmp_wpl = 5 + vars.icmp_crta = 200 + vars.icmp_cpl = 15 +} + +object CheckCommand "ldap" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_ldap" ] + + arguments = { + "-H" = { + value = "$ldap_address$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-p" = { + value = "$ldap_port$" + description = "Port number (default: 389)" + } + "-a" = { + value = "$ldap_attr$" + description = "ldap attribute to search (default: \"(objectclass=*)\"" + } + "-b" = { + value = "$ldap_base$" + required = true + description = "ldap base (eg. ou=my unit, o=my org, c=at" + } + "-D" = { + value = "$ldap_bind$" + description = "ldap bind DN (if required)" + } + "-P" = { + value = "$ldap_pass$" + description = "ldap password (if required)" + } + "-T" = { + set_if = "$ldap_starttls$" + description = "use starttls mechanism introduced in protocol version 3" + } + "-S" = { + set_if = "$ldap_ssl$" + description = "use ldaps (ldap v2 ssl method). this also sets the default port to 636" + } + "-2" = { + set_if = "$ldap_v2$" + description = "Use LDAP protocol version 2" + } + "-3" = { + set_if = "$ldap_v3$" + description = "Use LDAP protocol version 3" + } + "-w" = { + value = "$ldap_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$ldap_critical$" + description = "Response time to result in critical status (seconds)" + } + "-W" = { + value = "$ldap_warning_entries$" + description = "Number of found entries to result in warning status (optional)" + } + "-C" = { + value = "$ldap_critical_entries$" + description = "Number of found entries to result in critical status (optional)" + } + "-t" = { + value = "$ldap_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-v" = { + set_if = "$ldap_verbose$" + description = "Show details for command-line debugging" + } + } + + vars.ldap_address = "$check_address$" + vars.ldap_v2 = true + vars.ldap_v3 = false + vars.ldap_timeout = 10s + vars.ldap_verbose = false +} + +object CheckCommand "clamd" { + command = [ PluginDir + "/check_clamd" ] + + arguments = { + "-H" = { + value = "$clamd_address$" + description = "The host's address or unix socket (must be an absolute path)." + required = true + } + "-p" = { + value = "$clamd_port$" + description = "Port number (default: none)." + } + "-e" = { + value = "$clamd_expect$" + description = "String to expect in server response (may be repeated)." + repeat_key = true + } + "-A" = { + set_if = "$clamd_all$" + description = "All expect strings need to occur in server response. Default is any." + } + "-E_send" = { + key = "-E" + order = 1 + set_if = "$clamd_escape_send$" + description = "Enable usage of \n, \r, \t or \\ in send string. Default is nothing." + } + "-s" = { + order = 2 + value = "$clamd_send$" + description = "String to send to the server." + } + "-E_quit" = { + key = "-E" + order = 3 + set_if = "$clamd_escape_quit$" + description = "Can use \n, \r, \t or \\ in quit string. Default is \r\n added to end of quit." + } + "-q" = { + order = 4 + value = "$clamd_quit$" + description = "String to send server to initiate a clean close of the connection." + } + "-r" = { + value = "$clamd_refuse$" + description = "Accept TCP refusals with states ok, warn, crit. Defaults to crit." + } + "-M" = { + value = "$clamd_mismatch$" + description = "Accept expected string mismatches with states ok, warn, crit. Defaults to warn." + } + "-j" = { + set_if = "$clamd_jail$" + description = "Hide output from TCP socket." + } + "-m" = { + value = "$clamd_maxbytes$" + description = "Close connection once more than this number of bytes are received." + } + "-d" = { + value = "$clamd_delay$" + description = "Seconds to wait between sending string and polling for response." + } + "-D" = { + value = "$clamd_certificate$" + description = "Minimum number of days a certificate has to be valid. 1st value is number of days for warning, 2nd is critical (if not specified: 0) - seperated by comma." + } + "-S" = { + set_if = "$clamd_ssl$" + description = "Use SSL for the connection." + } + "-w" = { + value = "$clamd_wtime$" + description = "Response time to result in warning status (seconds)." + } + "-c" = { + value = "$clamd_ctime$" + description = "Response time to result in critical status (seconds)." + } + "-t" = { + value = "$clamd_timeout$" + description = "Seconds before connection times out. Defaults to 10." + } + "-4" = { + set_if = "$clamd_ipv4$" + description = "Use IPv4 only" + } + "-6" = { + set_if = "$clamd_ipv6$" + description = "Use IPv6 only" + } + } + + vars.clamd_ssl = false + vars.clamd_refuse = "crit" + vars.clamd_mismatch = "warn" + vars.clamd_timeout = 10 + vars.check_ipv4 = "$clamd_ipv4$" + vars.check_ipv6 = "$clamd_ipv6$" +} + +object CheckCommand "mailq" { + command = [ PluginDir + "/check_mailq" ] + + arguments = { + "-w" = { + value = "$mailq_warning$" + description = "Min. number of messages in queue to generate warning" + required = true + } + "-c" = { + value = "$mailq_critical$" + description = "Min. number of messages in queue to generate critical alert ( w < c )" + required = true + } + "-W" = { + value = "$mailq_domain_warning$" + description = "Min. number of messages for same domain in queue to generate warning" + } + "-C" = { + value = "$mailq_domain_critical$" + description = "Min. number of messages for same domain in queue to generate critical alert ( W < C )" + } + "-t" = { + value = "$mailq_timeout$" + description = "Plugin timeout in seconds (default = 15)" + } + "-M" = { + value = "$mailq_servertype$" + description = "[ sendmail | qmail | postfix | exim | nullmailer ] (default = autodetect)" + } + "-s" = { + set_if = "$mailq_sudo$" + description = "Use sudo for mailq command" + } + } +} + +object CheckCommand "pgsql" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_pgsql" ] + + arguments = { + "-H" = { + value = "$pgsql_hostname$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-P" = { + value = "$pgsql_port$" + description = "Port number (default: 5432)" + } + "-d" = { + value = "$pgsql_database$" + description = "Database to check (default: template1)" + } + "-l" = { + value = "$pgsql_username$" + description = "Login name of user" + } + "-p" = { + value = "$pgsql_password$" + description = "Password (BIG SECURITY ISSUE)" + } + "-o" = { + value = "$pgsql_options$" + description = "Connection parameters (keyword = value), see below" + } + "-w" = { + value = "$pgsql_warning$" + description = "Response time to result in warning status (seconds)" + } + "-c" = { + value = "$pgsql_critical$" + description = "Response time to result in critical status (seconds)" + } + "-t" = { + value = "$pgsql_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-q" = { + value = "$pgsql_query$" + description = "SQL query to run. Only first column in first row will be read" + } + "-W" = { + value = "$pgsql_query_warning$" + description = "SQL query value to result in warning status (double)" + } + "-C" = { + value = "$pgsql_query_critical$" + description = "SQL query value to result in critical status (double)" + } + } + + vars.pgsql_hostname = "$check_address$" +} + +object CheckCommand "mysql" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_mysql" ] + + arguments = { + "-H" = { + set_if = {{ !macro("$mysql_socket$") }} + value = "$mysql_hostname$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-P" = { + value = "$mysql_port$" + description = "Port number (default: 3306)" + } + "-n" = { + set_if = "$mysql_ignore_auth$" + description = "Ignore authentication failure and check for mysql connectivity only" + } + "-s" = { + value = "$mysql_socket$" + description = "Use the specified socket" + } + "-d" = { + value = "$mysql_database$" + description = "Check database with indicated name" + } + "-f" = { + value = "$mysql_file$" + description = "Read from the specified client options file" + } + "-g" = { + value = "$mysql_group$" + description = "Use a client options group" + } + "-u" = { + value = "$mysql_username$" + description = "Connect using the indicated username" + } + "-p" = { + value = "$mysql_password$" + description = "Use the indicated password to authenticate the connection" + } + "-S" = { + set_if = "$mysql_check_slave$" + description = "Check if the slave thread is running properly" + } + "-w" = { + value = "$mysql_warning$" + description = "Exit with WARNING status if slave server is more than INTEGER seconds behind master" + } + "-c" = { + value = "$mysql_critical$" + description = "Exit with CRITICAL status if slave server is more then INTEGER seconds behind master" + } + "-l" = { + set_if = "$mysql_ssl$" + description = "Use ssl encryptation" + } + "-C" = { + value = "$mysql_cacert$" + description = "Path to CA signing the cert" + } + "-a" = { + value = "$mysql_cert$" + description = "Path to SSL certificate" + } + "-k" = { + value = "$mysql_key$" + description = "Path to private SSL key" + } + "-D" = { + value = "$mysql_cadir$" + description = "Path to CA directory" + } + "-L" = { + value = "$mysql_ciphers$" + description = "List of valid SSL ciphers" + } + } + + vars.mysql_hostname = "$check_address$" +} + +object CheckCommand "negate" { + command = [ PluginDir + "/negate" ] + + arguments = { + "-t" = { + value = "$negate_timeout$" + description = "Seconds before plugin times out (default: 11)" + } + "-T" = { + value = "$negate_timeout_result$" + description = "Custom result on Negate timeouts" + } + "-o" = { + value = "$negate_ok$" + } + "-w" = { + value = "$negate_warning$" + } + "-c" = { + value = "$negate_critical$" + } + "-u" = { + value = "$negate_unknown$" + } + "-s" = { + set_if = "$negate_substitute$" + description = "Substitute output text as well. Will only substitute text in CAPITALS" + } + "--wrapped-plugin" = { + value = {{ + var command = macro("$negate_command$") + var arguments = macro("$negate_arguments$") + + if (typeof(command) == String && !arguments) { + return command + } + + var escaped_args = [] + for (arg in resolve_arguments(command, arguments)) { + escaped_args.add(arg) + } + return escaped_args.join(" ") + }} + skip_key = true + order = 1 + } + } + + vars.negate_timeout_result = "UNKNOWN" +} + +object CheckCommand "file_age" { + command = [ PluginDir + "/check_file_age" ] + + arguments = { + "-w" = { + value = "$file_age_warning_time$" + description = "File must be no more than this many seconds old (default: 240s)" + } + "-c" = { + value = "$file_age_critical_time$" + description = "File must be no more than this many seconds old (default: 600s)" + } + "-W" = { + value = "$file_age_warning_size$" + description = "File must be at least this many bytes long" + } + "-C" = { + value = "$file_age_critical_size$" + description = "File must be at least this many bytes long (default: 0B)" + } + "-i" = { + set_if = "$file_age_ignoremissing$" + description = "return OK if the file does not exist" + } + "-f" = { + value = "$file_age_file$" + description = "File to monitor" + } + } + + vars.file_age_ignoremissing = false +} + +object CheckCommand "smart" { + command = [ PluginDir + "/check_ide_smart" ] + + arguments = { + "-d" = { + value = "$smart_device$" + description = "Name of a local hard drive to monitor" + required = true + } + } +} + +object CheckCommand "breeze" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_breeze" ] + + arguments = { + "-H" = { + value = "$breeze_hostname$" + description = "Name or IP address of host to check" + required = true + } + "-C" = { + value = "$breeze_community$" + description = "SNMPv1 community (default public)" + } + "-w" = { + value = "$breeze_warning$" + description = "Percentage strength below which a WARNING status will result" + required = true + } + "-c" = { + value = "$breeze_critical$" + description = "Percentage strength below which a CRITICAL status will result" + required = true + } + } + + vars.breeze_hostname = "$check_address$" + vars.breeze_warning = "50" + vars.breeze_critical = "20" +} + +object CheckCommand "flexlm" { + command = [ PluginDir + "/check_flexlm" ] + + arguments = { + "-F" = { + value = "$flexlm_licensefile$" + description = "Name of license file (usually license.dat)" + required = true + } + "-t" = { + value = "$flexlm_timeout$" + description = "Plugin time out in seconds (default = 15)" + } + } +} + +object CheckCommand "game" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_game" ] + + arguments = { + "-P" = { + value = "$game_port$" + description = "Port to connect to" + } + "-t" = { + value = "$game_timeout$" + description = "Seconds before connection times out (default: 10)" + } + "-g" = { + value = "$game_gamefield$" + description = "Field number in raw qstat output that contains game name" + } + "-m" = { + value = "$game_mapfield$" + description = "Field number in raw qstat output that contains map name" + } + "-p" = { + value = "$game_pingfield$" + description = "Field number in raw qstat output that contains ping time" + } + "-G" = { + value = "$game_gametime$" + description = "Field number in raw qstat output that contains game time" + } + "-H" = { + value = "$game_hostname$" + description = "Name of the host running the game" + } + "game" = { + value = "$game_game$" + description = "Name of the game" + order = 1 + skip_key = true + } + "ipaddress" = { + value = "$game_ipaddress$" + description = "Ipaddress of the game server to query" + order = 2 + skip_key = true + } + } +} + +object CheckCommand "mysql_query" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_mysql_query" ] + + arguments = { + "-H" = { + value = "$mysql_query_hostname$" + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-P" = { + value = "$mysql_query_port$" + description = "Port number (default: 3306)" + } + "-u" = { + value = "$mysql_query_username$" + description = "Username to login with" + } + "-p" = { + value = "$mysql_query_password$" + description = "Password to login with" + } + "-d" = { + value = "$mysql_query_database$" + description = "Database to check" + } + "-f" = { + value = "$mysql_query_file$" + description = "Read from the specified client options file" + } + "-g" = { + value = "$mysql_query_group$" + description = "Use a client options group" + } + "-q" = { + value = "$mysql_query_execute$" + description = "SQL query to run. Only first column in first row will be read" + } + "-w" = { + value = "$mysql_query_warning$" + description = "Warning range (format: start:end). Alert if outside this range" + } + "-c" = { + value = "$mysql_query_critical$" + description = "Critical range" + } + } + + vars.mysql_query_hostname = "$check_address$" +} + +object CheckCommand "radius" { + import "ipv4-or-ipv6" + + command = [ + PluginDir + "/check_radius", + ] + + arguments = { + "-H" = { + value = "$radius_address$", + description = "Host name, IP Address, or unix socket (must be an absolute path)" + } + "-F" = { + value = "$radius_config_file$", + description = "Configuration file" + } + "-u" = { + value = "$radius_username$", + description = "The user to authenticate" + } + "-p" = { + value = "$radius_password$", + description = "Password for authentication" + } + "-P" = { + value = "$radius_port$", + description = "Port number (default: 1645)" + }, + "-n" = { + value = "$radius_nas_id$", + description = "NAS identifier" + } + "-N" = { + value = "$radius_nas_address$", + description = "NAS IP Address" + }, + "-e" = { + value = "$radius_expect$", + description = "Response string to expect from the server" + }, + "-r" = { + value = "$radius_retries$", + description = "Number of times to retry a failed connection" + }, + "-t" = { + value = "$radius_timeout$", + description = "Seconds before connection times out (default: 10) Optional :<timeout state> can be a state integer (0,1,2,3) or a state STRING" + }, + } + + vars.radius_address = "$check_address$" +} + +object CheckCommand "nscp_api" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_nscp_api" ] + + arguments = { + "-H" = { + value = "$nscp_api_host$" + description = "NSCP API host address" + required = true + } + "-P" = { + value = "$nscp_api_port$" + description = "NSCP API host port. Defaults to 8443." + } + "--password" = { + value = "$nscp_api_password$" + description = "NSCP API password" + } + "-q" = { + value = "$nscp_api_query$" + description = "NSCPI API Query endpoint to use" + } + "-a" = { + value = "$nscp_api_arguments$" + description = "NSCP API Query arguments" + repeat_key = true + } + } + + vars.nscp_api_host = "$check_address$" +} + +object CheckCommand "rpc" { + import "ipv4-or-ipv6" + + command = [ PluginDir + "/check_rpc" ] + + arguments = { + "-H" = { + value = "$rpc_address$" + description = "RPC host address" + required = true + } + "-C" = { + value = "$rpc_command$" + description = "Programm name (or number)" + required = true + } + "-p" = { + value = "$rpc_port$" + description = "RPC port" + } + "-c" = { + value = "$rpc_version$" + description = "The version to check" + } + "-u" = { + set_if = "$rpc_udp$" + description = "Test UDP" + } + "-t" = { + set_if = "$rpc_tcp$" + description = "Test TCP" + } + "-v" = { + set_if = "$rpc_verbose$" + description = "Show verbose details" + } + } + + vars.rpc_address = "$check_address$" +} + +object CheckCommand "uptime" { + command = [ PluginDir + "/check_uptime" ] + + arguments = { + "--warning" = { + value = "$uptime_warning$" + description = "Min. number of uptime to generate warning" + required = true + } + "--critical" = { + value = "$uptime_critical$" + description = "Min. number of uptime to generate critical alert ( w < c )" + required = true + } + "--for" = { + set_if = "$uptime_for$" + description = "Show uptime in a pretty format (Running for x weeks, x days, ...)" + } + "--since" = { + set_if = "$uptime_since$" + description = "Show last boot in yyyy-mm-dd HH:MM:SS format (output from 'uptime -s')" + } + } + + vars.uptime_warning = "30m" + vars.uptime_critical = "15m" +} + diff --git a/itl/hangman b/itl/hangman new file mode 100644 index 0000000..b2feb3a --- /dev/null +++ b/itl/hangman @@ -0,0 +1,165 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +if (!globals.contains("irc")) { + globals.irc = log +} + +hm = { + max_errors = 6 + + h_word = null + h_arr = null + guesses = 0 + errors = 0 + a_arr = null + misses = "" + + if (irc) { + hangman_output = irc + } else { + hangman_output = log + } + + function str2arr(str) { + var arr = [] + + for (i in range(str.len())) { + arr.add(str.substr(i, 1)) + } + + return arr + } + + function init(s) { + s = s.upper() + h_word = s + h_arr = str2arr(h_word) + guesses = 0 + errors = 0 + a_arr = h_arr.clone() + misses = "" + + for (x in range(a_arr.len())) { + a_arr[x] = (h_arr[x] == " ") + } + } + + function print_progress() { + var ir + + for (x in range(a_arr.len())) { + if (a_arr[x]) { + ir += h_arr[x] + } else { + ir += "_" + } + + ir += " " + } + + hangman_output(ir) + hangman_output(errors + "/" + (max_errors + 1) + " errors made: " + misses) + } + + function create_hint() { + var r = Math.floor(Math.random() * a_arr.len()) + if (!a_arr[r]) { + a_arr[r] = true + for (x in range(h_arr.len())) { + if (h_arr[x] == h_arr[r]) { + a_arr[x]=true + } + } + } else { + if (a_arr.contains(false)) { + create_hint() + } else { + winner() + } + } + + if (!a_arr.contains(false)) { + winner() + } + } + + function hint(i) { + for (x in range(i)) { + create_hint() + } + + print_progress() + } + + function winner() { + if (h_word) { + hangman_output("Congratulations, you are a winner in " + guesses + " guesses.") + h_word = null + } + } + + function guess(s) { + if (!h_word) { + hangman_output("Please set a word with hm.init(\"word\")") + return + } + + s = s.upper() + + if (s.len() != 1) { + hangman_output("NEIN!") + return + } + + var correct = false + for (x in range(h_arr.len())) { + if (h_arr[x] == s) { + a_arr[x] = true + correct = true + } + } + + if (!correct) { + misses += s + " " + errors += 1 + } + + print_progress() + + guesses += 1 + + if (!a_arr.contains(false)) { + winner() + return + } + + if (errors > max_errors) { + hangman_output("You died...") + hangman_output(" ________") + hangman_output(" |/ |") + hangman_output(" | (_)") + hangman_output(" | \\|/") + hangman_output(" | |") + hangman_output(" | / \\") + hangman_output(" |") + hangman_output("_|___") + remove("h_word") + return + } + } + + function clone() { + var n = Dictionary.prototype.clone.call(this) + + if (h_arr) { + n.h_arr = h_arr.clone() + } + + if (a_arr) { + n.a_arr = a_arr.clone() + } + + return n + } +} + @@ -0,0 +1,8 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * This is the Icinga Templare Library, a collection of general purpose Icinga + * configuration templates. + */ + +include "command-icinga.conf" diff --git a/itl/manubulon b/itl/manubulon new file mode 100644 index 0000000..6b6855d --- /dev/null +++ b/itl/manubulon @@ -0,0 +1,7 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * This is the SNMP Manubulon Template Library. + */ + +include "command-plugins-manubulon.conf" diff --git a/itl/nscp b/itl/nscp new file mode 100644 index 0000000..c62513e --- /dev/null +++ b/itl/nscp @@ -0,0 +1,3 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +include "command-nscp-local.conf" diff --git a/itl/plugins b/itl/plugins new file mode 100644 index 0000000..edfe4ce --- /dev/null +++ b/itl/plugins @@ -0,0 +1,8 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * This is the Icinga Templare Library, a collection of general purpose Icinga + * configuration templates. This part includes the plugin commands. + */ + +include "command-plugins.conf" diff --git a/itl/plugins-contrib b/itl/plugins-contrib new file mode 100644 index 0000000..f2f56e0 --- /dev/null +++ b/itl/plugins-contrib @@ -0,0 +1,9 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * This is a directory for various contributed command definitions. + * Plugins should be organized by a category, e.g. database plugins are in + * plugins-contrib.d/databases.conf + */ + +include_recursive "plugins-contrib.d" diff --git a/itl/plugins-contrib.d/CMakeLists.txt b/itl/plugins-contrib.d/CMakeLists.txt new file mode 100644 index 0000000..b6386b8 --- /dev/null +++ b/itl/plugins-contrib.d/CMakeLists.txt @@ -0,0 +1,6 @@ +# Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ + +install( + FILES big-data.conf databases.conf hardware.conf icingacli.conf ipmi.conf logmanagement.conf metrics.conf network-components.conf network-services.conf operating-system.conf raid-controller.conf smart-attributes.conf storage.conf systemd.conf virtualization.conf vmware.conf web.conf + DESTINATION ${ICINGA2_INCLUDEDIR}/plugins-contrib.d +) diff --git a/itl/plugins-contrib.d/big-data.conf b/itl/plugins-contrib.d/big-data.conf new file mode 100644 index 0000000..7d3d6f1 --- /dev/null +++ b/itl/plugins-contrib.d/big-data.conf @@ -0,0 +1,112 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "cloudera_service_status" { + command = [ PluginContribDir + "/check_cloudera_service_status.py" ] + + arguments = { + "-H" = { + description = "host" + value = "$cloudera_host$" + required = true + } + "-P" = { + description = "port" + value = "$cloudera_port$" + required = false + } + "-u" = { + description = "user" + value = "$cloudera_user$" + required = true + } + "-p" = { + description = "pass" + value = "$cloudera_pass$" + required = true + } + "-v" = { + description = "api_version" + value = "$cloudera_api_version$" + required = true + } + "-c" = { + description = "cluster" + value = "$cloudera_cluster$" + required = true + } + "-s" = { + description = "service" + value = "$cloudera_service$" + required = true + } + "-k" = { + description = "verify_ssl" + value = "$cloudera_verify_ssl$" + required = false + } + } +} + +object CheckCommand "cloudera_hdfs_space" { + command = [ PluginContribDir + "/check_cloudera_hdfs_space.py" ] + + arguments = { + "-H" = { + description = "Namenode host" + value = "$cloudera_hdfs_space_host$" + required = true + } + "-P" = { + description = "Namenode port (default 50070)" + value = "$cloudera_hdfs_space_port$" + required = false + } + "-d" = { + description = "HDFS disk to check" + value = "$cloudera_hdfs_space_disk$" + required = true + } + "-w" = { + description = "Warning threshold in percent" + value = "$cloudera_hdfs_space_warn$" + required = true + } + "-c" = { + description = "Critical threshold in percent" + value = "$cloudera_hdfs_space_crit$" + required = true + } + } +} + +object CheckCommand "cloudera_hdfs_files" { + command = [ PluginContribDir + "/check_cloudera_hdfs_files.py" ] + + arguments = { + "-H" = { + description = "Namenode host" + value = "$cloudera_hdfs_files_host$" + required = true + } + "-P" = { + description = "Namenode port (default 50070)" + value = "$cloudera_hdfs_files_port$" + required = false + } + "-w" = { + description = "Warning threshold" + value = "$cloudera_hdfs_files_warn$" + required = true + } + "-c" = { + description = "Critical threshold" + value = "$cloudera_hdfs_files_crit$" + required = true + } + "-m" = { + description = "Max files count that causes problems (default 140000000)" + value = "$cloudera_hdfs_files_max$" + required = false + } + } +} diff --git a/itl/plugins-contrib.d/databases.conf b/itl/plugins-contrib.d/databases.conf new file mode 100644 index 0000000..b47862b --- /dev/null +++ b/itl/plugins-contrib.d/databases.conf @@ -0,0 +1,949 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "mssql_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_mssql_health" ] + + arguments = { + "--hostname" = { + value = "$mssql_health_hostname$" + description = "the database server's hostname" + } + "--username" = { + value = "$mssql_health_username$" + description = "the mssql db user" + } + "--password" = { + value = "$mssql_health_password$" + description = "the mssql db user's password" + } + "--port" = { + value = "$mssql_health_port$" + description = "the database's port" + } + "--server" = { + value = "$mssql_health_server$" + description = "the name of a predefined connection" + } + "--currentdb" = { + value = "$mssql_health_currentdb$" + description = "the name of a database which is used as the current database for the connection" + } + "--offlineok" = { + set_if = "$mssql_health_offlineok$" + description = "if offline databases are perfectly ok for you" + } + "--nooffline" = { + set_if = "$mssql_health_nooffline$" + description = "Skip the offline databases" + } + "--dbthresholds" = { + value = "$mssql_health_dbthresholds$" + description = "Read thresholds from a database table" + } + "--notemp" = { + set_if = "$mssql_health_notemp$" + description = "Ignore temporary databases/tablespaces" + } + "--commit" = { + set_if = "$mssql_health_commit$" + description = "turns on autocommit for the dbd::sybase module" + } + "--method" = { + value = "$mssql_health_method$" + description = "how the plugin should connect to the database (dbi for using DBD::Sybase (default), sqlrelay for the SQLRelay proxy)" + } + "--mode" = { + value = "$mssql_health_mode$" + description = "the mode of the plugin" + } + "--regexp" = { + set_if = "$mssql_health_regexp$" + description = "name will be interpreted as a regular expression" + } + "--warning" = { + value = "$mssql_health_warning$" + description = "the warning range" + } + "--critical" = { + value = "$mssql_health_critical$" + description = "the critical range" + } + "--warningx" = { + value = "$mssql_health_warningx$" + description = "The extended warning thresholds" + } + "--criticalx" = { + value = "$mssql_health_criticalx$" + description = "The extended critical thresholds" + } + "--units" = { + value = "$mssql_health_units$" + description = "This is used for a better output of mode=sql and for specifying thresholds for mode=tablespace-free" + } + "--name" = { + value = "$mssql_health_name$" + description = "the name of the database etc depending on the mode" + } + "--name2" = { + value = "$mssql_health_name2$" + description = "if name is a sql statement, name2 can be used to appear in the output and the performance data" + } + "--name3" = { + value = "$mssql_health_name3$" + description = "The tertiary name of a component" + } + "--extra-opts" = { + value = "$mssql_health_extraopts$" + description = "read command line arguments from an external file" + } + "--blacklist" = { + value = "$mssql_health_blacklist$" + description = "Blacklist some (missing/failed) components" + } + "--mitigation" = { + value = "$mssql_health_mitigation$" + description = "The parameter allows you to change a critical error to a warning." + } + "--lookback" = { + value = "$mssql_health_lookback$" + description = "The amount of time you want to look back when calculating average rates" + } + "--environment" = { + value = "$mssql_health_environment$" + description = "Add a variable to the plugin's environment." + } + "--negate" = { + value = "$mssql_health_negate$" + description = "Emulate the negate plugin. --negate warning=critical --negate unknown=critical." + } + "--morphmessage" = { + value = "$mssql_health_morphmessage$" + description = "Modify the final output message." + } + "--morphperfdata" = { + value = "$mssql_health_morphperfdata$" + description = "The parameter allows you to change performance data labels." + } + "--selectedperfdata" = { + value = "$mssql_health_selectedperfdata$" + description = "The parameter allows you to limit the list of performance data." + } + "--report" = { + value = "$mssql_health_report$" + description = "Report can be used to output only the bad news (short,long,html)" + } + "--multiline" = { + value = "$mssql_health_multiline$" + description = "Multiline output." + } + "--with-mymodules-dyn-dir" = { + value = "$mssql_health_withmymodulesdyndir$" + description = "Add-on modules for the my-modes will be searched in this directory." + } + "--statefilesdir" = { + value = "$mssql_health_statefilesdir$" + description = "An alternate directory where the plugin can save files." + } + "--isvalidtime" = { + value = "$mssql_health_isvalidtime$" + description = "Signals the plugin to return OK if now is not a valid check time." + } + "--timeout" = { + value = "$mssql_health_timeout$" + description = "Seconds before plugin times out (default: 15)" + } + } + + vars.mssql_health_regexp = false + vars.mssql_health_offlineok = false + vars.mssql_health_commit = false + vars.mssql_health_notemp = false + vars.mssql_health_nooffline = false + vars.mssql_health_report = "short" +} + +object CheckCommand "mysql_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_mysql_health" ] + + arguments = { + "--hostname" = { + value = "$mysql_health_hostname$" + description = "the database server's hostname" + } + "--port" = { + value = "$mysql_health_port$" + description = "the database's port" + } + "--socket" = { + value = "$mysql_health_socket$" + description = "the database's unix socket" + } + "--username" = { + value = "$mysql_health_username$" + description = "the mysql db user" + } + "--password" = { + value = "$mysql_health_password$" + description = "the mysql db user's password" + } + "--database" = { + value = "$mysql_health_database$" + description = "the database's name" + } + "--warning" = { + value = "$mysql_health_warning$" + description = "the warning range" + } + "--critical" = { + value = "$mysql_health_critical$" + description = "the critical range" + } + "--warningx" = { + value = "$mysql_health_warningx$" + description = "The extended warning thresholds" + } + "--criticalx" = { + value = "$mysql_health_criticalx$" + description = "The extended critical thresholds" + } + "--mode" = { + value = "$mysql_health_mode$" + description = "the mode of the plugin" + } + "--method" = { + value = "$mysql_health_method$" + description = "how the plugin should connect to the database (dbi for using DBD::mysql (default), mysql for using the mysql-Tool)" + } + "--commit" = { + value = "$mysql_health_commit$" + description = "turns on autocommit for the dbd::* module" + } + "--notemp" = { + value = "$mysql_health_notemp$" + description = "Ignore temporary databases/tablespaces" + } + "--nooffline" = { + value = "$mysql_health_nooffline$" + description = "skip the offline databases" + } + "--regexp" = { + value = "$mysql_health_regexp$" + description = " Parameter name/name2/name3 will be interpreted as (perl) regular expression." + } + "--name" = { + value = "$mysql_health_name$" + description = "The name of a specific component to check" + } + "--name2" = { + value = "$mysql_health_name2$" + description = "The secondary name of a component" + } + "--name3" = { + value = "$mysql_health_name3$" + description = "The tertiary name of a component" + } + "--units" = { + value = "$mysql_health_units$" + description = "This is used for a better output of mode=sql and for specifying thresholds for mode=tablespace-free" + } + "--labelformat" = { + value = "$mysql_health_labelformat$" + description = "one of pnp4nagios (which is the default) or groundwork" + } + "--extra-opts" = { + value = "$mysql_health_extraopts$" + description = "Read command line arguments from an external file." + } + "--blacklist" = { + value = "$mysql_health_blacklist$" + description = "Blacklist some (missing/failed) components" + } + "--mitigation" = { + value = "$mysql_health_mitigation$" + description = "The parameter allows you to change a critical error to a warning." + } + "--lookback" = { + value = "$mysql_health_lookback$" + description = "The amount of time you want to look back when calculating average rates." + } + "--environment" = { + value = "$mysql_health_environment$" + description = "Add a variable to the plugin's environment." + } + "--morphmessage" = { + value = "$mysql_health_morphmessage$" + description = "Modify the final output message." + } + "--morphperfdata" = { + value = "$mysql_health_morphperfdata$" + description = "The parameter allows you to change performance data labels." + } + "--selectedperfdata" = { + value = "$mysql_health_selectedperfdata$" + description = "The parameter allows you to limit the list of performance data." + } + "--report" = { + value = "$mysql_health_report$" + description = "Can be used to shorten the output." + } + "--multiline" = { + value = "$mysql_health_multiline$" + description = "Multiline output." + } + "--negate" = { + value = "$mysql_health_negate$" + description = "Emulate the negate plugin. --negate warning=critical --negate unknown=critical." + } + "--with-mymodules-dyn-dir" = { + value = "$mysql_health_withmymodulesdyndir$" + description = "Add-on modules for the my-modes will be searched in this directory." + } + "--statefilesdir" = { + value = "$mysql_health_statefilesdir$" + description = "An alternate directory where the plugin can save files." + } + "--isvalidtime" = { + value = "$mysql_health_isvalidtime$" + description = "Signals the plugin to return OK if now is not a valid check time." + } + "--timeout" = { + value = "$mysql_health_timeout$" + description = "plugin timeout. Default is 60 seconds" + } + } + + vars.mysql_health_hostname = "$check_address$" +} + +object CheckCommand "db2_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_db2_health" ] + + arguments = { + "--hostname" = { + value = "$db2_health_hostname$" + set_if = "$db2_health_not_catalogued$" + description = "the host to connect" + order = -2 + } + "--database" = { + value = "$db2_health_database$" + description = "the database to connect" + order = 0 + } + "--username" = { + value = "$db2_health_username$" + description = "the db2 user" + order = 1 + } + "--password" = { + value = "$db2_health_password$" + description = "the db2 user's password" + order = 2 + } + "--port" = { + value = "$db2_health_port$" + description = "the db2 port for connection" + order = -1 + } + "--warning" = { + value = "$db2_health_warning$" + description = "the warning range" + order = 5 + } + "--critical" = { + value = "$db2_health_critical$" + description = "the critical range" + order = 6 + } + "--mode" = { + value = "$db2_health_mode$" + description = "the mode of the plugin" + order = 3 + } + "--name" = { + value = "$db2_health_name$" + description = "the name of the tablespace, datafile, wait event, latch, enqueue, or sql statement depending on the mode" + order = 4 + } + "--name2" = { + value = "$db2_health_name2$" + description = "if name is a sql statement, name2 can be used to appear in the output and the performance data" + order = 7 + } + "--regexp" = { + set_if = "$db2_health_regexp$" + description = "name will be interpreted as a regular expression" + } + "--units" = { + value = "$db2_health_units$" + description = "This is used for a better output of mode=sql and for specifying thresholds for mode=tablespace-free" + } + "--maxinactivity" = { + value = "$db2_health_maxinactivity$" + description = "used for the maximum amount of time a certain event has not happened." + } + "--mitigation" = { + value = "$db2_health_mitigation$" + description = "let you classify the severity of an offline tablespace." + } + "--lookback" = { + value = "$db2_health_lookback$" + description = "How many days iin the past db2_health check should look back to calculate exitcode." + } + "--report" = { + value = "$db2_health_report$" + description = "Report can be used to output only the bad news (short,long,html)" + } + } + + env = { + "DB2_HOME" = "$db2_health_env_db2_home$" + "DB2_VERSION" = "$db2_health_env_db2_version$" + } + + vars.db2_health_regexp = false + vars.db2_health_not_catalogued = true + vars.db2_health_hostname = "$check_address$" + vars.db2_health_report = "short" + + vars.db2_health_env_db2_home = "/opt/ibm/db2/V10.5" + vars.db2_health_env_db2_version = "10.5" +} + +object CheckCommand "oracle_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_oracle_health" ] + + arguments = { + "--connect" = { + value = "$oracle_health_connect$" + description = "the connect string" + } + "--username" = { + value = "$oracle_health_username$" + description = "the oracle user" + } + "--password" = { + value = "$oracle_health_password$" + description = "the oracle user's password" + } + "--warning" = { + value = "$oracle_health_warning$" + description = "the warning range" + } + "--critical" = { + value = "$oracle_health_critical$" + description = "the critical range" + } + "--mode" = { + value = "$oracle_health_mode$" + description = "the mode of the plugin" + } + "--method" = { + value = "$oracle_health_method$" + description = "how the plugin should connect to the database (dbi for using DBD::Oracle (default), sqlplus for using the sqlplus-Tool)" + } + "--name" = { + value = "$oracle_health_name$" + description = "the name of the tablespace, datafile, wait event, latch, enqueue, or sql statement depending on the mode" + } + "--name2" = { + value = "$oracle_health_name2$" + description = "if name is a sql statement, name2 can be used to appear in the output and the performance data" + } + "--regexp" = { + set_if = "$oracle_health_regexp$" + description = "name will be interpreted as a regular expression" + } + "--units" = { + value = "$oracle_health_units$" + description = "This is used for a better output of mode=sql and for specifying thresholds for mode=tablespace-free" + } + "--ident" = { + set_if = "$oracle_health_ident$" + description = "outputs instance and database names" + } + "--commit" = { + set_if = "$oracle_health_commit$" + description = "turns on autocommit for the dbd::oracle module" + } + "--noperfdata" = { + set_if = "$oracle_health_noperfdata$" + description = "do not output performance data" + } + "--timeout" = { + value = "$oracle_health_timeout$" + description = "plugin timeout. Default is 60 seconds" + } + "--report" = { + value = "$oracle_health_report$" + description = "select the plugin output format. Can be short, long or html. Default is long" + } + "--notemp" = { + set_if = "$oracle_health_notemp$" + description = "exclude temporary and system tables" + } + } + + env = { + "ORACLE_HOME" = "$oracle_home$" + "LD_LIBRARY_PATH" = "$oracle_ld_library_path$" + "TNS_ADMIN" = "$oracle_tns_admin$" + } + + vars.oracle_health_regexp = false + vars.oracle_health_ident = false + vars.oracle_health_commit = false + vars.oracle_health_noperfdata = false + vars.oracle_health_report = "long" + vars.oracle_health_notemp = false + + vars.oracle_home = "/usr/lib/oracle/11.2/client64/lib" + vars.oracle_ld_library_path = "/usr/lib/oracle/11.2/client64/lib" + vars.oracle_tns_admin = ConfigDir + "/plugin-configs" +} + +object CheckCommand "postgres" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_postgres.pl" ] + + arguments = { + "-H" = { + value = "$postgres_host$" + set_if = {{ macro("$postgres_unixsocket$") == false }} + description = "hostname(s) to connect to; defaults to none (Unix socket)" + } + "-p" = { + value = "$postgres_port$" + description = "port(s) to connect to; defaults to 5432" + } + "-db" = { + value = "$postgres_dbname$" + description = "database name(s) to connect to; defaults to 'postgres' or 'template1'" + } + "-u" = { + value = "$postgres_dbuser$" + description = "database user(s) to connect as; defaults to 'postgres'" + } + "--dbpass" = { + value = "$postgres_dbpass$" + description = "database password(s); use a .pgpass file instead when possible" + } + "--dbservice" = { + value = "$postgres_dbservice$" + description = "service name to use inside of pg_service.conf" + } + "-w" = { + value = "$postgres_warning$" + description = "the warning threshold, range depends on the action" + } + "-c" = { + value = "$postgres_critical$" + description = "the critical threshold, range depends on the action" + } + "--include" = { + value = "$postgres_include$" + description = "name(s) items to specifically include (e.g. tables), depends on the action" + } + "--exclude" = { + value = "$postgres_exclude$" + description = "name(s) items to specifically exclude (e.g. tables), depends on the action" + } + "--includeuser" = { + value = "$postgres_includeuser$" + description = "include objects owned by certain users" + } + "--excludeuser" = { + value = "$postgres_excludeuser$" + description = "exclude objects owned by certain users" + } + "--assume-standby-mode" = { + set_if = "$postgres_standby$" + description = "assume that server in continious WAL recovery mode" + } + "--assume-prod" = { + set_if = "$postgres_production$" + description = "assume that server in production mode" + } + "--action" = { + value = "$postgres_action$" + description = "determines the test executed" + } + "--query" = { + value = "$postgres_query$" + description = "query for custom_query action" + } + "--valtype" = { + value = "$postgres_valtype$" + description = "determines the result type for custom_query action" + } + "--reverse" = { + set_if = "$postgres_reverse$" + description = "reverses warning and critical for custom_query action" + } + "--tempdir" = { + value = "$postgres_tempdir$" + description = "specify directory for temporary files. default depends on the OS" + } + } + + vars.postgres_host = "$check_address$" + vars.postgres_standby = false + vars.postgres_production = false + vars.postgres_unixsocket = false +} + +object CheckCommand "mongodb" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_mongodb.py" ] + + arguments = { + "-H" = { + value = "$mongodb_host$" + description = "The hostname you want to connect to" + } + "-P" = { + value = "$mongodb_port$" + description = "The port mongodb is runnung on" + } + "-u" = { + value = "$mongodb_user$" + description = "The username you want to login as" + } + "-p" = { + value = "$mongodb_passwd$" + description = "The password you want to use for that user" + } + "-a" = { + value = "$mongodb_authdb$" + description = "The database you want to authenticate against" + } + "-A" = { + value = "$mongodb_action$" + description = "The action you want to take" + } + "-c" = { + value = "$mongodb_collection$" + description = "Specify the collection to check" + } + "-T" = { + value = "$mongodb_sampletime$" + description = "Time used to sample number of pages faults" + } + "-q" = { + value = "$mongodb_querytype$" + description = "The query type to check [query|insert|update|delete|getmore|command] from queries_per_second" + } + "--database" = { + value = "$mongodb_database$" + description = "Specify the database to check" + } + "-D" = { + set_if = "$mongodb_perfdata$" + description = "Enable output of Nagios performance data" + } + "--max-lag" = { + set_if = "$mongodb_maxlag$" + description = "Get max replication lag (for replication_lag action only)" + } + "--mapped-memory" = { + set_if = "$mongodb_mappedmemory$" + description = "Get mapped memory instead of resident (if resident memory can not be read)" + } + "--ssl" = { + set_if = "$mongodb_ssl$" + description = "Connect using SSL" + } + "--replicaset" = { + value = "$mongodb_replicaset$" + set_if = "$mongodb_replcheck$" + description = "Connect to replicaset" + } + "--all-databases" = { + set_if = "$mongodb_alldatabases$" + description = "Check all databases (action database_size)" + } + "-C" = { + value = "$mongodb_critical$" + description = "The critical threshold we want to set" + } + "-W" = { + value = "$mongodb_warning$" + description = "The warning threshold we want to set" + } + } + + vars.mongodb_host = {{ + var mongodbAddress = macro("$mongodb_address$") + var checkAddress = macro("$check_address$") + + if (mongodbAddress) { + log(LogWarning, "CheckerComponent", "The attribute 'mongodb_address' is deprecated, use 'mongodb_host' instead.") + return mongodbAddress + } else { + return checkAddress + } + }} + + vars.mongodb_perfdata = true + vars.mongodb_action = "connections" +} + +object CheckCommand "elasticsearch" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_elasticsearch" ] + + arguments = { + "--failure-domain" = { + value = "$elasticsearch_failuredomain$" + description = "A comma-separated list of ElasticSearch attributes that make up your cluster's failure domain" + } + "--host" = { + value = "$elasticsearch_host$" + description = "Hostname or network address to probe, defaults to 'localhost'" + } + "--master-nodes" = { + value = "$elasticsearch_masternodes$" + description = "Issue a warning if the number of master-eligible nodes in the cluster drops below this number. By default, do not monitor the number of nodes in the cluster" + } + "--port" = { + value = "$elasticsearch_port$" + description = "TCP port to probe, defaults to 9200" + } + "--prefix" = { + value = "$elasticsearch_prefix$" + description = "Optional prefix for the ElasticSearch API, defaults to ''" + } + "--yellow-critical" = { + value = "TRUE" + set_if = "$elasticsearch_yellowcritical$" + description = "Instead of issuing a 'warning' for a yellow cluster state, issue a 'critical' alert" + } + } + + vars.elasticsearch_host = "$check_address$" + vars.elasticsearch_yellowcritical = false +} + +object CheckCommand "redis" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_redis.pl" ] + + arguments = { + "--hostname" = { + value = "$redis_hostname$" + description = "Hostname or IP Address to check." + } + "--port" = { + value = "$redis_port$" + description = "Port number (default: 6379)." + } + "--database" = { + value = "$redis_database$" + description = "Optional database name (usually a number), needed for redis_query." + } + "--password" = { + value = "$redis_password$" + description = "Password for Redis authentication. Safer alternative is to put them in a file and use redis_credentials." + } + "--credentials" = { + value = "$redis_credentials$" + description = "Credentials file to read for Redis authentication." + } + "--timeout" = { + value = "$redis_timeout$" + description = "Allows to set timeout for execution of this plugin." + } + "--variables" = { + value = "$redis_variables$" + description = "List of variables from info data to do threshold checks on." + } + "--warn" = { + value = "$redis_warn$" + description = "This option can only be used if redis_variables is used and number of values listed here must exactly match number of variables specified." + } + "--crit" = { + value = "$redis_crit$" + description = "This option can only be used if redis_variables is used and number of values listed here must exactly match number of variables specified." + } + "--perfparse" = { + set_if = "$redis_perfparse$" + description = "This should only be used with variables and causes variable data not only to be printed as part of main status line but also as perfparse compatible output." + } + "--perfvars" = { + value = "$redis_perfvars$" + description = "This allows to list variables which values will go only into perfparse output (and not for threshold checking)." + } + "--prev_perfdata" = { + value = "$service.perfdata$" + set_if = "$redis_prev_perfdata$" + description = "Previous performance data used to calculate rate of change for counter statistics variables and for proper calculation of hitrate." + } + "--rate_label" = { + value = "$redis_rate_label$" + description = "Prefix or Suffix label used to create a new variable which has rate of change of another base variable." + } + "--query" = { + value = "$redis_query$" + repeat_key = true + description = "Option specifies key to query and optional variable name to assign the results to after. See the help output of the plugin for the detailed format." + } + "--option" = { + value = "$redis_option$" + repeat_key = true + description = "Specifiers are separated by , and must include NAME or PATTERN. See the help output of the plugin for the detailed format." + } + "--response_time" = { + value = "$redis_response_time$" + description = "If this is used plugin will measure and output connection response time in seconds. With perfparse this would also be provided on perf variables." + } + "--hitrate" = { + value = "$redis_hitrate$" + description = "Calculates Hitrate." + } + "--memory_utilization" = { + value = "$redis_memory_utilization$" + description = "This calculates percent of total memory on system used by redis." + } + "--total_memory" = { + value = "$redis_total_memory$" + description = "Amount of memory on a system for memory utilization calculations above." + } + "--replication_delay" = { + value = "$redis_replication_delay$" + description = "Allows to set threshold on replication delay info." + } + } + + vars.redis_hostname = "$check_address$" + vars.redis_perfparse = false + vars.redis_prev_perfdata = false +} + +object CheckCommand "proxysql" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_proxysql" ] + + arguments = { + "--user" = { + value = "$proxysql_user$" + description = "ProxySQL admin username (default=admin)" + } + "--password" = { + value = "$proxysql_password$" + description = "ProxySQL admin password (default=admin)" + } + "--host" = { + value = "$proxysql_host$" + description = "ProxySQL hostname / IP (default=127.0.0.1)" + } + "--port" = { + value = "$proxysql_port$" + description = "ProxySQL admin port (default=6032)" + } + "--defaults-file" = { + value = "$proxysql_defaultfile$" + description = "ProxySQL defaults file" + } + "--type" = { + value = "$proxysql_type$" + description = "ProxySQL check type (one of conns,hg,rules,status,var)" + required = true + } + "--name" = { + value = "$proxysql_name$" + description = "ProxySQL variable name to check" + } + "--lower" = { + value = "$proxysql_lower$" + description = "Alert if ProxySQL value are LOWER than defined WARN / CRIT thresholds (only applies to 'var' check type)" + } + "--runtime" = { + value = "$proxysql_runtime$" + description = "Force ProxySQL Nagios check to query the runtime_mysql_XXX tables rather than the mysql_XXX tables" + } + "--warning" = { + value = "$proxysql_warning$" + description = "Warning threshold" + } + "--critical" = { + value = "$proxysql_critical$" + description = "Critical threshold" + } + "--include-hostgroup" = { + value = "$proxysql_include_hostgroup$" + description = "ProxySQL hostgroup(s) to include (only applies to '--type hg' checks, accepts comma-separated list)" + } + "--ignore-hostgroup" = { + value = "$proxysql_ignore_hostgroup$" + description = "ProxySQL hostgroup(s) to ignore (only applies to '--type hg' checks, accepts comma-separated list)" + } + } +} + +object CheckCommand "memcached" { + command = [ PluginContribDir + "/check_memcached" ] + + arguments = { + "-H" = { + value = "$memcached_hostname$" + required = true + description = "Hostname or IP address (required) optional ':port' overrides -p" + } + "-p" = { + value = "$memcached_port$" + description = "Port number (default: 11211)" + } + "-v" = { + set_if = "$memcached_verbose$" + description = "verbose messages" + } + "-n" = { + value = "$memcached_keep$" + description = "Keep up to this many items in the history object in memcached (default: 30)" + } + "-T" = { + value = "$memcached_minimum_stat_interval$" + description = "Minimum time interval (in minutes) to use to analyse stats. (default: 30)" + } + "-w" = { + value = "$memcached_warning_hits_misses$" + description = "Generate warning if quotient of hits/misses falls below this value (default: 2.0)" + } + "-E" = { + value = "$memcached_warning_evictions$" + description = "Generate warning if number of evictions exceeds this threshold. 0=disable. (default: 10)" + } + "-t" = { + value = "$memcached_timeout$" + description = "timeout in seconds (default: 1.0)" + } + "-k" = { + value = "$memcached_key$" + description = "key name for history object (default: check_memcached)" + } + "-K" = { + value = "$memcached_expiry$" + description = "expiry time in seconds for history object (default: 7200)" + } + "-r" = { + set_if = "$memcached_performance_output$" + description = "output performance statistics as rate-per-minute figures (better suited to pnp4nagios)" + } + } + + vars.memcached_hostname = "127.0.0.1" + vars.memcached_minimum_stat_interval = "10" + vars.memcached_performance_output = true +} diff --git a/itl/plugins-contrib.d/hardware.conf b/itl/plugins-contrib.d/hardware.conf new file mode 100644 index 0000000..c412cb7 --- /dev/null +++ b/itl/plugins-contrib.d/hardware.conf @@ -0,0 +1,267 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "hpasm" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_hpasm" ] + + arguments = { + "--hostname" = { + value = "$hpasm_hostname$" + set_if = "$hpasm_remote$" + description = "Hostname or IP-address of the server (SNMP mode only)" + } + "--community" = { + value = "$hpasm_community$" + description = "SNMP community of the server (SNMP v1/2 only)" + } + "--protocol" = { + value = "$hpasm_protocol$" + description = "The SNMP protocol to use (default: 2c, other possibilities: 1,3)" + } + "--port" = { + value = "$hpasm_port$" + description = "The SNMP port to use (default: 161)" + } + "--blacklist" = { + value = "$hpasm_blacklist$" + description = "Blacklist some (missing/failed) components" + } + "--ignore-dimms" = { + set_if = "$hpasm_ignore-dimms$" + description = "Ignore \"N/A\"-DIMM status on misc. servers (e.g. older DL320)" + } + "--ignore-fan-redundancy" = { + set_if = "$hpasm_ignore-fan-redundancy$" + description = "Ignore missing redundancy partners" + } + "--customthresholds" = { + value = "$hpasm_customthresholds$" + description = "Use custom thresholds for certain temperatures" + } + "--eventrange" = { + value = "$hpasm_eventrange$" + description = "Period of time before critical IML events respecively become warnings or vanish. A range is descibed as a number and a unit (s, m, h, d), e.g. --eventrange 1h/20m." + } + "--perfdata" = { + value = "$hpasm_perfdata$" + description = "Output performance data. If your performance data string becomes too long and is truncated by Nagios, then you can use --perfdata=short instead. This will output temperature tags without location information" + } + "--username" = { + value = "$hpasm_username$" + description = "The securityName for the USM security model (SNMPv3 only)" + } + "--authpassword" = { + value = "$hpasm_authpassword$" + description = "The authentication password for SNMPv3" + } + "--authprotocol" = { + value = "$hpasm_authprotocol$" + description = "The authentication protocol for SNMPv3 (md5|sha)" + } + "--privpassword" = { + value = "$hpasm_privpassword$" + description = "The password for authPriv security level" + } + "--privprotocol" = { + value = "$hpasm_privprotocol$" + description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)" + } + "--servertype" = { + value = "$hpasm_servertype$" + description = "The type of the server: proliant (default) or bladesystem" + } + "--eval-nics" = { + set_if = "$hpasm_eval-nics$" + description = "Check network interfaces (and groups). Try it and report me whyt you think about it. I need to build up some know how on this subject. If get an error and you think, it is not justified for your configuration, please tell me about it. (alwasy send the output of \"snmpwalk -On .... 1.3.6.1.4.1.232\" and a description how you setup your nics and why it is correct opposed to the plugins error message" + } + } + vars.hpasm_remote = true + vars.hpasm_hostname = "$check_address$" +} + +object CheckCommand "openmanage" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_openmanage" ] + arguments += { + "--all" = { + set_if = "$openmanage_all$" + description = "Check everything, even log content" + } + "--blacklist" = { + value = "$openmanage_blacklist$" + repeat_key = true + description = "Blacklist missing and/or failed components" + } + "--check" = { + value = "$openmanage_check$" + description = "Fine-tune which components are checked" + } + "--community" = { + value = "$openmanage_community$" + description = "SNMP community string [default=public]" + } + "--config" = { + value = "$openmanage_config$" + description = "Specify configuration file" + } + "--critical" = { + value = "$openmanage_critical$" + description = "Custom temperature critical limits" + } + "--extinfo" = { + set_if = "$openmanage_extinfo$" + description = "Append system info to alerts" + } + "--fahrenheit" = { + set_if = "$openmanage_fahrenheit$" + description = "Use Fahrenheit as temperature unit" + } + "--hostname" = { + value = "$openmanage_hostname$" + description = "Hostname or IP (required for SNMP)" + } + "--htmlinfo" = { + set_if = "$openmanage_htmlinfo$" + description = "HTML output with clickable links" + } + "--info" = { + set_if = "$openmanage_info$" + description = "Prefix any alerts with the service tag" + } + "--ipv6" = { + set_if = "$openmanage_ipv6$" + description = "Use IPv6 instead of IPv4 [default=no]" + } + "--legacy-perfdata" = { + set_if = "$openmanage_legacy_perfdata$" + description = "legacy performance data output" + } + "--no-storage" = { + set_if = "$openmanage_no_storage$" + description = "Don't check storage" + } + "--only" = { + value = "$openmanage_only$" + description = "Only check a certain component or alert type" + } + "--perfdata" = { + set_if = "$openmanage_perfdata$" + description = "Output performance data [default=no]" + } + "--port" = { + value = "$openmanage_port$" + description = "SNMP port number [default=161]" + } + "--protocol" = { + value = "$openmanage_protocol$" + description = "SNMP protocol version [default=2c]" + } + "--short-state" = { + set_if = "$openmanage_short_state$" + description = "Prefix alerts with alert state abbreviated" + } + "--show-blacklist" = { + set_if = "$openmanage_show_blacklist$" + description = "Show blacklistings in OK output" + } + "--state" = { + set_if = "$openmanage_state$" + description = "Prefix alerts with alert state" + } + "--tcp" = { + set_if = "$openmanage_tcp$" + description = "Use TCP instead of UDP [default=no]" + } + "--timeout" = { + value = "$openmanage_timeout$" + description = "Plugin timeout in seconds [default=30]" + } + "--vdisk-critical" = { + set_if = "$openmanage_vdisk_critical$" + description = "Make any alerts on virtual disks critical" + } + "--warning" = { + value = "$openmanage_warning$" + description = "Custom temperature warning limits" + } + } +} + +object CheckCommand "lmsensors" { + command = [ PluginContribDir + "/check_lmsensors" ] + + arguments = { + "-w" = { + value = "$lmsensors_warning$" + description = "Exit with WARNING status if above INTEGER degrees" + required = true + } + "-c" = { + value = "$lmsensors_critical$" + description = "Exit with CRITICAL status if above INTEGER degrees" + required = true + } + "--sensor" = { + value = "$lmsensors_sensor$" + description = "Set what to monitor, for example CPU or MB (or M/B). Check sensors for the correct word. Default is CPU." + } + } + + vars.lmsensors_warning = "75" + vars.lmsensors_critical = "80" + vars.lmsensors_sensor = "Core" +} + +object CheckCommand "hddtemp" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_hddtemp" ] + + arguments = { + "--server" = { + value = "$hddtemp_server$" + description = "server name or address" + required = true + } + "--port" = { + value = "$hddtemp_port$" + description = "port number" + } + "--devices" = { + value = "$hddtemp_devices$" + description = "comma separated devices list, or empty for all devices in hddtemp response" + } + "--separator" = { + value = "$hddtemp_separator$" + description = "hddtemp separator" + } + "--warning" = { + value = "$hddtemp_warning$" + description = "warning temperature" + required = true + } + "--critical" = { + value = "$hddtemp_critical$" + description = "critical temperature" + required = true + } + "--timeout" = { + value = "$hddtemp_timeout$" + description = "receiving data from hddtemp operation network timeout" + } + "--performance-data" = { + set_if = "$hddtemp_performance$" + description = "return performance data" + } + "--quiet" = { + set_if = "$hddtemp_quiet$" + description = "be quiet" + } + } + + vars.hddtemp_server = "127.0.0.1" + vars.hddtemp_warning = 55 + vars.hddtemp_critical = 60 + vars.hddtemp_performance = true + vars.hddtemp_timeout = 5 +} diff --git a/itl/plugins-contrib.d/icingacli.conf b/itl/plugins-contrib.d/icingacli.conf new file mode 100644 index 0000000..3086aab --- /dev/null +++ b/itl/plugins-contrib.d/icingacli.conf @@ -0,0 +1,120 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +template CheckCommand "icingacli" { + command = [ PrefixDir + "/bin/icingacli" ] +} + +object CheckCommand "icingacli-businessprocess" { + import "icingacli" + + command += [ "businessprocess", "process", "check" ] + + arguments = { + "--config" = { + value = "$icingacli_businessprocess_config$" + description = "Configuration file containing your business process without file extension" + } + "--details" = { + set_if = "$icingacli_businessprocess_details$" + description = "Get details for root cause analysis" + } + "--state-type" = { + value = "$icingacli_businessprocess_statetype$" + description = "Define which state type to look at. Could be either soft or hard, overrides an eventually configured default" + } + "--process" = { + value = "$icingacli_businessprocess_process$" + description = "Business process to monitor" + skip_key = true + required = true + order = -1 + } + } + + vars.icingacli_businessprocess_details = false +} + +object CheckCommand "icingacli-director" { + import "icingacli" + + command += [ "director", "health", "check" ] + + arguments = { + "--check" = { + value = "$icingacli_director_check$" + description = "Run only a specific test suite" + } + "--db" = { + value = "$icingacli_director_db$" + description = "Use a specific Icinga Web DB resource" + } + } +} + +object CheckCommand "icingacli-elasticsearch" { + import "icingacli" + + command += [ "elasticsearch", "check" ] + + arguments = { + "--instance" = { + value = "$icingacli_elasticsearch_instance$" + description = "Elasticsearch instance to connect to" + } + "--crit" = { + value = "$icingacli_elasticsearch_critical$" + description = "Critical threshold" + } + "--warn" = { + value = "$icingacli_elasticsearch_warning$" + description = "Warning threshold" + } + "--index" = { + value = "$icingacli_elasticsearch_index$" + description = "Index pattern to use when searching" + } + "--filter" = { + value = "$icingacli_elasticsearch_filter$" + description = "Filter for events" + } + "--from" = { + value = "$icingacli_elasticsearch_from$" + description = "Negative value of time to search from now" + } + } + +} + +object CheckCommand "icingacli-x509" { + import "icingacli" + + command += [ "x509", "check", "host" ] + + arguments = { + "--ip" = { + value = "$icingacli_x509_ip$" + description = "A hosts IP address" + } + "--host" = { + value = "$icingacli_x509_host$" + description = "A hosts name" + } + "--port" = { + value = "$icingacli_x509_port$" + description = "The port to check in particular" + } + "--warning" = { + value = "$icingacli_x509_warning$" + description = "Less remaining time results in state WARNING" + } + "--critical" = { + value = "$icingacli_x509_critical$" + description = "Less remaining time results in state CRITICAL" + } + "--allow-self-signed" = { + set_if = "$icingacli_x509_allow_self_signed$" + description = "Ignore if a certificate or its issuer has been self-signed" + } + } +} + diff --git a/itl/plugins-contrib.d/ipmi.conf b/itl/plugins-contrib.d/ipmi.conf new file mode 100644 index 0000000..6b72ae6 --- /dev/null +++ b/itl/plugins-contrib.d/ipmi.conf @@ -0,0 +1,123 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "ipmi-sensor" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_ipmi_sensor" ] + + arguments = { + "-H" = { + value = "$ipmi_address$" + description = "Hostname or ip address of the IPMI interface (default: host.address or host.address6)" + } + "-f" = { + value = "$ipmi_config_file$" + description = "Path to the FreeIPMI configuration file" + } + "-U" = { + value = "$ipmi_username$" + description = "Username to connect with" + } + "-P" = { + value = "$ipmi_password$" + description = "Password to use" + } + "-L" = { + value = "$ipmi_privilege_level$" + description = "Privilege level of the user" + } + "-b" = { + set_if = "$ipmi_backward_compatibility_mode$" + description = "Enable backward compatibility mode (for FreeIPMI 0.5.*)" + } + "-T" = { + value = "$ipmi_sensor_type$" + description = "Limit sensors to query based on IPMI sensor type (seperated by comma)" + } + "-ST" = { + value = "$ipmi_sel_type$" + description = "Limit SEL entries to specific types. (seperated by comma)" + } + "-x" = { + value = "$ipmi_exclude_sensor_id$" + description = "Exclude sensor matching ipmi_sensor_id" + } + "-xT" = { + value = "$ipmi_exclude_sensor$" + description = "Exclude sensors based on IPMI sensor type. (seperated by comma)" + } + "-xST" = { + value = "$ipmi_exclude_sel$" + description = "Exclude SEL entries of specific sensor types. (seperated by comma)" + } + "-i" = { + value = "$ipmi_sensor_id$" + description = "Include sensor matching ipmi_sensor_id" + } + "--nosel" = { + set_if = "$ipmi_no_sel_checking$" + description = "Turn off system event log checking via ipmi-sel" + } + "--nothresholds" = { + set_if = "$ipmi_no_thresholds$" + description = "Turn off performance data thresholds from output-sensor-thresholds" + } + "-D" = { + value = "$ipmi_protocol_lan_version$" + description = "Change the protocol LAN version (default: LAN_2_0)" + } + "-fc" = { + value = "$ipmi_number_of_active_fans$" + description = "Number of fans that should be active" + } + "--fru" = { + set_if = "$ipmi_show_fru$" + description = "Print the product serial number got by ipmi-fru" + } + "--assettag" = { + set_if = "$ipmi_show_assettag$" + description = "Print the assettag if it is available in the IPMI FRU data. (--fru is mandatory)" + } + "--board" = { + set_if = "$ipmi_show_board$" + description = "Print additional motherboard information if it is available in the IPMI FRU data. (--fru is mandatory)" + } + "--noentityabsent" = { + set_if = "$ipmi_noentityabsent$" + description = "Skip sensor checks for sensors that have 'noentityabsent' as event state" + } + "-vv" = { + set_if = "$ipmi_verbose$" + description = "Be Verbose multi line output, also with additional details for warnings" + } + "-vvv" = { + set_if = "$ipmi_debug$" + description = "Be Verbose debugging output, followed by normal multi line output" + } + "-us" = { + value = "$ipmi_unify_file$" + description = "Path to the unify file to unify sensor names." + } + } + + vars.ipmi_address = "$check_address$" + vars.ipmi_protocol_lan_version = "LAN_2_0" +} + +/* + * Icinga2 CheckCommand definition for an IPMI interface ping check +*/ + +template CheckCommand "ipmi-alive-common" { + vars.ping_wrta = 5000.0 + vars.ping_wpl = 100 + + vars.ping_crta = 5000.0 + vars.ping_cpl = 100 + + vars.ping_packets = 1 +} +object CheckCommand "ipmi-alive" { + import "ping" + import "ipmi-alive-common" +} diff --git a/itl/plugins-contrib.d/logmanagement.conf b/itl/plugins-contrib.d/logmanagement.conf new file mode 100644 index 0000000..16cafe0 --- /dev/null +++ b/itl/plugins-contrib.d/logmanagement.conf @@ -0,0 +1,160 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "logstash" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_logstash" ] + + arguments = { + "-H" = { + value = "$logstash_hostname$" + description = "Hostname where Logstash is running" + } + "-p" = { + value = "$logstash_port$" + description = "Port where Logstash is listening for API requests" + } + "--file-descriptor-threshold-warn" = { + value = "$logstash_filedesc_warn$" + description = "Warning threshold of file descriptor usage in percent" + } + "--file-descriptor-threshold-crit" = { + value = "$logstash_filedesc_crit$" + description = "Critical threshold of file descriptor usage in percent" + } + "--heap-usage-threshold-warn" = { + value = "$logstash_heap_warn$" + description = "Warning threshold of heap usage in percent" + } + "--heap-usage-threshold-crit" = { + value = "$logstash_heap_crit$" + description = "Critical threshold of heap usage in percent" + } + "--inflight-events-warn" = { + value = "$logstash_inflight_warn$" + description = "Warning threshold of inflight events" + } + "--inflight-events-crit" = { + value = "$logstash_inflight_crit$" + description = "Critical threshold of inflight events" + } + "--cpu-usage-threshold-warn" = { + value = "$logstash_cpu_warn$" + description = "Warning threshold for cpu usage in percent" + } + "--cpu-usage-threshold-crit" = { + value = "$logstash_cpu_crit$" + description = "Critical threshold for cpu usage in percent" + } + } + + vars.logstash_hostname = "$check_address$" + vars.logstash_port = 9600 + vars.logstash_filedesc_warn = 85 + vars.logstash_filedesc_crit = 95 + vars.logstash_heap_warn = 70 + vars.logstash_heap_crit = 80 +} + +object CheckCommand "logfiles" { + command = [ PluginContribDir + "/check_logfiles" ] + + arguments = { + "--tag" = { + value = "$logfiles_tag$" + description = "A short unique descriptor for this search. It will appear in the output of the plugin and is used to separare the different services." + } + "--logfile" = { + value = "$logfiles_logfile$" + description = "This is the name of the log file you want to scan." + } + "--rotation" = { + value = "$logfiles_rotation$" + description = "This is the method how log files are rotated. One of the predefined methods or a regular expression, which helps identify the rotated archives. If this key is missing, check_logfiles assumes that the log file will be simply overwritten instead of rotated." + } + "--criticalpattern" = { + value = "$logfiles_critical_pattern$" + description = "A regular expression which will trigger a critical error." + } + "--warningpattern" = { + value = "$logfiles_warning_pattern$" + description = "A regular expression which will trigger a warning error." + } + "--criticalexception" = { + value = "$logfiles_critical_exception$" + description = "A regular expression, the exceptions which are not counted as critical errors." + } + "--warningexception" = { + value = "$logfiles_warning_exception$" + description = "A regular expression, the exceptions which are not counted as warning errors." + } + "--okpattern" = { + value = "$logfiles_ok_pattern$" + description = "A regular expression which resets the error counters." + } + "--noprotocol" = { + set_if = "$logfiles_no_protocol$" + description = "Normally all the matched lines are written into a protocol file with this file’s name appearing in the plugin’s output. This option switches this off." + } + "--syslogserver" = { + set_if = "$logfiles_syslog_server$" + description = "With this option you limit the pattern matching to lines originating from the host check_logfiles is running on." + } + "--syslogclient" = { + value = "$logfiles_syslog_client$" + description = "With this option you limit the pattern matching to lines originating from the host named in this option." + } + "--sticky" = { + value = "$logfiles_sticky$" + description = "Errors are propagated through successive runs." + } + "--unstick" = { + set_if = "$logfiles_unstick$" + description = "Resets sticky errors." + } + "--config" = { + value = "$logfiles_config$" + description = "The name of a configuration file." + } + "--configdir" = { + value = "$logfiles_configdir$" + description = "The name of a configuration directory. Configfiles ending in .cfg or .conf are (recursively) imported." + } + "--searches" = { + value = "$logfiles_searches$" + description = "A list of tags of those searches which are to be run. Using this parameter, not all searches listed in the config file are run, but only those selected." + } + "--selectedsearches" = { + value = "$logfiles_selectedsearches$" + description = "A list of tags of those searches which are to be run. Using this parameter, not all searches listed in the config file are run, but only those selected." + } + "--report" = { + value = "$logfiles_report$" + description = "This option turns on multiline output (Default: off). The setting html generates a table which display the last hits in the service details view. Possible values are: short, long, html or off" + } + "--maxlength" = { + value = "$logfiles_max_length$" + description = "With this parameter long lines are truncated (Default: off). Some programs (e.g. TrueScan) generate entries in the eventlog of such a length, that the output of the plugin becomes longer than 1024 characters. NSClient++ discards these." + } + "--winwarncrit" = { + value = "$logfiles_winwarncrit$" + description = "With this parameter messages in the eventlog are classified by the type WARNING/ERROR (Default: off). Replaces or complements warning/criticalpattern." + } + "--rununique" = { + set_if = "$logfiles_run_unique$" + description = "This parameter prevents check_logfiles from starting when there’s already another instance using the same config file. (exits with UNKNOWN)" + } + "--timeout" = { + value = "$logfiles_timeout$" + description = "This parameter causes an abort of a running search after a defined number of seconds. It is an aborted in a controlled manner, so that the lines which have been read so far, are used for the computation of the final result." + } + "--warning" = { + value = "$logfiles_warning$" + description = "Complex handler-scripts can be provided with a warning-parameter this way. Inside the scripts the value is accessible as the macro CL_WARNING." + } + "--critical" = { + value = "$logfiles_critical$" + description = "Complex handler-scripts can be provided with a critical-parameter this way. Inside the scripts the value is accessible as the macro CL_CRITICAL." + } + } +} diff --git a/itl/plugins-contrib.d/metrics.conf b/itl/plugins-contrib.d/metrics.conf new file mode 100644 index 0000000..856ba75 --- /dev/null +++ b/itl/plugins-contrib.d/metrics.conf @@ -0,0 +1,62 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "graphite" { + command = [ PluginContribDir + "/check_graphite" ] + + arguments = { + "-u" = { + value = "$graphite_url$" + description = "Target url" + required = true + } + "-m" = { + value = "$graphite_metric$" + description = "Metric path string" + required = true + } + "-s" = { + value = "$graphite_shortname$" + description = "Metric short name (used for performance data)" + } + "-d" = { + value = "$graphite_duration$" + description = "Length, in minute of data to parse (default: 5)" + } + "-f" = { + value = "$graphite_function$" + description = "Function applied to metrics for thresholds (default: average)" + } + "-w" = { + value = "$graphite_warning$" + description = "Warning threshold" + required = true + } + "-c" = { + value = "$graphite_critical$" + description = "Critical threshold" + required = true + } + "-U" = { + value = "$graphite_units$" + description = "Adds a text tag to the metric count in the plugin output. Useful to identify the metric units. Doesn't affect data queries." + } + "-M" = { + value = "$graphite_message$" + description = "Text message to output (default: 'metric count:')" + } + "-z" = { + set_if = "$graphite_zero_on_error$" + description = "Return 0 on a graphite 500 error" + } + "-l" = { + set_if = "$graphite_link_graph$" + description = "Add a link in the plugin output, showing a 24h graph for this metric in graphite." + } + } + + vars.graphite_duration = "5" + vars.graphite_function = "average" + vars.graphite_message = "metric count:" + vars.graphite_zero_on_error = false + vars.graphite_link_graph = false +} diff --git a/itl/plugins-contrib.d/network-components.conf b/itl/plugins-contrib.d/network-components.conf new file mode 100644 index 0000000..333a82c --- /dev/null +++ b/itl/plugins-contrib.d/network-components.conf @@ -0,0 +1,1063 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "interfacetable" { + command = [ PluginContribDir + "/check_interface_table_v3t" ] + + arguments = { + "-H" = { + value = "$interfacetable_hostquery$" + description = "Specifies the remote host to poll" + } + "-h" = { + value = "$interfacetable_hostdisplay$" + description = "Specifies the hostname to display in the HTML link" + } + "-r" = { + set_if = "$interfacetable_regex$" + description = "Interface names and property names for some other options will be interpreted as regular expressions" + } + "--outputshort" = { + set_if = "$interfacetable_outputshort$" + description = "Reduce the verbosity of the plugin output" + } + "-e" = { + value = "$interfacetable_exclude$" + description = "Comma separated list of interfaces globally excluded from the monitoring" + } + "-i" = { + value = "$interfacetable_include$" + description = "Comma separated list of interfaces globally included in the monitoring" + } + "--alias-matching" = { + set_if = "$interfacetable_aliasmatching$" + description = "Allow you to specify alias in addition to interface names" + } + "--et" = { + value = "$interfacetable_excludetraffic$" + description = "Comma separated list of interfaces excluded from traffic checks" + } + "--it" = { + value = "$interfacetable_includetraffic$" + description = "Comma separated list of interfaces included for traffic checks" + } + "--wt" = { + value = "$interfacetable_warningtraffic$" + description = "Interface traffic load percentage leading to a warning alert" + } + "--ct" = { + value = "$interfacetable_criticaltraffic$" + description = "Interface traffic load percentage leading to a critical alert" + } + "--pkt" = { + set_if = "$interfacetable_pkt$" + description = "Add unicast/non-unicast pkt stats for each interface" + } + "--trafficwithpkt" = { + set_if = "$interfacetable_trafficwithpkt$" + description = "Enable traffic calculation using pkt counters instead of octet counters. Useful when using 32-bit counters to track the load on > 1GbE interfaces." + } + "--tp" = { + value = "$interfacetable_trackproperty$" + description = "List of tracked properties" + } + "--ep" = { + value = "$interfacetable_excludeproperty$" + description = "Comma separated list of interfaces excluded from the property tracking" + } + "--ip" = { + value = "$interfacetable_includeproperty$" + description = "Comma separated list of interfaces included in the property tracking" + } + "--wp" = { + value = "$interfacetable_warningproperty$" + description = "Number of property changes before leading to a warning alert" + } + "--cp" = { + value = "$interfacetable_criticalproperty$" + description = "Number of property changes before leading to a critical alert" + } + "-C" = { + value = "$interfacetable_community$" + description = "Specifies the snmp v1/v2c community string" + } + "-2" = { + set_if = "$interfacetable_snmpv2$" + description = "Use snmp v2c" + } + "-l" = { + value = "$interfacetable_login$" + description = "Login for snmpv3 authentication" + } + "-x" = { + value = "$interfacetable_passwd$" + description = "Auth password for snmpv3 authentication" + } + "-X" = { + value = "$interfacetable_privpass$" + description = "Priv password for snmpv3" + } + "-L" = { + value = "$interfacetable_protocols$" + description = "Authentication protocol,Priv protocol" + } + "--domain" = { + value = "$interfacetable_domain$" + description = "SNMP transport domain" + } + "--contextname" = { + value = "$interfacetable_contextname$" + description = "Context name for the snmp requests" + } + "-P" = { + value = "$interfacetable_port$" + description = "SNMP port" + } + "--64bits" = { + set_if = "$interfacetable_64bits$" + description = "Use SNMP 64-bits counters" + } + "--max-repetitions" = { + value = "$interfacetable_maxrepetitions$" + description = "Increasing this value may enhance snmp query performances by gathering more results at one time" + } + "--snmp-timeout" = { + value = "$interfacetable_snmptimeout$" + description = "Define the Transport Layer timeout for the snmp queries" + } + "--snmp-retries" = { + value = "$interfacetable_snmpretries$" + description = "Define the number of times to retry sending a SNMP message" + } + "--snmp-maxmsgsize" = { + value = "$interfacetable_snmpmaxmsgsize$" + description = "Size of the SNMP message in octets, usefull in case of too long responses. Be carefull with network filters. Range 484 - 65535. Apply only to netsnmp perl bindings. The default is 1472 octets for UDP/IPv4, 1452 octets for UDP/IPv6, 1460 octets for TCP/IPv4, and 1440 octets for TCP/IPv6." + } + "--unixsnmp" = { + set_if = "$interfacetable_unixsnmp$" + description = "Use unix snmp utilities for snmp requests" + } + "-f" = { + set_if = "$interfacetable_enableperfdata$" + description = "Enable port performance data" + } + "--perfdataformat" = { + value = "$interfacetable_perfdataformat$" + description = "Define which performance data will be generated" + } + "--perfdatathreshold" = { + value = "$interfacetable_perfdatathreshold$" + description = "Define which thresholds are printed in the generated performance data" + } + "--perfdatadir" = { + value = "$interfacetable_perfdatadir$" + description = "When specified, the performance data are also written directly to a file, in the specified location" + } + "--perfdataservicedesc" = { + value = "$interfacetable_perfdataservicedesc$" + description = "Specify additional parameters for output performance data to PNP" + } + "-g" = { + value = "$interfacetable_grapher$" + description = "Specify the used graphing solution" + } + "--grapherurl" = { + value = "$interfacetable_grapherurl$" + description = "Graphing system url" + } + "--portperfunit" = { + value = "$interfacetable_portperfunit$" + description = "Traffic could be reported in bits (counters) or in bps (calculated value)" + } + "--nodetype" = { + value = "$interfacetable_nodetype$" + description = "Specify the node type, for specific information to be printed / specific oids to be used" + } + "--duplex" = { + set_if = "$interfacetable_duplex$" + description = "Add the duplex mode property for each interface in the interface table" + } + "--stp" = { + set_if = "$interfacetable_stp$" + description = "Add the stp state property for each interface in the interface table" + } + "--vlan" = { + set_if = "$interfacetable_vlan$" + description = "Add the vlan attribution property for each interface in the interface table" + } + "--noipinfo" = { + set_if = "$interfacetable_noipinfo$" + description = "Remove the ip information for each interface from the interface table" + } + "--alias" = { + set_if = "$interfacetable_alias$" + description = "Add the alias information for each interface in the interface table" + } + "--accessmethod" = { + value = "$interfacetable_accessmethod$" + description = "Access method for a shortcut to the host in the HTML page" + } + "--htmltablelinktarget" = { + value = "$interfacetable_htmltablelinktarget$" + description = "Specifies the windows or the frame where the [details] link will load the generated html page" + } + "--delta" = { + value = "$interfacetable_delta$" + description = "Set the delta used for interface throuput calculation" + } + "--ifs" = { + value = "$interfacetable_ifs$" + description = "Input field separator" + } + "--cache" = { + value = "$interfacetable_cache$" + description = "Define the retention time of the cached data" + } + "--noifloadgradient" = { + set_if = "$interfacetable_noifloadgradient$" + description = "Disable color gradient from green over yellow to red for the load percentage" + } + "--nohuman" = { + set_if = "$interfacetable_nohuman$" + description = "Do not translate bandwidth usage in human readable format" + } + "--snapshot" = { + set_if = "$interfacetable_snapshot$" + description = "Force the plugin to run like if it was the first launch" + } + "--timeout" = { + value = "$interfacetable_timeout$" + description = "Define the global timeout limit of the plugin" + } + "--css" = { + value = "$interfacetable_css$" + description = "Define the css stylesheet used by the generated html files" + } + "--config" = { + value = "$interfacetable_config$" + description = "Specify a config file to load" + } + "--noconfigtable" = { + set_if = "$interfacetable_noconfigtable$" + description = "Disable configuration table on the generated HTML page" + } + "--notips" = { + set_if = "$interfacetable_notips$" + description = "Disable the tips in the generated html tables" + } + "--default-table-sorting" = { + value = "$interfacetable_defaulttablesorting$" + description = "Default table sorting" + } + "--table-split" = { + set_if = "$interfacetable_tablesplit$" + description = "Generate multiple interface tables, one per interface type" + } + "--notype" = { + set_if = "$interfacetable_notype$" + description = "Remove the interface type for each interface" + } + } + + vars.interfacetable_hostquery = "$address$" + vars.interfacetable_hostdisplay = "$host.display_name$" + vars.interfacetable_perfdataservicedesc = "$service.name$" + vars.interfacetable_regex = false + vars.interfacetable_outputshort = false + vars.interfacetable_aliasmatching = false + vars.interfacetable_pkt = false + vars.interfacetable_trafficwithpkt = false + vars.interfacetable_snmpv2 = false + vars.interfacetable_64bits = false + vars.interfacetable_unixsnmp = false + vars.interfacetable_enableperfdata = false + vars.interfacetable_duplex = false + vars.interfacetable_stp = false + vars.interfacetable_vlan = false + vars.interfacetable_noipinfo = false + vars.interfacetable_noifloadgradient = false + vars.interfacetable_nohuman = false + vars.interfacetable_snapshot = false + vars.interfacetable_noconfigtable = false + vars.interfacetable_notips = false + vars.interfacetable_notype = false +} + +object CheckCommand "iftraffic" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_iftraffic.pl"] + + arguments = { + "-H" = { + value = "$iftraffic_address$" + description = "Check interface on the indicated host." + required = true + } + "-C" = { + value = "$iftraffic_community$" + description = "SNMP community. Defaults to 'public' if omitted." + } + "-V" = { + value = "$iftraffic_version$" + description = "SNMP version. Defaults to '1' if omitted." + } + "-i" = { + value = "$iftraffic_interface$" + description = "Interface name." + required = true + } + "-b" = { + value = "$iftraffic_bandwidth$" + description = "Interface maximum speed in kilo/mega/giga/bits per second." + required = true + } + "-u" = { + value = "$iftraffic_units$" + description = "g=gigabits/s,m=megabits/s,k=kilobits/s,b=bits/s." + } + "-w" = { + value = "$iftraffic_warn$" + description = "% of bandwidth usage necessary to result in warning status (default: 85)" + } + "-c" = { + value = "$iftraffic_crit$" + description = "% of bandwidth usage necessary to result in critical status (default: 98)" + } + "-M" = { + value = "$iftraffic_max_counter$" + description = "Max counter value of net devices in kilo/mega/giga/bytes." + } + } + + vars.iftraffic_address = "$check_address$" + vars.iftraffic_warn = "85" + vars.iftraffic_crit = "98" +} + +object CheckCommand "iftraffic64" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_iftraffic64.pl"] + + arguments = { + "-H" = { + value = "$iftraffic64_address$" + description = "Check interface on the indicated host." + required = true + } + "-C" = { + value = "$iftraffic64_community$" + description = "SNMP community. Defaults to 'public' if omitted." + } + "-i" = { + value = "$iftraffic64_interface$" + description = "Interface name." + required = true + } + "-b" = { + value = "$iftraffic64_bandwidth$" + description = "Interface maximum speed in kilo/mega/giga/bits per second." + required = true + } + "-u" = { + value = "$iftraffic64_units$" + description = "g=gigabits/s,m=megabits/s,k=kilobits/s,b=bits/s." + } + "-w" = { + value = "$iftraffic64_warn$" + description = "% of bandwidth usage necessary to result in warning status (default: 85)" + } + "-c" = { + value = "$iftraffic64_crit$" + description = "% of bandwidth usage necessary to result in critical status (default: 98)" + } + "-M" = { + value = "$iftraffic64_max_counter$" + description = "Max counter value of net devices in kilo/mega/giga/bytes." + } + } + + vars.iftraffic64_address = "$check_address$" + vars.iftraffic64_warn = "85" + vars.iftraffic64_crit = "98" +} + +object CheckCommand "interfaces" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_interfaces" ] + + arguments = { + "--hostname" = "$interfaces_address$" + "--community" = { + value = "$interfaces_community$" + description = "The community string (default public)." + } + "--regex" = { + value = "$interfaces_regex$" + description = "Interface list regexp." + } + "--exclude-regex" = { + value = "$interfaces_exclude_regex$" + description = "Interface list negative regexp." + } + "--errors" = { + value = "$interfaces_errors$" + description = "Number of in errors (CRC errors for cisco) to consider a warning (default 50)." + } + "--out-errors" = { + value = "$interface_out_errors$" + description = "Number of out errors (collisions for cisco) to consider a warning (default same as in errors)." + } + "--perfdata" = { + value = "$interfaces_perfdata$" + } + "--prefix" = { + value = "$interfaces_prefix$" + description = "Prefix interface names with this label." + } + "--lastcheck" = { + value = "$interfaces_lastcheck$" + description = "Last checktime (unixtime)." + } + "--bandwidth" = { + value = "$interfaces_bandwidth$" + description = "Bandwidth warn level in percent." + } + "--speed" = { + value = "$interfaces_speed$" + description = "Override speed detection with this value (bits per sec)." + } + "--trim" = { + value = "$interfaces_trim$" + description = "Cut this number of characters from the start of interface descriptions." + } + "--mode" = { + value = "$interfaces_mode$" + description = "Special operating mode (default,cisco,nonbulk,bintec)." + } + "--auth-proto" = { + value = "$interfaces_auth_proto$" + description = "SNMPv3 Auth Protocol (SHA|MD5)" + } + "--auth-phrase" = { + value = "$interfaces_auth_phrase$" + description = "SNMPv3 Auth Phrase" + } + "--priv-proto" = { + value = "$interfaces_priv_proto$" + description = "SNMPv3 Privacy Protocol (AES|DES)" + } + "--priv-phrase" = { + value = "$interfaces_priv_phrase$" + description = "SNMPv3 Privacy Phrase" + } + "--user" = { + value = "$interfaces_user$" + description = "SNMPv3 User" + } + "--down-is-ok" = { + set_if = "$interfaces_down_is_ok$" + description = "Disables critical alerts for down interfaces." + } + "--aliases" = { + set_if = "$interfaces_aliases$" + description = "Retrieves the interface description." + } + "--match-aliases" = { + set_if = "$interfaces_match_aliases$" + description = "Also match against aliases (Option --aliases automatically enabled)." + } + "--timeout" = { + value = "$interfaces_timeout$" + description = "Sets the SNMP timeout (in ms)." + } + "--sleep" = { + value = "$interfaces_sleep$" + description = "Sleep between every SNMP query (in ms)." + } + "--if-names" = { + set_if = "$interfaces_names$" + description = "Use ifName instead of ifDescr." + } + } + + vars.interfaces_address = "$check_address$" + vars.interfaces_down_is_ok = false + vars.interfaces_aliases = false + vars.interfaces_match_aliases = false +} + +object CheckCommand "nwc_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_nwc_health" ] + + arguments = { + "--timeout" = { + value = "$nwc_health_timeout$" + description = "Seconds before plugin times out (default: 15)" + } + "--blacklist" = { + value = "$nwc_health_blacklist$" + description = "Blacklist some (missing/failed) components" + } + "--hostname" = { + value = "$nwc_health_hostname$" + description = "Hostname or IP-address of the switch or router" + } + "--port" = { + value = "$nwc_health_port$" + description = "The SNMP port to use (default: 161)" + } + "--domain" = { + value = "$nwc_health_domain$" + description = "The transport domain to use (default: udp/ipv4, other possible values: udp6, udp/ipv6, tcp, tcp4, tcp/ipv4, tcp6, tcp/ipv6)" + } + "--protocol" = { + value = "$nwc_health_protocol$" + description = "The SNMP protocol to use (default: 2c, other possibilities: 1,3)" + } + "--community" = { + value = "$nwc_health_community$" + description = "SNMP community of the server (SNMP v1/2 only)" + } + "--username" = { + value = "$nwc_health_username$" + description = "The securityName for the USM security model (SNMPv3 only)" + } + "--authpassword" = { + value = "$nwc_health_authpassword$" + description = "The authentication password for SNMPv3" + } + "--authprotocol" = { + value = "$nwc_health_authprotocol$" + description = "The authentication protocol for SNMPv3 (md5|sha)" + } + "--privpassword" = { + value = "$nwc_health_privpassword$" + description = "The password for authPriv security level" + } + "--privprotocol" = { + value = "$nwc_health_privprotocol$" + description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)" + } + "--contextengineid" = { + value = "$nwc_health_contextengineid$" + description = "The context engine id for SNMPv3 (10 to 64 hex characters)" + } + "--contextname" = { + value = "$nwc_health_contextname$" + description = "The context name for SNMPv3 (empty represents the default context)" + } + "--community2" = { + value = "$nwc_health_community2$" + description = "SNMP community which can be used to switch the context during runtime" + } + "--mode" = { + value = "$nwc_health_mode$" + description = "Which mode should be executed. A list of all available modes can be found in the plugin documentation" + } + "--name" = { + value = "$nwc_health_name$" + description = "The name of an interface (ifDescr)" + } + "--drecksptkdb" = { + value = "$nwc_health_drecksptkdb$" + description = "This parameter must be used instead of --name, because Devel::ptkdb is stealing the latter from the command line" + } + "--alias" = { + value = "$nwc_health_alias$" + description = "The alias name of a 64bit-interface (ifAlias)" + } + "--regexp" = { + set_if = "$nwc_health_regexp$" + description = "A flag indicating that --name is a regular expression" + } + "--ifspeedin" = { + value = "$nwc_health_ifspeedin$" + description = "Override the ifspeed oid of an interface (only inbound)" + } + "--ifspeedout" = { + value = "$nwc_health_ifspeedout$" + description = "Override the ifspeed oid of an interface (only outbound)" + } + "--ifspeed" = { + value = "$nwc_health_ifspeed$" + description = "Override the ifspeed oid of an interface" + } + "--units" = { + value = "$nwc_health_units$" + description = "One of %, B, KB, MB, GB, Bit, KBi, MBi, GBi. (used for e.g. mode interface-usage)" + } + "--name2" = { + value = "$nwc_health_name2$" + description = "The secondary name of a component" + } + "--name3" = { + value = "$nwc_health_name3$" + description = "The tertiary name of a component" + } + "--role" = { + value = "$nwc_health_role$" + description = "The role of this device in a hsrp group (active/standby/listen)" + } + "--report" = { + value = "$nwc_health_report$" + description = "Can be used to shorten the output. Possible values are: 'long' (default), 'short' (to shorten if available), or 'html' (to produce some html outputs if available)" + } + "--lookback" = { + value = "$nwc_health_lookback$" + description = "The amount of time you want to look back when calculating average rates. Use it for mode interface-errors or interface-usage. Without --lookback the time between two runs of check_nwc_health is the base for calculations. If you want your checkresult to be based for example on the past hour, use --lookback 3600." + } + "--critical" = { + value = "$nwc_health_critical$" + description = "The critical threshold" + } + "--warning" = { + value = "$nwc_health_warning$" + description = "The warning threshold" + } + "--warningx" = { + value = "$nwc_health_warningx$" + repeat_key = true + description = "The extended warning thresholds" + } + "--criticalx" = { + value = "$nwc_health_criticalx$" + repeat_key = true + description = "The extended critical thresholds" + } + "--mitigation" = { + value = "$nwc_health_mitigation$" + description = "The parameter allows you to change a critical error to a warning." + } + "--selectedperfdata" = { + value = "$nwc_health_selectedperfdata$" + description = "The parameter allows you to limit the list of performance data. It's a perl regexp. Only matching perfdata show up in the output." + } + "--morphperfdata" = { + value = "$nwc_health_morphperfdata$" + description = "The parameter allows you to change performance data labels. It's a perl regexp and a substitution. --morphperfdata '(.*)ISATAP(.*)'='$1patasi$2'" + } + "--negate" = { + value = "$nwc_health_negate$" + description = "The parameter allows you to map exit levels, such as warning=critical" + } + "--with-mymodules-dyn-dir" = { + value = "$nwc_health_mymodules-dyn-dir$" + description = "A directory where own extensions can be found" + } + "--servertype" = { + value = "$nwc_health_servertype$" + description = "The type of the network device: cisco (default). Use it if auto-detection is not possible" + } + "--statefilesdir" = { + value = "$nwc_health_statefilesdir$" + description = "An alternate directory where the plugin can save files" + } + "--oids" = { + value = "$nwc_health_oids$" + description = "A list of oids which are downloaded and written to a cache file. Use it together with --mode oidcache" + } + "--offline" = { + value = "$nwc_health_offline$" + description = "The maximum number of seconds since the last update of cache file before it is considered too old" + } + "--multiline" = { + set_if = "$nwc_health_multiline$" + description = "Multiline output" + } + } + + vars.nwc_health_hostname = "$check_address$" + vars.nwc_health_mode = "hardware-health" +} + +object CheckCommand "printer_health" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_printer_health" ] + + arguments = { + "--timeout" = { + value = "$printer_health_timeout$" + description = "Seconds before plugin times out (default: 15)" + } + "--blacklist" = { + value = "$printer_health_blacklist$" + description = "Blacklist some (missing/failed) components" + } + "--hostname" = { + value = "$printer_health_hostname$" + description = "Hostname or IP-address of the switch or router" + } + "--port" = { + value = "$printer_health_port$" + description = "The SNMP port to use (default: 161)" + } + "--domain" = { + value = "$printer_health_domain$" + description = "The transport domain to use (default: udp/ipv4, other possible values: udp6, udp/ipv6, tcp, tcp4, tcp/ipv4, tcp6, tcp/ipv6)" + } + "--protocol" = { + value = "$printer_health_protocol$" + description = "The SNMP protocol to use (default: 2c, other possibilities: 1,3)" + } + "--community" = { + value = "$printer_health_community$" + description = "SNMP community of the server (SNMP v1/2 only)" + } + "--username" = { + value = "$printer_health_username$" + description = "The securityName for the USM security model (SNMPv3 only)" + } + "--authpassword" = { + value = "$printer_health_authpassword$" + description = "The authentication password for SNMPv3" + } + "--authprotocol" = { + value = "$printer_health_authprotocol$" + description = "The authentication protocol for SNMPv3 (md5|sha)" + } + "--privpassword" = { + value = "$printer_health_privpassword$" + description = "The password for authPriv security level" + } + "--privprotocol" = { + value = "$printer_health_privprotocol$" + description = "The private protocol for SNMPv3 (des|aes|aes128|3des|3desde)" + } + "--contextengineid" = { + value = "$printer_health_contextengineid$" + description = "The context engine id for SNMPv3 (10 to 64 hex characters)" + } + "--contextname" = { + value = "$printer_health_contextname$" + description = "The context name for SNMPv3 (empty represents the default context)" + } + "--community2" = { + value = "$printer_health_community2$" + description = "SNMP community which can be used to switch the context during runtime" + } + "--mode" = { + value = "$printer_health_mode$" + description = "Which mode should be executed. Available modes: hardware-health, supplies-status and uptime." + } + "--name" = { + value = "$printer_health_name$" + description = "The name of an interface (ifDescr)" + } + "--regexp" = { + set_if = "$printer_health_regexp$" + description = "A flag indicating that --name is a regular expression" + } + "--units" = { + value = "$printer_health_units$" + description = "One of %, B, KB, MB, GB, Bit, KBi, MBi, GBi. (used for e.g. mode interface-usage)" + } + "--name2" = { + value = "$printer_health_name2$" + description = "The secondary name of a component" + } + "--name3" = { + value = "$printer_health_name3$" + description = "The teritary name of a component" + } + "--report" = { + value = "$printer_health_report$" + description = "Can be used to shorten the output." + } + "--lookback" = { + value = "$printer_health_lookback$" + description = "The amount of time you want to look back when calculating average rates. Use it for mode interface-errors or interface-usage. Without --lookback the time between two runs of check_printer_health is the base for calculations. If you want your checkresult to be based for example on the past hour, use --lookback 3600." + } + "--critical" = { + value = "$printer_health_critical$" + description = "The critical threshold" + } + "--warning" = { + value = "$printer_health_warning$" + description = "The warning threshold" + } + "--warningx" = { + value = "$printer_health_warningx$" + description = "The extended warning thresholds" + } + "--criticalx" = { + value = "$printer_health_criticalx$" + description = "The extended critical thresholds" + } + "--mitigation" = { + value = "$printer_health_mitigation$" + description = "The parameter allows you to change a critical error to a warning." + } + "--selectedperfdata" = { + value = "$printer_health_selectedperfdata$" + description = "The parameter allows you to limit the list of performance data. It's a perl regexp. Only matching perfdata show up in the output." + } + "--morphperfdata" = { + value = "$printer_health_morphperfdata$" + description = "The parameter allows you to change performance data labels. It's a perl regexp and a substitution. --morphperfdata '(.*)ISATAP(.*)'='$1patasi$2'" + } + "--negate" = { + value = "$printer_health_negate$" + description = "The parameter allows you to map exit levels, such as warning=critical" + } + "--with-mymodules-dyn-dir" = { + value = "$printer_health_mymodules-dyn-dir$" + description = "A directory where own extensions can be found" + } + "--servertype" = { + value = "$printer_health_servertype$" + description = "The type of the network device: cisco (default). Use it if auto-detection is not possible" + } + "--statefilesdir" = { + value = "$printer_health_statefilesdir$" + description = "An alternate directory where the plugin can save files" + } + "--oids" = { + value = "$printer_health_oids$" + description = "A list of oids which are downloaded and written to a cache file. Use it together with --mode oidcache" + } + "--offline" = { + value = "$printer_health_offline$" + description = "The maximum number of seconds since the last update of cache file before it is considered too old" + } + "--multiline" = { + set_if = "$printer_health_multiline$" + description = "Multiline output" + } + } + + vars.printer_health_hostname = "$check_address$" + vars.printer_health_mode = "supplies-status" +} + +template CheckCommand "generic-thola-check-command" { + command = [ PluginContribDir + "/thola-client", "check" ] + + arguments = { + "--target-api" = { + required = true + value = "$thola_api_address$" + description = "Address of the thola API" + } + } +} + +template CheckCommand "generic-thola-device-check-command" { + import "generic-thola-check-command" + import "ipv4-or-ipv6" + + arguments += { + "thola_device_address" = { + order = 0 + required = true + skip_key = true + value = "$thola_device_address$" + description = "IP address of target device" + } + "--snmp-community" = { + value = "$thola_device_snmp_community$" + description = "SNMP Community of target device" + } + "--snmp-version" = { + value = "$thola_device_snmp_protocol$" + description = "SNMP Version of target device" + } + } + + vars.thola_device_address = "$check_address$" +} + +object CheckCommand "thola-cpu-load" { + import "generic-thola-device-check-command" + + command += [ "cpu-load" ] + + arguments += { + "--critical" = { + value = "$thola_cpu_load_critical$" + description = "Critical threshold for the CPU load in %" + } + "--warning" = { + value = "$thola_cpu_load_warning$" + description = "Warning threshold for the CPU load in %" + } + } +} + +object CheckCommand "thola-interface-metrics" { + import "generic-thola-device-check-command" + + command += [ "interface-metrics" ] +} + +object CheckCommand "thola-hardware-health" { + import "generic-thola-device-check-command" + + command += [ "hardware-health" ] +} + +object CheckCommand "thola-identify" { + import "generic-thola-device-check-command" + + command += [ "identify" ] + + arguments += { + "--model" = { + value = "$thola_identify_model$" + description = "Model that is compared to the actual model of the device" + } + "--os-version" = { + value = "$thola_identify_os_version$" + description = "OS-version that is compared to the actual OS-version of the device" + } + "--vendor" = { + value = "$thola_identify_vendor$" + description = "Vendor that is compared to the actual vendor of the device" + } + "--serial-number" = { + value = "$thola_identify_serial_number$" + description = "Serial number that is compared to the actual serial number of the device" + } + "--snmp-discover-retries" = { + value = "$thola_identify_discover_retries$" + description = "Number of discover retries" + } + "--snmp-discover-timeout" = { + value = "$thola_identify_discover_timeouts$" + description = "Number of discover timeouts" + } + } +} + +object CheckCommand "thola-memory-usage" { + import "generic-thola-device-check-command" + + command += [ "memory-usage" ] + + arguments += { + "--critical" = { + value = "$thola_memory_usage_critical$" + description = "Critical threshold for the memory usage in %" + } + "--warning" = { + value = "$thola_memory_usage_warning$" + description = "Warning threshold for the memory usage in %" + } + } +} + +object CheckCommand "thola-sbc" { + import "generic-thola-device-check-command" + + command += [ "sbc" ] + + arguments += { + "--system-health-score-critical" = { + value = "$thola_sbc_system_health_score_critical$" + description = "Critical threshold for the health score in %" + } + "--system-health-score-warning" = { + value = "$thola_sbc_system_health_score_warning$" + description = "Warning threshold for the health score in %" + } + } +} + +object CheckCommand "thola-thola-server" { + import "generic-thola-check-command" + + command += [ "thola-server" ] +} + +object CheckCommand "thola-ups" { + import "generic-thola-device-check-command" + + command += [ "ups" ] + + arguments += { + "--batt-current-critical-max" = { + value = "$thola_ups_batt_current_critical_max$" + description = "High critical threshold for the battery current in Volt" + } + "--batt-current-critical-min" = { + value = "$thola_ups_batt_current_critical_min$" + description = "Low critical threshold for the battery current in Volt" + } + "--batt-current-warning-max" = { + value = "$thola_ups_batt_current_warning_max$" + description = "High warning threshold for the battery current in Volt" + } + "--batt-current-warning-min" = { + value = "$thola_ups_batt_current_warning_min$" + description = "Low warning threshold for the battery current in Volt" + } + "--batt-temperature-critical-max" = { + value = "$thola_ups_batt_temperature_critical_max$" + description = "High critical threshold for the battery temperature in degree celsius" + } + "--batt-temperature-critical-min" = { + value = "$thola_ups_batt_temperature_critical_min$" + description = "Low critical threshold for the battery temperature in degree celsius" + } + "--batt-temperature-warning-max" = { + value = "$thola_ups_batt_temperature_warning_max$" + description = "High warning threshold for the battery temperature in degree celsius" + } + "--batt-temperature-warning-min" = { + value = "$thola_ups_batt_temperature_warning_min$" + description = "Low warning threshold for the battery temperature in degree celsius" + } + "--current-load-critical-max" = { + value = "$thola_ups_current_load_critical_max$" + description = "High critical threshold for the current load in %" + } + "--current-load-critical-min" = { + value = "$thola_ups_current_load_critical_min$" + description = "Low critical threshold for the current load in %" + } + "--current-load-warning-max" = { + value = "$thola_ups_current_load_warning_max$" + description = "High warning threshold for the current load in %" + } + "--current-load-warning-min" = { + value = "$thola_ups_current_load_warning_min$" + description = "Low warning threshold for the current load in %" + } + "--rectifier-current-critical-max" = { + value = "$thola_ups_rectifier_current_critical_max$" + description = "High critical threshold for the current rectifier in Volt" + } + "--rectifier-current-critical-min" = { + value = "$thola_ups_rectifier_current_critical_min$" + description = "Low critical threshold for the current rectifier in Volt" + } + "--rectifier-current-warning-max" = { + value = "$thola_ups_rectifier_current_warning_max$" + description = "High warning threshold for the current rectifier in Volt" + } + "--rectifier-current-warning-min" = { + value = "$thola_ups_rectifier_current_warning_min$" + description = "Low warning threshold for the current rectifier in Volt" + } + "--system-voltage-critical-max" = { + value = "$thola_ups_system_voltage_critical_max$" + description = "High critical threshold for the system voltage in Volt" + } + "--system-voltage-critical-min" = { + value = "$thola_ups_system_voltage_critical_min$" + description = "Low critical threshold for the system voltage in Volt" + } + "--system-voltage-warning-max" = { + value = "$thola_ups_system_voltage_warning_max$" + description = "High warning threshold for the system voltage in Volt" + } + "--system-voltage-warning-min" = { + value = "$thola_ups_system_voltage_warning_min$" + description = "Low warning threshold for the system voltage in Volt" + } + } +} diff --git a/itl/plugins-contrib.d/network-services.conf b/itl/plugins-contrib.d/network-services.conf new file mode 100644 index 0000000..28eb42c --- /dev/null +++ b/itl/plugins-contrib.d/network-services.conf @@ -0,0 +1,123 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "kdc" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_kdc" ] + + arguments = { + "-H" = { + value = "$kdc_address$" + description = "Name or IP address of KDC to check." + } + "-P" = { + value = "$kdc_port$" + description = "Port on which KDC runs (default 88)." + } + "-p" = { + value = "$kdc_principal$" + description = "Principal name to authenticate as (including realm)." + required = true + } + "-k" = { + value = "$kdc_keytab$" + description = "Keytab file containing principal's key." + required = true + } + } + + vars.kdc_address = "$check_address$" +} + +object CheckCommand "rbl" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_rbl" ] + + arguments = { + "-H" = { + value = "$rbl_hostname$" + description = "Name or IP address of SMTP server to check." + } + "-s" = { + value = "$rbl_server$" + description = "List of RBL servers as an array." + required = true + repeat_key = true + } + "-w" = { + value = "$rbl_warning$" + description = "Number of blacklisting servers for a warning." + } + "-c" = { + value = "$rbl_critical$" + description = "Number of blacklisting servers for a critical." + } + "-t" = { + value = "$rbl_timeout$" + description = "Seconds before plugin times out (default: 15)." + } + } + + vars.rbl_hostname = "$check_address$" + vars.rbl_timeout = 15 + vars.rbl_warning = 1 + vars.rbl_critical = 1 +} + +object CheckCommand "lsyncd" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_lsyncd" ] + + arguments = { + "-s" = { + value = "$lsyncd_statfile$" + description = "Set status file path (default: /var/run/lsyncd.status)." + } + "-w" = { + value = "$lsyncd_warning$" + description = "Warning if more than N delays (default: 10)." + } + "-c" = { + value = "$lsyncd_critical$" + description = "Critical if more then N delays (default: 100)." + } + } +} + +object CheckCommand "fail2ban" { + command = [ "sudo", PluginContribDir + "/check_fail2ban" ] + + arguments = { + "-D" = { + value = "$fail2ban_display$" + description = "To modify the output display, default is 'CHECK FAIL2BAN ACTIVITY'" + } + "-P" = { + value = "$fail2ban_path$" + description = "Specify the path to the tw_cli binary, default value is /usr/bin/fail2ban-client" + } + "-w" = { + value = "$fail2ban_warning$" + description = "Specify a warning threshold, default is 1" + } + "-c" = { + value = "$fail2ban_critical$" + description = "Specify a critical threshold, default is 2" + } + "-s" = { + value = "$fail2ban_socket$" + description = "Specify a socket path, default is unset" + } + "-p" = { + set_if = "$fail2ban_perfdata$" + description = "If set to true, activate the perfdata output" + } + "-j" = { + value = "$fail2ban_jail$" + description = "Specify the name of the specific jail to monitor; omitted by default, i.e. all jails are being monitored" + } + } + + vars.fail2ban_perfdata = true +} diff --git a/itl/plugins-contrib.d/operating-system.conf b/itl/plugins-contrib.d/operating-system.conf new file mode 100644 index 0000000..afab177 --- /dev/null +++ b/itl/plugins-contrib.d/operating-system.conf @@ -0,0 +1,190 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "mem" { + command = [ PluginContribDir + "/check_mem.pl" ] + + arguments = { + "-u" = { + set_if = "$mem_used$" + description = "Check USED memory" + } + "-f" = { + set_if = "$mem_free$" + description = "Check FREE memory" + } + "-C" = { + set_if = "$mem_cache$" + description = "Count OS caches as FREE memory" + } + "-w" = { + value = "$mem_warning$" + description = "Percent free/used when to warn" + } + "-c" = { + value = "$mem_critical$" + description = "Percent free/used when critical" + } + } + + vars.mem_used = false + vars.mem_free = false + vars.mem_cache = false +} + +object CheckCommand "sar-perf" { + command = [ PluginContribDir + "/check_sar_perf.py" ] + + arguments = { + "sar_perf_profile" = { + value = "$sar_perf_profile$" + description = "Define the run profile: pagestat, cpu, memory_util, memory_stat, io_transfer, queueln_load, swap_util, swap_stat, task, kernel, disk <disk>. Can be a string or an array of multiple profiles." + skip_key = true + repeat_key = false + required = true + } + "sar_perf_disk" = { + value = "$sar_perf_disk$" + set_if = {{ macro("$sar_perf_profile$") == "disk" }} + description = "Disk name for the 'disk' profile" + skip_key = true + } + } +} + +object CheckCommand "running_kernel" { + command = {{ + var use_sudo = macro("$running_kernel_use_sudo$") + + if (use_sudo == null && PlatformName == "Ubuntu") { + use_sudo = true + } + + var args + + if (use_sudo) { + args = [ "sudo" ] + } else { + args = [] + } + + args += [ PluginContribDir + "/check_running_kernel" ] + + return args + }} +} + +object CheckCommand "yum" { + command = [ PluginContribDir + "/check_yum" ] + + arguments = { + "--all-updates" = { + set_if = "$yum_all_updates$" + description = "Do not distinguish between security and non-security updates. This may be used if the YUM security plugin is absent." + } + "--warn-on-any-update" = { + set_if = "$yum_warn_on_any_update$" + description = "Warns if there are any (non-security) package updates available." + } + "--cache-only" = { + set_if = "$yum_cache_only$" + description = "Run entirely from cache and do not update the cache." + } + "--no-warn-on-lock" = { + set_if = "$yum_no_warn_on_lock$" + description = "Return OK instead of WARNING when YUM is locked." + } + "--no-warn-on-updates" = { + set_if = "$yum_no_warn_on_updates$" + description = "Return OK instead of WARNING even when updates are available." + } + "--enablerepo" = { + value = "$yum_enablerepo$" + description = "Explicitly enables a reposity when calling YUM. Can take a comma separated list of repositories." + } + "--disablerepo" = { + value = "$yum_disablerepo$" + description = "Explicitly disables a reposity when calling YUM. Can take a comma separated list of repositories." + } + "--installroot" = { + value = "$yum_installroot$" + description = "Specifies another installation root directory" + } + "--timeout" = { + value = "$yum_timeout$" + description = "Sets a timeout in seconds after which the plugin will exit (defaults to 55 seconds)." + } + } + + vars.yum_all_updates = false + vars.yum_warn_on_any_update = false + vars.yum_cache_only = false + vars.yum_no_warn_on_lock = false + vars.yum_no_warn_on_updates = false + + timeout = 5m +} + +object CheckCommand "iostat" { + command = [ PluginContribDir + "/check_iostat" ] + + arguments = { + "-d" = { + value = "$iostat_disk$" + description = "Device to check without path. e.g. sda" + } + "-w" = { + value ="$iostat_wtps$,$iostat_wread$,$iostat_wwrite$" + description = "warning threshold for tps, KB_read/s and KB_written/s" + } + "-c" = { + value ="$iostat_ctps$,$iostat_cread$,$iostat_cwrite$" + description = "warning threshold for tps, KB_read/s and KB_written/s" + } + } + + vars.iostat_disk = "sda" + vars.iostat_wtps = 100 + vars.iostat_wread = 100 + vars.iostat_wwrite = 100 + vars.iostat_ctps = 200 + vars.iostat_cread = 200 + vars.iostat_cwrite = 200 +} + +object CheckCommand "iostats" { + command = [ PluginContribDir + "/check_iostats" ] + + arguments = { + "-d" = { + value = "$iostats_disk$" + description = "Device to check without path. e.g. sda" + } + "-w" = { + value ="$iostats_warning_tps$,$iostats_warning_read$,$iostats_warning_write$" + description = "Sets the WARNING level for tps, KB_read/s and KB_written/s, respectively" + } + "-c" = { + value ="$iostats_critical_tps$,$iostats_critical_read$,$iostats_critical_write$" + description = "Sets the CRITICAL level for tps, KB_read/s and KB_written/s, respectively" + } + "-W" = { + value ="$iostats_warning_wait$" + description = "Sets the WARNING level for iowait" + } + + "-C" = { + value ="$iostats_critical_wait$" + description = "Sets the CRITICAL level for iowait" + } + } + + vars.iostats_disk = "sda" + vars.iostats_warning_tps = 3000 + vars.iostats_warning_read = 50000 + vars.iostats_warning_write = 10000 + vars.iostats_warning_wait = 50 + vars.iostats_critical_tps = 5000 + vars.iostats_critical_read = 80000 + vars.iostats_critical_write = 25000 + vars.iostats_critical_wait = 80 +} diff --git a/itl/plugins-contrib.d/raid-controller.conf b/itl/plugins-contrib.d/raid-controller.conf new file mode 100644 index 0000000..17fb388 --- /dev/null +++ b/itl/plugins-contrib.d/raid-controller.conf @@ -0,0 +1,122 @@ +/* + * Icinga2 CheckCommand definitions to monitor RAID controller from Adaptec and Broadcom using + * the Adaptec RAID Monitoring Plugin and the LSI RAID Monitoring Plugin + */ + +object CheckCommand "adaptec-raid" { + import "plugin-check-command" + + command = [ PluginContribDir + "/check_adaptec_raid" ] + + arguments = { + "-C" = { + required = true + value = "$adaptec_controller_number$" + description = "Insert the controller number to be checked." + } + "-p" = { + required = true + value = "$arcconf_path$" + description = "Insert the path to arcconf (e.g. /sbin/arcconf)." + } + } + + vars.arcconf_path = "/sbin/arcconf" +} + +object CheckCommand "lsi-raid" { + import "plugin-check-command" + + command = [ PluginContribDir + "/check_lsi_raid" ] + + arguments = { + "-C" = { + value = "$lsi_controller_number$" + description = "Insert the controller number to be checked." + } + "-p" = { + value = "$storcli_path$" + description = "Insert the path to storcli (e.g. /usr/sbin/storcli)." + } + "-EID" = { + value = "$lsi_enclosure_id$" + description = "Enclosure numbers to be checked, comma-separated." + } + "-LD" = { + value = "$lsi_ld_id$" + description = "Logical devices to be checked, comma-separated." + } + "-PD" = { + value = "$lsi_pd_id$" + description = "Physical devices to be checked, comma-separated." + } + "-Tw" = { + value = "$lsi_temp_warning$" + description = "RAID controller warning temperature." + } + "-Tc" = { + value = "$lsi_temp_critical$" + description = "RAID controller critical temperature." + } + "-PDTw" = { + value = "$lsi_pd_temp_warning$" + description = "Disk warning temperature." + } + "-PDTc" = { + value = "$lsi_pd_temp_critical$" + description = "Disk critical temperature." + } + "-BBUTw" = { + value = "$lsi_bbu_temp_warning$" + description = "Battery warning temperature." + } + "-BBUTc" = { + value = "$lsi_bbu_temp_critical$" + description = "Battery critical temperature." + } + "-CVTw" = { + value = "$lsi_cv_temp_warning$" + description = "CacheVault warning temperature." + } + "-CVTc" = { + value = "$lsi_cv_temp_critical$" + description = "CacheVault critical temperature." + } + "-Im" = { + value = "$lsi_ignored_media_errors$" + description = "Warning threshold for media errors." + } + "-Io" = { + value = "$lsi_ignored_other_errors$" + description = "Warning threshold for other errors." + } + "-Ip" = { + value = "$lsi_ignored_predictive_fails$" + description = "Warning threshold for predictive failures." + } + "-Is" = { + value = "$lsi_ignored_shield_counters$" + description = "Warning threshold for shield counter." + } + "-Ib" = { + value = "$lsi_ignored_bbm_counters$" + description = "Warning threshold for BBM counter." + } + "-b" = { + value = "$lsi_bbu$" + description = "Define if BBU is present and it's state should be checked." + } + "--noenclosures" = { + set_if = "$lsi_noenclosures$" + description = "Define if enclosures are present." + } + "--nosudo" = { + set_if = "$lsi_nosudo$" + description = "Do not use sudo when running storcli." + } + "--nocleanlogs" = { + set_if = "$lsi_nocleanlogs$" + description = "Do not clean up the log files after executing storcli checks." + } + } +} diff --git a/itl/plugins-contrib.d/smart-attributes.conf b/itl/plugins-contrib.d/smart-attributes.conf new file mode 100644 index 0000000..20eb345 --- /dev/null +++ b/itl/plugins-contrib.d/smart-attributes.conf @@ -0,0 +1,24 @@ +/* + * Icinga2 CheckCommand definition for the SMART Attributes Monitoring Plugin + */ + +object CheckCommand "smart-attributes" { + import "plugin-check-command" + + command = [ PluginContribDir + "/check_smart_attributes" ] + + arguments = { + "-dbj" = { + required = true + value = "$smart_attributes_config_path$" + description = "Path to the smart attributes config file (e.g. check_smartdb.json)" + } + "-d" = { + required = true + value = "$smart_attributes_device$" + description = "Insert the device name (e.g. /dev/sda) to monitor" + } + } + + vars.smart_attributes_config_path = ConfigDir + "/plugins-config/check_smartdb.json" +} diff --git a/itl/plugins-contrib.d/storage.conf b/itl/plugins-contrib.d/storage.conf new file mode 100644 index 0000000..dca080e --- /dev/null +++ b/itl/plugins-contrib.d/storage.conf @@ -0,0 +1,119 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "glusterfs" { + command = [ "sudo", PluginContribDir + "/check_glusterfs" ] + + arguments = { + "--perfdata" = { + set_if = "$glusterfs_perfdata$" + description = "Optional. Print perfdata of all or the specified volume." + } + "--warnonfailedheal" = { + set_if = "$glusterfs_warnonfailedheal$" + description = "Optional. Warn if the *heal-failed* log contains entries. The log can be cleared by restarting glusterd." + } + "--volume" = { + value = "$glusterfs_volume$" + description = "Optional. Only check the specified *VOLUME*. If --volume is not set, all volumes are checked." + } + "-w" = { + value = "$glusterfs_disk_warning$" + description = "Optional. Warn if disk usage is above *DISKWARN*. Defaults to 90 (percent)." + } + "-c" = { + value = "$glusterfs_disk_critical$" + description = "Optional. Return a critical error if disk usage is above *DISKCRIT*. Defaults to 95 (percent)." + } + "-W" = { + value = "$glusterfs_inode_warning$" + description = "Optional. Warn if inode usage is above *DISKWARN*. Defaults to 90 (percent)." + } + "-C" = { + value = "$glusterfs_inode_critical$" + description = "Optional. Return a critical error if inode usage is above *DISKCRIT*. Defaults to 95 (percent)." + } + } + + vars.glusterfs_disk_warning = 90 + vars.glusterfs_disk_critical = 95 + vars.glusterfs_inode_warning = 90 + vars.glusterfs_inode_critical = 95 +} + +object CheckCommand "ceph" { + command = [ PluginContribDir + "/check_ceph.py" ] + + arguments = { + "-e" = { + value = "$ceph_exec_dir$" + required = false + description = "ceph executable [/usr/bin/ceph]" + } + "-c" = { + value = "$ceph_conf_file$" + required = false + description = "alternative ceph conf file" + } + "-m" = { + value = "$ceph_mon_address$" + required = false + description = "ceph monitor address[:port]" + } + "-i" = { + value = "$ceph_client_id$" + required = false + description = "ceph client id" + } + "-n" = { + value = "$ceph_client_name$" + required = false + description = "ceph client name" + } + "-k" = { + value = "$ceph_client_key$" + required = false + description = "ceph client keyring file" + } + "-w" = { + value = "$ceph_whitelist$" + required = false + description = "whitelist regexp for ceph health warnings" + } + "-d" = { + set_if = "$ceph_details$" + description = "exec 'ceph health detail'" + } + } +} + +object CheckCommand "btrfs" { + import "plugin-check-command" + command = [ "sudo", PluginContribDir + "/check_btrfs" ] + + arguments = { + "--allocated-warning-gib" = { + value = "$btrfs_awg$" + description = "Exit with WARNING status if less than the specified amount of disk space (in GiB) is unallocated" + } + "--allocated-critical-gib" = { + value = "$btrfs_acg$" + description = "Exit with CRITICAL status if less than the specified amount of disk space (in GiB) is unallocated" + } + "--allocated-warning-percent" = { + value = "$btrfs_awp$" + description = "Exit with WARNING status if more than the specified percent of disk space is allocated" + } + "--allocated-critical-percent" = { + value = "$btrfs_acp$" + description = "Exit with CRITICAL status if more than the specified percent of disk space is allocated" + } + "--mountpoint" = { + value = "$btrfs_mountpoint$" + description = "Path to the BTRFS mountpoint" + required = true + } + } + vars.btrfs_awp = 80 + vars.btrfs_acp = 90 +} + diff --git a/itl/plugins-contrib.d/systemd.conf b/itl/plugins-contrib.d/systemd.conf new file mode 100644 index 0000000..4c0bbca --- /dev/null +++ b/itl/plugins-contrib.d/systemd.conf @@ -0,0 +1,51 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "systemd" { + command = [ PluginContribDir + "/check_systemd.py" ] + + arguments = { + "--unit" = { + value = "$systemd_unit$" + description = "Name of the systemd unit that is being tested." + } + "--exclude" = { + value = "$systemd_exclude_unit$" + description = "Exclude a systemd unit from the checks. This option can be applied multiple times. Also supports regular expressions." + repeat_key = true + } + "--no-startup-time" = { + set_if = "$systemd_no_startup_time$" + description = "Don’t check the startup time. Using this option the options `systemd_warning` and `systemd_critical` have no effect. (Default: `false`)" + } + "--warning" = { + value = "$systemd_warning$" + description = "Startup time in seconds to result in a warning status. (Default: `60s`)" + } + "--critical" = { + value = "$systemd_critical$" + description = "Startup time in seconds to result in a critical status. (Default: `120s`)" + } + "--dead-timers" = { + set_if = "$systemd_dead_timers$" + description = "Detect dead / inactive timers. (Default: `false`)" + } + "--dead-timers-warning" = { + value = "$systemd_dead_timers_warning$" + description = "Time ago in seconds for dead / inactive timers to trigger a warning state (by default 6 days)." + } + "--dead-timers-critical" = { + value = "$systemd_dead_timers_critical$" + description = "Time ago in seconds for dead / inactive timers to trigger a critical state (by default 7 days)." + } + "-v" = { + set_if = {{ macro("$systemd_verbose_level$") == 1 }} + description = "Increase verbosity level (Accepted values: `1`, `2` or `3`). Defaults to none." + } + "-vv" = { + set_if = {{ macro("$systemd_verbose_level$") == 2 }} + } + "-vvv" = { + set_if = {{ macro("$systemd_verbose_level$") == 3 }} + } + } +} diff --git a/itl/plugins-contrib.d/virtualization.conf b/itl/plugins-contrib.d/virtualization.conf new file mode 100644 index 0000000..0f2a7aa --- /dev/null +++ b/itl/plugins-contrib.d/virtualization.conf @@ -0,0 +1,84 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "esxi_hardware" { + command = [ PluginContribDir + "/check_esxi_hardware.py" ] + + arguments = { + "-H" = { + value = "$esxi_hardware_host$" + description = "report on HOST" + } + "-U" = { + value = "$esxi_hardware_user$" + description = "user to connect as" + } + "-P" = { + value = "$esxi_hardware_pass$" + description = "password" + } + "-C" = { + value = "$esxi_hardware_port$" + description = "cim port" + } + "-S" = { + value = "$esxi_hardware_sslproto$" + description = "Overwrite system default of SSL/TLS protocol to use. Must be one of: SSLv2, SSLv3, TLSv1, TLSv1.1, TLSv1.2, TLSv1.3" + } + "-V" = { + value = "$esxi_hardware_vendor$" + description = "Vendor code: auto, dell, hp, ibm, intel, or unknown" + } + "-I" = { + value = "$esxi_hardware_html$" + description = "generate html links for country XX" + } + "-i" = { + value = "$esxi_hardware_ignore$" + description = "comma-separated list of elements to ignore" + } + "-r" = { + set_if = "$esxi_hardware_regex$" + description = "Allow regular expression lookups of elements in ignore list" + } + "-p" = { + set_if = "$esxi_hardware_perfdata$" + description = "collect performance data for pnp4nagios" + } + "--no-power" = { + set_if = "$esxi_hardware_nopower$" + description = "don't collect power performance data" + } + "--no-volts" = { + set_if = "$esxi_hardware_novolts$" + description = "don't collect voltage performance data" + } + "--no-current" = { + set_if = "$esxi_hardware_nocurrent$" + description = "don't collect current performance data" + } + "--no-temp" = { + set_if = "$esxi_hardware_notemp$" + description = "don't collect temperature performance data" + } + "--no-fan" = { + set_if = "$esxi_hardware_nofan$" + description = "don't collect fan performance data" + } + "--no-lcd" = { + set_if = "$esxi_hardware_nolcd$" + description = "don't collect lcd/display status data" + } + } + + vars.esxi_hardware_host = "$address$" + vars.esxi_hardware_port = 5989 + vars.esxi_hardware_regex = false + vars.esxi_hardware_perfdata = false + vars.esxi_hardware_nopower = false + vars.esxi_hardware_novolts = false + vars.esxi_hardware_nocurrent = false + vars.esxi_hardware_notemp = false + vars.esxi_hardware_nofan = false + vars.esxi_hardware_nolcd = false +} + diff --git a/itl/plugins-contrib.d/vmware.conf b/itl/plugins-contrib.d/vmware.conf new file mode 100644 index 0000000..63ee3fa --- /dev/null +++ b/itl/plugins-contrib.d/vmware.conf @@ -0,0 +1,1161 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +/** + * main vmware-esx template + */ + +template CheckCommand "vmware-esx-command" { + command = [ PluginContribDir + "/check_vmware_esx" ] + + arguments = { + "--ignore_unknown" = { + set_if = "$vmware_ignoreunknown$" + description = "Sometimes 3 (unknown) is returned from a component. But the check itself is ok. With this option the plugin will return OK (0) instead of UNKNOWN (3)." + } + "--ignore_warning" = { + set_if = "$vmware_ignorewarning$" + description = "Sometimes 2 (warning) is returned from a component. But the check itself is ok (from an operator view)." + } + "--timeout" = { + value = "$vmware_timeout$" + description = "Seconds before plugin times out (default: 90)." + } + "--trace" = { + set_if = "$vmware_trace$" + description = "Set verbosity level of vSphere API request/respond trace." + } + "--sessionfile" = { + value = "$vmware_sessionfile$" + description = "Vmware auth session file - no efect if $vmware_nosession$ var is true." + } + "--sessionfiledir" = { + value = "$vmware_sessionfiledir$" + description = "Vmware auth session file directory - no efect if $vmware_nosession$ var is true." + } + "--nosession" = { + set_if = "$vmware_nosession$" + description = "No auth session - IT SHOULD BE USED FOR TESTING PURPOSES ONLY!." + } + "--username" = { + value = "$vmware_username$" + description = "Username to connect with." + } + "--password" = { + value = "$vmware_password$" + description = "Password to use with the username." + } + "--authfile" = { + value = "$vmware_authfile$" + description = "Autentication file content: \ + username=<username> \ + password=<password>" + } + } + + vars.vmware_timeout = "90" + vars.vmware_ignorewarning = false + vars.vmware_auth_nosession = false + vars.vmware_sessionfiledir = "/var/spool/icinga2/tmp" +} + + +/** + * VMware DC + */ + +template CheckCommand "vmware-esx-dc" { + import "vmware-esx-command" + + arguments += { + "--datacenter" = { + value = "$vmware_datacenter$" + required = true + description = "Datacenter/Vcenter hostname." + } + "--cluster" = { + value = "$vmware_cluster$" + required = false + description = "ESX or ESXi clustername." + } + "--sslport" = { + value = "$vmware_sslport$" + description = "If a SSL port different from 443 is used." + } + } + + vars.vmware_sslport = "443" +} + +object CheckCommand "vmware-esx-dc-volumes" { + import "vmware-esx-dc" + + arguments += { + "--select" = "volumes" + "--subselect" = "$vmware_subselect$" + "--gigabyte" = { + set_if = "$vmware_gigabyte$" + description = "Output in GB instead of MB." + } + "--usedspace" = { + set_if = "$vmware_usedspace$" + description = "Output used space instead of free." + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + description = "List only alerting volumes." + } + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_usedspace = true + vars.vmware_alertonly = false + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-dc-runtime-info" { + import "vmware-esx-dc" + + arguments += { + "--select" = { + value = "runtime" + description = "Shows all runtime info for the datacenter/Vcenter." + } + } +} + +object CheckCommand "vmware-esx-dc-runtime-listvms" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "listvms" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + + } + } +} + +object CheckCommand "vmware-esx-dc-runtime-listhost" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "listhost" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + } + } +} + +object CheckCommand "vmware-esx-dc-runtime-listcluster" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "listcluster" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + } + } +} + +object CheckCommand "vmware-esx-dc-runtime-issues" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "issues" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-dc-runtime-status" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "status" + } +} + +object CheckCommand "vmware-esx-dc-runtime-tools" { + import "vmware-esx-dc" + + arguments += { + "--select" = "runtime" + "--subselect" = "tools" + "--poweredonly" = { + set_if = "$vmware_poweredonly$" + } + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + } + "--open-vm-tools" = { + set_if = "$vmware_openvmtools$" + } + } +} + + +/** + * VMware HOST + */ + +template CheckCommand "vmware-esx-soap-host" { + import "vmware-esx-command" + + arguments += { + "--host" = { + value = "$vmware_host$" + required = true + description = "ESX or ESXi hostname." + } + "--datacenter" = { + value = "$vmware_datacenter$" + required = false + description = "Datacenter/Vcenter hostname." + } + "--sslport" = { + value = "$vmware_sslport$" + description = "If a SSL port different from 443 is used." + } + } + + vars.vmware_host = "$address$" + vars.vmware_sslport = "443" +} + +object CheckCommand "vmware-esx-soap-host-check" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = { + value = "soap" + description = "Simple check to verify a successfull connection to VMWare SOAP API." + } + } +} + +object CheckCommand "vmware-esx-soap-host-uptime" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "uptime" + } +} + +object CheckCommand "vmware-esx-soap-host-cpu" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "cpu" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + + +object CheckCommand "vmware-esx-soap-host-cpu-ready" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "cpu" + "--subselect" = "ready" + } +} + +object CheckCommand "vmware-esx-soap-host-cpu-wait" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "cpu" + "--subselect" = "wait" + } +} + +object CheckCommand "vmware-esx-soap-host-cpu-usage" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "cpu" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-soap-host-mem" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + } +} + +object CheckCommand "vmware-esx-soap-host-mem-usage" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-soap-host-mem-consumed" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + "--subselect" = "consumed" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-mem-swapused" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + "--subselect" = "swapused" + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-mem-overhead" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + "--subselect" = "overhead" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-mem-memctl" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "mem" + "--subselect" = "memctl" + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-net" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "net" + "--exclude" = "$vmware_exclude$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-net-usage" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "net" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-net-receive" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "net" + "--subselect" = "receive" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-net-send" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "net" + "--subselect" = "send" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-net-nic" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "net" + "--subselect" = "nic" + "--exclude" = "$vmware_exclude$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-volumes" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "volumes" + "--subselect" = "$vmware_subselect$" + "--gigabyte" = { + set_if = "$vmware_gigabyte$" + description = "Output in GB instead of MB." + } + "--usedspace" = { + set_if = "$vmware_usedspace$" + description = "Output used space instead of free." + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + description = "List only alerting volumes." + } + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + "--spaceleft" = { + set_if = "$vmware_spaceleft$" + } + } + + vars.vmware_usedspace = true + vars.vmware_alertonly = false + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-soap-host-io" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + } +} + +object CheckCommand "vmware-esx-soap-host-io-aborted" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "aborted" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-resets" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "resets" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-read" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "read" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-read-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "read_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-write" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "write" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-write-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "write_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-usage" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-kernel-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "kernel_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-device-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "device_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-queue-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "queue_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-io-total-latency" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "io" + "--subselect" = "total_latency" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-host-media" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "hostmedia" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-service" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "service" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-con" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "con" + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-listvms" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "listvms" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-status" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "status" + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-health" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "health" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-health-listsensors" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "health" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--listsensors" = {} + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-health-nostoragestatus" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "health" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--nostoragestatus" = {} + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-storagehealth" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "storagehealth" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-temp" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "temp" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-runtime-issues" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "runtime" + "--subselect" = "issues" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-storage" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "storage" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-storage-adapter" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "storage" + "--subselect" = "adapter" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + +object CheckCommand "vmware-esx-soap-host-storage-lun" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "storage" + "--subselect" = "lun" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} + + +object CheckCommand "vmware-esx-soap-host-storage-path" { + import "vmware-esx-soap-host" + + arguments += { + "--select" = "storage" + "--subselect" = "path" + "--exclude" = "$vmware_exclude$" + "--include" = "$vmware_include$" + "--isregexp" = { + set_if = "$vmware_isregexp$" + } + "--alertonly" = { + set_if = "$vmware_alertonly$" + } + "--multiline" = { + set_if = "$vmware_multiline$" + } + "--standbyok" = { + set_if = "$vmware_standbyok$" + } + } +} + +/** + * VMware VM + */ +template CheckCommand "vmware-esx-soap-vm" { + import "vmware-esx-command" + + arguments += { + "--datacenter" = { + value = "$vmware_datacenter$" + description = "Datacenter/Vcenter hostname." + } + "--host" = { + value = "$vmware_host$" + description = "ESX or ESXi hostname." + } + "--name" = { + value = "$vmware_vmname$" + required = true + description = "Virtual machine name." + } + "--sslport" = { + value = "$vmware_sslport$" + description = "If a SSL port different from 443 is used." + } + } + + vars.vmware_host = "$address$" + vars.vmware_sslport = "443" +} + +object CheckCommand "vmware-esx-soap-vm-cpu" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "cpu" + } +} + +object CheckCommand "vmware-esx-soap-vm-cpu-ready" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "cpu" + "--subselect" = "ready" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-cpu-wait" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "cpu" + "--subselect" = "wait" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-cpu-usage" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "cpu" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-soap-vm-mem" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "mem" + } +} + +object CheckCommand "vmware-esx-soap-vm-mem-usage" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "mem" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } + + vars.vmware_warn = "80%" + vars.vmware_crit = "90%" +} + +object CheckCommand "vmware-esx-soap-vm-mem-consumed" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "mem" + "--subselect" = "consumed" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-mem-memctl" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "mem" + "--subselect" = "memctl" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-net" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "net" + } +} + +object CheckCommand "vmware-esx-soap-vm-net-usage" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "net" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-net-receive" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "net" + "--subselect" = "receive" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-net-send" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "net" + "--subselect" = "send" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-io" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "io" + } +} + +object CheckCommand "vmware-esx-soap-vm-io-read" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "io" + "--subselect" = "read" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-io-write" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "io" + "--subselect" = "write" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-io-usage" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "io" + "--subselect" = "usage" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-con" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "con" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-powerstate" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "powerstate" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-status" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "status" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-consoleconnections" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "consoleconnections" + "--warning" = "$vmware_warn$" + "--critical" = "$vmware_crit$" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-gueststate" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "gueststate" + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-tools" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "tools" + "--open-vm-tools" = { + set_if = "$vmware_openvmtools$" + } + } +} + +object CheckCommand "vmware-esx-soap-vm-runtime-issues" { + import "vmware-esx-soap-vm" + + arguments += { + "--select" = "runtime" + "--subselect" = "issues" + "--multiline" = { + set_if = "$vmware_multiline$" + } + } +} diff --git a/itl/plugins-contrib.d/web.conf b/itl/plugins-contrib.d/web.conf new file mode 100644 index 0000000..7329706 --- /dev/null +++ b/itl/plugins-contrib.d/web.conf @@ -0,0 +1,739 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +object CheckCommand "webinject" { + command = [ PluginContribDir + "/check_webinject" ] + + arguments = { + "-c" = { + value = "$webinject_config_file$" + description = "There is a configuration file named 'config.xml' that is used to store configuration settings for your project. You can use this to specify which test case files to run and to set some constants and settings to be used by WebInject." + } + + "-o" = { + value = "$webinject_output$" + description = "This option is followed by a directory name or a prefix to prepended to the output files. This is used to specify the location for writing output files (http.log, results.html, and results.xml). If a directory name is supplied (use either an absolute or relative path and make sure to add the trailing slash), all output files are written to this directory. If the trailing slash is ommitted, it is assumed to a prefix and this will be prepended to the output files. You may also use a combination of a directory and prefix." + } + + "-n" = { + set_if = "$webinject_no_output$" + description = "Suppresses all output to STDOUT except the results summary." + } + + "-t" = { + value = "$webinject_timeout$" + description = "The value [given in seconds] will be compared to the global time elapsed to run all the tests. If the tests have all been successful, but have taken more time than the 'globaltimeout' value, a warning message is sent back to Icinga." + } + + "-r" = { + value = "$webinject_report_type$" + description = "This setting is used to enable output formatting that is compatible for use with specific external programs. The available values you can set this to are: nagios, mrtg, external and standard" + } + + "-s" = { + value = "$webinject_key_value$" + description = "key=value" + } + + "testcase_file" = { + value = "$webinject_testcase_file$" + description = "When you launch WebInject in console mode, you can optionally supply an argument for a testcase file to run. It will look for this file in the directory that webinject.pl resides in. If no filename is passed from the command line, it will look in config.xml for testcasefile declarations. If no files are specified, it will look for a default file named 'testcases.xml' in the current [webinject] directory. If none of these are found, the engine will stop and give you an error." + skip_key = true + order = 1 + } + } +} + +object CheckCommand "jmx4perl" { + command = [ PluginContribDir + "/check_jmx4perl" ] + + arguments = { + "-u" = { + value = "$jmx4perl_url$" + description = "URL to agent web application (e.g. http://server:8080/jolokia/)" + } + "--product" = { + value = "$jmx4perl_product$" + description = "Name of app server product (e.g. jboss)" + } + "--alias" = { + value = "$jmx4perl_alias$" + description = "Alias name for attribute (e.g. MEMORY_HEAP_USED)" + } + "-m" = { + value = "$jmx4perl_mbean$" + description = "MBean name (e.g. java.lang:type=Memory)" + } + "-a" = { + value = "$jmx4perl_attribute$" + description = "Attribute name (e.g. HeapMemoryUsage)" + } + "-o" = { + value = "$jmx4perl_operation$" + description = "Operation to execute" + } + "--value" = { + value = "$jmx4perl_value$" + description = "Shortcut for specifying mbean/attribute/path. Slashes within names must be escaped with backslash" + } + "--delta" = { + value = "$jmx4perl_delta$" + description = "Switches on incremental mode. Optional argument are seconds used for normalizing." + } + "-p" = { + value = "$jmx4perl_path$" + description = "Inner path for extracting a single value from a complex attribute or return value (e.g. used)" + } + "--target" = { + value = "$jmx4perl_target$" + description = "JSR-160 Service URL specifing the target server" + } + "--target-user" = { + value = "$jmx4perl_target_user$" + description = "Username to use for JSR-160 connection" + } + "--target-password" = { + value = "$jmx4perl_target_password$" + description = "Password to use for JSR-160 connection" + } + "--proxy" = { + value = "$jmx4perl_proxy$" + description = "Proxy to use" + } + "--user" = { + value = "$jmx4perl_user$" + description = "User for HTTP authentication" + } + "--password" = { + value = "$jmx4perl_password$" + description = "Password for HTTP authentication" + } + "-n" = { + value = "$jmx4perl_name$" + description = "Name to use for output. Optional, by default a standard value based on the MBean and attribute will be used" + } + "--method" = { + value = "$jmx4perl_method$" + description = "HTTP method to use. Either get or post" + } + "-b" = { + value = "$jmx4perl_base$" + description = "Base name, which when given, interprets critical and warning values as relative in the range 0 .. 100%. Must be given in the form mbean/attribute/path" + } + "--base-mbean" = { + value = "$jmx4perl_base_mbean$" + description = "Base MBean name, interprets critical and warning values as relative in the range 0 .. 100%. Requires a base-attribute, too" + } + "--base-attribute" = { + value = "$jmx4perl_base_attribute$" + description = "Base attribute for a relative check. Used together with base-mbean" + } + "--base-path" = { + value = "$jmx4perl_base_path$" + description = "Base path for relative checks, where this path is used on the base attribute's value" + } + "--unit" = { + value = "$jmx4perl_unit$" + description = "Unit of measurement of the data retreived. Recognized values are [B|KB|MN|GB|TB] for memory values and [us|ms|s|m|h|d] for time values" + } + "--null" = { + value = "$jmx4perl_null$" + description = "Value which should be used in case of a null return value of an operation or attribute. Is null by default" + } + "--string" = { + set_if = "$jmx4perl_string$" + description = "Force string comparison for critical and warning checks" + } + "--numeric" = { + set_if = "$jmx4perl_numeric$" + description = "Force numeric comparison for critical and warning checks" + } + "-c" = { + value = "$jmx4perl_critical$" + description = "Critical threshold for value" + } + "-w" = { + value = "$jmx4perl_warning$" + description = "Warning threshold for value" + } + "-l" = { + value = "$jmx4perl_label$" + description = "Label to be used for printing out the result of the check. Placeholders can be used." + } + "--perfdata" = { + value = "$jmx4perl_perfdata$" + description = "Whether performance data should be omitted, which are included by default." + } + "--unknown-is-critical" = { + set_if = "$jmx4perl_unknown_is_critical$" + description = "Map UNKNOWN errors to errors with a CRITICAL status" + } + "-t" = { + value = "$jmx4perl_timeout$" + description = "Seconds before plugin times out (default: 15)" + } + "--config" = { + value = "$jmx4perl_config$" + description = "Path to configuration file." + } + "--server" = { + value = "$jmx4perl_server$" + description = "Symbolic name of server url to use, which needs to be configured in the configuration file." + } + "--check" = { + value = "$jmx4perl_check$" + description = "Name of a check configuration as defined in the configuration file, use array if you need arguments." + order = 1 + repeat_key = false + } + } + + vars.jmx4perl_url = "http://$address$:8080/jolokia" + vars.jmx4perl_string = false + vars.jmx4perl_numeric = false + vars.jmx4perl_unknown_is_critical = false +} + +object CheckCommand "squid" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_squid" ] + + arguments = { + "--host" = { + value = "$squid_hostname$" + description = "Name of the proxy to check (default: localhost)" + } + "--data" = { + value = "$squid_data$" + description = "Optional data to fetch (default: Connections) available data : Connections Cache Resources Memory FileDescriptors" + } + "--port" = { + value = "$squid_port$" + description = "Optional port number (default: 3128)" + } + "--user" = { + value = "$squid_user$" + description = "WWW user" + } + "--password" = { + value = "$squid_password$" + description = "WWW password" + } + "--warning" = { + value = "$squid_warning$" + description = "Warning threshold. See http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT for the threshold format." + } + "--critical" = { + value = "$squid_critical$" + description = "Critical threshold. See http://nagiosplug.sourceforge.net/developer-guidelines.html#THRESHOLDFORMAT for the threshold format." + } + "--squidclient" = { + value = "$squid_client$" + description = "Path of squidclient (default: /usr/bin/squidclient)" + } + "--timeout" = { + value = "$squid_timeout$" + description = "Seconds before plugin times out (default: 15)" + } + } + + vars.squid_hostname = "$check_address$" + vars.squid_client = "/usr/bin/squidclient" +} + +object CheckCommand "nginx_status" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_nginx_status.pl" ] + + arguments = { + "--hostname" = { + value = "$nginx_status_host_address$" + description = "name or IP address of host to check" + } + "--port" = { + value = "$nginx_status_port$" + description = "the http port" + } + "--url" = { + value = "$nginx_status_url$" + description = "Specific URL to use, instead of the default 'http://<nginx_status_hostname>/nginx_status'" + } + "--servername" = { + value = "$nginx_status_servername$" + description = "ServerName, use it if you specified an IP in -H to match the good Virtualhost in your target" + } + "--ssl" = { + set_if = "$nginx_status_ssl$" + description = "Wether we should use HTTPS instead of HTTP" + } + "--disable-sslverifyhostname" = { + set_if = "$nginx_status_disable_sslverify$" + description = "Disable SSL hostname verification" + } + "--user" = { + value = "$nginx_status_user$" + description = "Username for basic auth" + } + "--pass" = { + value = "$nginx_status_pass$" + description = "Password for basic auth" + } + "--realm" = { + value = "$nginx_status_realm$" + description = "Realm for basic auth" + } + "--maxreach" = { + value = "$nginx_status_maxreach$" + description = "Number of max processes reached (since last check) that should trigger an alert" + } + "--timeout" = { + value = "$nginx_status_timeout$" + description = "timeout in seconds" + } + "--warn" = { + value = "$nginx_status_warn$" + description = "number of active connections, ReqPerSec or ConnPerSec that will cause a WARNING" + } + "--critical" = { + value = "$nginx_status_critical$" + description = "number of active connections, ReqPerSec or ConnPerSec that will cause a CRITICAL" + } + } + + vars.nginx_status_host_address = "$check_address$" + vars.nginx_status_ssl = false + vars.nginx_status_disable_sslverify = false + vars.nginx_status_warn = "10000,100,200" + vars.nginx_status_critical = "20000,200,300" + vars.nginx_status_timeout = 15 +} + +object CheckCommand "apache-status" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_apache_status.pl" ] + + arguments = { + "-H" = { + value = "$apache_status_address$" + description = "name or IP address of host to check" + } + "-p" = { + value = "$apache_status_port$" + description = "the http port" + } + "-s" = { + set_if = "$apache_status_ssl$" + description = "Whether we should use HTTPS instead of HTTP" + } + "-u" = { + value = "$apache_status_uri$" + description = "Specific URL to use, instead of the default 'http://<apache_status_address>/server-status'" + } + "-U" = { + value = "$apache_status_username$" + description = "username for basic auth" + } + "-P" = { + value = "$apache_status_password$" + description = "password for basic auth" + } + "-w" = { + value = "$apache_status_warning$" + description = "number of open slots, busy workers and idle workers that will cause a WARNING" + } + "-c" = { + value = "$apache_status_critical$" + description = "number of open slots, busy workers and idle workers that will cause a CRITICAL" + } + "-t" = { + value = "$apache_status_timeout$" + description = "timeout in seconds" + } + "-N" = { + set_if = "$apache_status_no_validate$" + description = "do not validate the SSL certificate chain" + } + "-R" = { + set_if = "$apache_status_unreachable$" + description = "CRITICAL if socket timed out or http code >= 500" + } + } + + vars.apache_status_address = "$check_address$" + vars.apache_status_ssl = false +} + +object CheckCommand "ssl_cert" { + import "ipv4-or-ipv6" + + command = [ PluginContribDir + "/check_ssl_cert" ] + + arguments = { + "-H" = { + value = "$ssl_cert_address$" + description = "The host's address" + required = true + } + "-p" = { + value = "$ssl_cert_port$" + description = "TCP port number (default: 443)" + } + "-f" = { + value = "$ssl_cert_file$" + description = "Local file path (works with -H localhost only)" + } + "-w" = { + value = "$ssl_cert_warn$" + description = "Minimum number of days a certificate has to be valid" + } + "-c" = { + value = "$ssl_cert_critical$" + description = "Minimum number of days a certificate has to be valid to issue a critical status" + } + "-n" = { + value = "$ssl_cert_cn$" + description = "Pattern to match the CN of the certificate" + } + "--altnames" = { + set_if = "$ssl_cert_altnames$" + description = "Matches the pattern specified in -n with alternate" + } + "-i" = { + value = "$ssl_cert_issuer$" + description = "Pattern to match the issuer of the certificate" + } + "-o" = { + value = "$ssl_cert_org$" + description = "Pattern to match the organization of the certificate" + } + "-e" = { + value = "$ssl_cert_email$" + description = "Pattern to match the email address contained in the certificate" + } + "-N" = { + set_if = "$ssl_cert_match_host$" + description = "Match CN with the host name" + } + "--serial" = { + value = "$ssl_cert_serial$" + description = "Pattern to match the serial number" + } + "-A" = { + set_if = "$ssl_cert_noauth$" + description = "Ignore authority warnings (expiration only)" + } + "-s" = { + set_if = "$ssl_cert_selfsigned$" + description = "Allow self-signed certificate" + } + "--sni" = { + value = "$ssl_cert_sni$" + description = "Sets the TLS SNI (Server Name Indication) extension" + } + "-t" = { + value = "$ssl_cert_timeout$" + description = "Seconds before connection times out (default: 15)" + } + "-P" = { + value = "$ssl_cert_protocol$" + description = "Use the specific protocol {http|smtp|pop3|imap|ftp|xmpp|irc|ldap} (default: http)" + } + "-C" = { + value = "$ssl_cert_clientssl_cert$" + description = "Use client certificate to authenticate" + } + "--clientpass" = { + value = "$ssl_cert_clientpass$" + description = "Set passphrase for client certificate" + } + "-L" = { + value = "$ssl_cert_ssllabs$" + description = "SSL Labs assestment" + } + "--ignore-ssl-labs-cache" = { + set_if = "$ssl_cert_ssllabs_nocache$" + description = "Forces a new check by SSL Labs" + } + "-r" = { + value = "$ssl_cert_rootssl_cert$" + description = "Root certificate or directory to be used for certificate validation" + } + "--ssl2" = { + set_if = {{ + return macro("$ssl_cert_ssl_version$") == "ssl2" + }} + } + "--ssl3" = { + set_if = {{ + return macro("$ssl_cert_ssl_version$") == "ssl3" + }} + } + "--tls1" = { + set_if = {{ + return macro("$ssl_cert_ssl_version$") == "tls1" + }} + } + "--tls1_1" = { + set_if = {{ + return macro("$ssl_cert_ssl_version$") == "tls1_1" + }} + } + "--tls1_2" = { + set_if = {{ + return macro("$ssl_cert_ssl_version$") == "tls1_2" + }} + } + "--no_ssl2" = { + set_if = {{ + var disable_versions = macro("$ssl_cert_disable_ssl_versions$") + if (typeof(disable_versions) == String) { + disable_versions = [ disable_versions ] + } + return "ssl2" in disable_versions + }} + } + "--no_ssl3" = { + set_if = {{ + var disable_versions = macro("$ssl_cert_disable_ssl_versions$") + if (typeof(disable_versions) == String) { + disable_versions = [ disable_versions ] + } + return "ssl3" in disable_versions + }} + } + "--no_tls1" = { + set_if = {{ + var disable_versions = macro("$ssl_cert_disable_ssl_versions$") + if (typeof(disable_versions) == String) { + disable_versions = [ disable_versions ] + } + return "tls1" in disable_versions + }} + } + "--no_tls1_1" = { + set_if = {{ + var disable_versions = macro("$ssl_cert_disable_ssl_versions$") + if (typeof(disable_versions) == String) { + disable_versions = [ disable_versions ] + } + return "tls1_1" in disable_versions + }} + } + "--no_tls1_2" = { + set_if = {{ + var disable_versions = macro("$ssl_cert_disable_ssl_versions$") + if (typeof(disable_versions) == String) { + disable_versions = [ disable_versions ] + } + return "tls1_2" in disable_versions + }} + } + "--ecdsa" = { + set_if = {{ + return macro("$ssl_cert_cipher$") == "ecdsa" + }} + description = "Cipher selection: force ECDSA authentication" + } + "--rsa" = { + set_if = {{ + return macro("$ssl_cert_cipher$") == "rsa" + }} + description = "Cipher selection: force RSA authentication" + } + "--ignore-sig-alg" = { + set_if = "$ssl_cert_ignore_signature$" + description = "Do not check if the certificate was signed with SHA1 od MD5" + } + "--ignore-exp" = { + set_if = "$ssl_cert_ignore_expiration$" + description = "Ignore expiration date" + } + "--ignore-ocsp" = { + set_if = "$ssl_cert_ignore_ocsp$" + description = "Do not check revocation with OCSP" + } + "--ignore-sct" = { + set_if = "$ssl_cert_ignore_sct$" + description = "Do not check for signed certificate timestamps" + } + + } + + vars.ssl_cert_address = "$check_address$" + vars.ssl_cert_port = 443 +} + +object CheckCommand "varnish" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_varnish" ] + + arguments = { + "-n" = { + value = "$varnish_name$" + description = "Specify the Varnish instance name" + } + "-p" = { + value = "$varnish_param$" + description = "Specify the parameter to check (see below). The default is 'ratio'." + } + "-c" = { + value = "$varnish_critical$" + description = "Set critical threshold: [@][lo:]hi" + } + "-w" = { + value = "$varnish_warning$" + description = "Set warning threshold: [@][lo:]hi" + } + } +} + +object CheckCommand "haproxy" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_haproxy" ] + + arguments = { + "--username" = { + value = "$haproxy_username$" + description = "Username for HTTP Auth" + } + "--password" = { + value = "$haproxy_password$" + description = "Password for HTTP Auth" + } + "--url" = { + value = "$haproxy_url$" + description = "URL of the HAProxy csv statistics page" + required = true + } + "--timeout" = { + value = "$haproxy_timeout$" + description = "Seconds before plugin times out (default: 10)" + } + "-w" = { + value = "$haproxy_warning$" + description = "Warning request time threshold (in seconds)" + } + "-c" = { + value = "$haproxy_critical$" + description = "Critical request time threshold (in seconds)" + } + } +} + +object CheckCommand "haproxy_status" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_haproxy_status" ] + + arguments = { + "--defaults" = { + value = "$haproxy_status_default$" + description = "Set/Override the defaults which will be applied to all checks (unless specifically set by --overrides)." + } + "--frontends" = { + set_if = "$haproxy_status_frontends$" + description = "Enable checks for the frontends in HAProxy (that they're marked as OPEN and the session limits haven't been reached)." + } + "--nofrontends" = { + set_if = "$haproxy_status_nofrontends$" + description = "Disable checks for the frontends in HAProxy (that they're marked as OPEN and the session limits haven't been reached)." + } + "--backends" = { + set_if = "$haproxy_status_backends$" + description = "Enable checks for the backends in HAProxy (that they have the required quorum of servers, and that the session limits haven't been reached)." + } + "--nobackends" = { + set_if = "$haproxy_status_nobackends$" + description = "Disable checks for the backends in HAProxy (that they have the required quorum of servers, and that the session limits haven't been reached)." + } + "--servers" = { + set_if = "$haproxy_status_servers$" + description = "Enable checks for the servers in HAProxy (that they haven't reached the limits for the sessions or for queues)." + } + "--noservers" = { + set_if = "$haproxy_status_noservers$" + description = "Disable checks for the servers in HAProxy (that they haven't reached the limits for the sessions or for queues)." + } + "--overrides" = { + value = "$haproxy_status_overrides$" + description = "Override the defaults for a particular frontend or backend, in the form {name}:{override}, where {override} is the same format as --defaults above." + } + "--socket" = { + value = "$haproxy_status_socket$" + description = "Path to the socket check_haproxy should connect to" + required = true + } + } +} + +object CheckCommand "phpfpm_status" { + import "plugin-check-command" + command = [ PluginContribDir + "/check_phpfpm_status" ] + + arguments = { + "-H" = { + value = "$phpfpm_status_hostname$" + description = "name or IP address of host to check" + required = true + } + "-p" = { + value = "$phpfpm_status_port$" + description = "Http port, or Fastcgi port when using --fastcgi" + } + "-u" = { + value = "$phpfpm_status_url$" + description = "Specific URL (only the path part of it in fact) to use, instead of the default /fpm-status" + } + "-s" = { + value = "$phpfpm_status_servername$" + description = "ServerName, (host header of HTTP request) use it if you specified an IP in -H to match the good Virtualhost in your target" + } + "-f" = { + set_if = "$phpfpm_status_fastcgi$" + description = "Connect directly to php-fpm via network or local socket, using fastcgi protocol instead of HTTP." + } + "-U" = { + value = "$phpfpm_status_user$" + description = "Username for basic auth" + } + "-P" = { + value = "$phpfpm_status_pass$" + description = "Password for basic auth" + } + "-r" = { + value = "$phpfpm_status_realm$" + description = "Realm for basic auth" + } + "-d" = { + set_if = "$phpfpm_status_debug$" + description = "Debug mode (show http request response)" + } + "-t" = { + value = "$phpfpm_status_timeout$" + description = "timeout in seconds (Default: 15)" + } + "-S" = { + set_if = "$phpfpm_status_ssl$" + description = "Wether we should use HTTPS instead of HTTP. Note that you can give some extra parameters to this settings. Default value is 'TLSv1' but you could use things like 'TLSv1_1' or 'TLSV1_2' (or even 'SSLv23:!SSLv2:!SSLv3' for old stuff)." + } + "-x" = { + set_if = "$phpfpm_status_verifyssl$" + description = "verify certificate and hostname from ssl cert, default is 0 (no security), set it to 1 to really make SSL peer name and certificater checks." + } + "-X" = { + value = "$phpfpm_status_cacert$" + description = "Full path to the cacert.pem certificate authority used to verify ssl certificates (use with --verifyssl). if not given the cacert from Mozilla::CA cpan plugin will be used." + } + "-w" = { + value = "$phpfpm_status_warn$" + description = "MIN_AVAILABLE_PROCESSES,PROC_MAX_REACHED,QUEUE_MAX_REACHED number of available workers, or max states reached that will cause a warning. -1 for no warning" + } + "-c" = { + value = "$phpfpm_status_critical$" + description = "MIN_AVAILABLE_PROCESSES,PROC_MAX_REACHED,QUEUE_MAX_REACHED number of available workers, or max states reached that will cause an error, -1 for no CRITICAL" + } + } + + vars.phpfpm_status_hostname = "$address$" +} diff --git a/itl/plugins-contrib.d/windows.conf b/itl/plugins-contrib.d/windows.conf new file mode 100644 index 0000000..a52eadc --- /dev/null +++ b/itl/plugins-contrib.d/windows.conf @@ -0,0 +1,28 @@ + +object CheckCommand "file-age-windows" { + command = [ PluginDir + "/check_file_age.cmd" ] + + arguments = { + "file" = { + skip_key = true + order = 0 + value = "$file_age_win_file$" + description = "File name and location" + required = true + } + "warning" = { + skip_key = true + order = 1 + value = "$file_age_win_warning$" + description = "Warning threshold of file age in seconds" + required = true + } + "critical" = { + skip_key = true + order = 2 + value = "$file_age_win_critical$" + description = "Critical threshold of file age in seconds" + required = true + } + } +} diff --git a/itl/windows-plugins b/itl/windows-plugins new file mode 100644 index 0000000..a6e00db --- /dev/null +++ b/itl/windows-plugins @@ -0,0 +1,3 @@ +/* Icinga 2 | (c) 2012 Icinga GmbH | GPLv2+ */ + +include "command-plugins-windows.conf" |