/****************************************************************************** * Icinga 2 * * Copyright (C) 2012-2018 Icinga Development Team (https://icinga.com/) * * * * This program is free software; you can redistribute it and/or * * modify it under the terms of the GNU General Public License * * as published by the Free Software Foundation; either version 2 * * of the License, or (at your option) any later version. * * * * This program is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU General Public License for more details. * * * * You should have received a copy of the GNU General Public License * * along with this program; if not, write to the Free Software Foundation * * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA. * ******************************************************************************/ 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" } } 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_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 = [ PluginDir + "/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)" } } }