/* 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
}
