Vous êtes ici :  » Jacquelin Charbonnel » icinga

icinga plugins

Voici quelques petits plugins destinés à monitorer un host distant. Ils sont lancés depuis le serveur icinga et ne nécessitent qu’un accès ssh sur le client.

remote_grep

source

remote_grep recherche les occurences d’une chaîne dans la sortie d’une commande.


SYNOPSIS:
     remote_grep [-d][-v][-i] -n <n> --op <op> --cmd <command> --re <regex>
     remote_grep --help
     
     -d              debug (write each matching line)
     -v              verbose (write command)
     -i              ignore case
     -n <n>          number of occurences to compare with
     --op <op>       "==", "<", ">", "<=" or "=>"
     --cmd <cmd>     command to launch
     --re <regex>    regex to match

EXEMPLES:

     remote_grep --cmd "ssh root@myhost ps ax -o %a" --re ^crond --op == -n 1
       
        Return 0 if the ouput of the command matches /^crond/ 1 time exactly, return 2 otherwise.

Exemple pour icinga2 : tester que iptables tourne


object CheckCommand "iptables" {
 import "plugin-check-command"

 command = [ LocalPluginDir + "/remote_grep" ]

 arguments = {
       "--cmd" = LocalSSHcmd + "$ssh_login$@$ssh_address$ $iptables_command$"
       "--re" = "$grep_re$"
       "--op" = "$grep_op$"
       "-n" = "$grep_n$"
 }

 vars.ssh_address = "$address$"
 vars.ssh_login = "root"
 vars.iptables_command = "iptables -L -n"
 vars.grep_re = "^REJECT|^ACCEPT"
 vars.grep_op = ">="
 vars.grep_n = 1
}

Exemple pour icinga2 : tester que cups tourne en au moins 1 exemplaire.


object CheckCommand "proc" {
 import "plugin-check-command"

 command = [ LocalPluginDir + "/remote_grep" ]

 arguments = {
       "--cmd" = LocalSSHcmd + "$ssh_login$@$ssh_address$ $proc_command$"
       "--re" = "$proc_name$"
       "--op" = "$proc_op$"
       "-n" = "$proc_n$"
 }

 vars.ssh_address = "$address$"
 vars.ssh_login = "root"
 vars.proc_command = "ps ax -o %a"
}

apply Service "cupsd" {
       import "regular-service"
       check_command = "proc"

       vars.proc_name = "cupsd"
       vars.proc_op = ">="
       vars.proc_n = 1

       assign where host.vars.cupsd
}

remote-df

source

remote-df teste l’espace disponible sur chaque filesystem d’un host distant.


SYNOPSIS:
      remote-df --cmd command --avail #column --usedp #column --mp #column --crit bytes --critp percent --warn bytes --warnp percent

EXEMPLES:

     remote-df --cmd "df -P -t ext3" --avail 3 --usedp 4 --mp 5 --crit 10000 --critp 85 --warn 10000 --warnp 85

Exemple pour icinga2 :


object CheckCommand "fs" {
 import "plugin-check-command"

 command = [ LocalPluginDir + "/remote-df" ]

 arguments = {
       "--cmd" = LocalSSHcmd + "$ssh_login$@$ssh_address$ $df_command$"
       "--avail" = "$df_available_column$"
       "--usedp" = "$df_capacity_column$"
       "--mp" = "$df_mounted_on_column$"
       "--crit" = "$df_crit$"
       "--critp" = "$df_critp$"
       "--warn" = "$df_warn$"
       "--warnp" = "$df_warnp$"
 }

 vars.ssh_address = "$address$"
 vars.ssh_login = "root"
 vars.df_command = "df -P -t ext3 -t ext4"
 vars.df_available_column = 3
 vars.df_capacity_column = 4
 vars.df_mounted_on_column = 5
 vars.df_crit = 1000                          # critical if avalaible < 1000
 vars.df_critp = 99                           # critical if used > 99%
 vars.df_warn = 5000                          # warning if avalaible < 5000
 vars.df_warnp = 95                           # warning if used > 95%
}

check-load

source

check-load teste les congestions CPU et IO d’un host distant.


SYNOPSIS:
      check-load -H hostname [--debug] [-e ssh_cmd] --ccpu nb --wcpu nb --cio nb --wio nb

EXEMPLES:

     check-load -H myhost --ccpu 2 --wcpu 1 --cio 4 --wio 2

Exemple pour icinga2 :


object CheckCommand "rload" {
 import "plugin-check-command"

 command = [ LocalPluginDir + "/check-load" ]

 arguments = {
       "-H" = "$address$"
       "--ccpu" = "$load_critical_cpu$"
       "--wcpu" = "$load_warning_cpu$"
       "--cio" = "$load_critical_io$"
       "--wio" = "$load_warning_io$"
 }

 vars.load_critical_cpu = 2
 vars.load_warning_cpu = 1
 vars.load_critical_io = 4
 vars.load_warning_io = 2
}