diff options
Diffstat (limited to '')
21 files changed, 5520 insertions, 0 deletions
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 + } + } +} |