Projekt

Allgemein

Profil

Überwachen per NRPE mit Argumenten & Icinga2

Links: Voraussetzungen
  • icinga2 v2.2.1 (Argumente über Arrays möglich)
  • Firewall: IcingaServer --> zu Überwachender Server [5666/tcp]
Meine Umgebung
  • Icinga Server Ubuntu 14.01 (installiert laut Doc oben)
  • zu Überwachender Client Ubuntu 14.01

Installation NRPE Plugin auf Icinga Server

sudo apt-get --no-install-recommends install nagios-nrpe-plugin

Installation NRPE Service auf Ziel-Server (zu überwachenden Rechner)

sudo apt-get install nagios-nrpe-server

Konfiguration des Dienstes

edit: /etc/nagios/nrpe_local.cfg

server_port=5666
allowed_hosts=127.0.0.1,$$IP-IcingaServer$$
dont_blame_nrpe=1
debug=0
command[check_users]=/usr/lib/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/lib/nagios/plugins/check_load -r -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -p $ARG3$
command[check_procs]=/usr/lib/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s $ARG3$
command[check_apt]=/usr/lib/nagios/plugins/check_apt

Hinweis: Mit debug=1 werden etwas mehr logs nach /var/log/syslog geschrieben.

Dienst restarten

service nagios-nrpe-server restart

Icinga 2 Konfiguration

CheckCommands für NRPE Request erstellen

Um die Check später einfach verwenden zu können habe ich CheckCommands erstellt.
Hier zeige ich es nur am Beispiel für den Disk & User Check, da sonst die Datei zu lang wird.
Basierend auf dem template können auch die anderen Checks einfach implementiert werden.
Bei bedarf kann ich die ganze Konfig-Datei liefern. Bitte einfache eine kurze Mail an mich.

template CheckCommand "nrpe-common" {
    import "plugin-check-command" 

    command = [ PluginDir + "/check_nrpe" ]

    arguments = {
        "-H" = "$nrpe_address$" 
        "-p" = "$nrpe_port$" 
        "-c" = "$nrpe_command$" 
        "-a" = {
            value = "$nrpe_args$" 
            repeat_key = false
            order = 1
        }
    }

    vars.nrpe_address = "$address$" 
    vars.nrpe_port = 5666
}

object CheckCommand "nrpe-disk" {
        import "nrpe-common" 

     vars.nrpe_args = [ "$disk_wfree$%", "$disk_cfree$%", "$disk_partition$" ]

    vars.nrpe_command = "check_disk"    

        vars.disk_wfree = 20
        vars.disk_cfree = 10
        vars.disk_partition = "/" 
}

object CheckCommand "nrpe-users" {
        import "nrpe-common" 

    vars.nrpe_args = [ "$users_wgreater$", "$users_cgreater$" ]

    vars.nrpe_command = "check_users"    

        vars.users_wgreater = 20
        vars.users_cgreater = 50
}


Hinweis: Um die Arguments (vars.nrpe_args) als Array zu setzen muss icinga 2 v2.2.1 installiert sein.

Konfiguration der NRPE Services

Die Service sind nach den Muster der entsprechenden lokalen Services aufgebaut.
Auch hier wieder am Beispiel vom Disk & User Check.

apply Service for (disk-nrpe-linux => config in host.vars.nrpe-disks) {
  import "generic-service" 

  display_name = disk-nrpe-linux
  check_command = "nrpe-disk" 

  vars += config

  assign where host.vars.nrpe-disks
}

apply Service "users-nrpe-linux" {
  import "generic-service" 

  display_name = "users" 

  check_command = "nrpe-users" 

  assign where host.vars.os == "Linux" && host.vars.is_nrpe
}

Host Konfiguration

Die Host Konfiguration zeit den Parameter vars.is_nrpe = true was dafür sorgt das die NRPE Dienste "aufgeklebt" werden.
Der Disk Check ist von der Syntax zum lokalen Check ähnlich und verwendet die variable vars.nrpe-disks.

object Host "devel_server" {

    import "generic-host" 
    display_name = "Wie willst du heißen" 
    address = "11.11.11.11" 

    vars.os = "Linux" 
    vars.is_nrpe = true

    vars.http_vhosts["http_root"] = {
            http_uri = "/" 
      }

    vars.http_vhosts["webseite.sberg.net"] = {
            http_uri = "http://webseite.sberg.net" 
      }

    vars.notification["mail"] = {
            groups = [ "icingaadmins" ]
      }

    vars.nrpe-disks["disk /"] = {
            disk_partition = "/" 
      }
    vars.nrpe-disks["disk /boot"] = {
            disk_partition = "/boot" 
      }

}

reload icinga2

service icinga2 reload