Design goals:
- Enable Icinga to execute agentless checks for linux machines
+-------------------------------------+
| Icinga Server |
| |
| |
| +-------------------------------+ |
| | Icinga | |
| | | |
| | 1. Start check | |
| | + | |
| | | | |
| | v | |
| | +------+---------------+ | |
| | | Nagios checks | | |
| | | | | |
| | +----------------------+ | |
| +-------------------------------+ |
| ^ | |
| 6. Return | | 2. Call ansible to |
| module | | execute module |
| results | | remotely |
| | | |
| +---------+--v----------------+ |
| | Linux Adapter | | +--------------------------+
| | | | | Remote Linux Server |
| | (Ansible API client) | | | |
| | | | 3. Send module | |
| | | | | 4. Execute module |
| +---------+--+----------------+ | +--------------+ | |
| | ^ | |Ansible module| | +--------------+ |
| | | | +--------------+ | |Ansible module| |
| +---------v--+----------------+ | | +--------------+ |
| | Ansible | +------------------------> | |
| | | <------------------------+ | |
| +-----------------------------+ | 5. Send module results +--------------------------+
+-------------------------------------+
object CheckCommand "service-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_service_ansible" ]
arguments = {
"-H" = "$ansible_host$"
"-S" = "$service_name$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "load-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_load_ansible" ]
arguments = {
"-H" = "$ansible_host$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "cpu-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_cpu_ansible" ]
arguments = {
"-H" = "$ansible_host$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "disk-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_fs_ansible" ]
arguments = {
"-H" = "$ansible_host$"
"-F" = "$fs_regex$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "memory-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_memory_ansible" ]
arguments = {
"-H" = "$ansible_host$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "swap-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_swap_ansible" ]
arguments = {
"-H" = "$ansible_host$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "updates-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_update_ansible" ]
arguments = {
"-H" = "$ansible_host$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "sg-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_sg_ansible" ]
arguments = {
"-H" = "$ansible_host$"
"-C" = "$cluster$"
"-N" = { value = "$node$" }
"-P" = { value = "$package_regex$"}
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "process-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_process_ansible" ]
arguments = {
"-H" = "$ansible_host$",
"-p" = "$process_name_regex$",
"-r" = "$cmdline_regex$",
"-m" = "$mode$",
"-C" = "$process_count$"
}
timeout = 120
vars.ansible_host = "$address$"
}
object CheckCommand "directory-linux" {
import "plugin-check-command"
command = [ PluginDir + "/check_directory_ansible"]
arguments = {
"-H" = "$ansible_host$",
"-R" = "$directory_regex$",
"-p" = "$path$"
"-M" = "$mode$",
"-c" = "$file_count$"
}
timeout = 120
vars.ansible_host = "$address$"
}