CentOS 7 mit Hilfe von NRPE überwachen

Mär 30 2018

In meinem aktuellen Monitoringsetup habe ich festgestellt, dass die ausgiebige Verwendung von SNMP zu einigen False/Positives führte. Das nervt gewaltig und ist zudem auch noch ziemlich unbequem.

Daher habe ich mich an eine Ansible-Rolle gemacht, welche meine Hosts vorbereitet zukünftig NRPE zu nutzen. Um es besser nachvollziehen zu können, welche Schritte gegangen werden müssen habe ich das ganze hier einmal niedergeschrieben.

Auf dem zu Monitorenden Hosts:

yum Install nrpe.x86_64 nrpe-selinux.x86_64 nagios-plugins-*

 

Anschließend muss die Datei /etc/nagios/nrpe.conf angepasst werden. Standardmässig ist nur das ausführen von Commands ohne Parameter erlaubt. Daher will ich das ändern um mehr Flexibilität bei der Anpassung der Rahmenparameter zu haben. Damit mir das nicht auf die Füße fällt muss der Wert von dont_blame geändert werden. Damit mir aber niemand dazwischen funkt, schränke ich die Hosts ein, die Checkscommands aufrufen dürfen - dazu dient allowed_hosts. Zum Schluss werden noch lokale Commands definiert. Diese sind notwendig und müssen für alle gewünschten Checks eingerichtet werden. Andernfalls kann NRPE nicht tun wofür es da ist (Nagios Remote Plugin Execution). Die Betonung liegt hier ganz klar auf Remote und Execution.

dont_blame_nrpe=1

allowed_hosts=127.0.0.1,192.168.X.X

command[check_users]=/usr/lib64/nagios/plugins/check_users -w $ARG1$ -c $ARG2$
command[check_load]=/usr/lib64/nagios/plugins/check_load -w $ARG1$ -c $ARG2$
command[check_disk]=/usr/lib64/nagios/plugins/check_disk -w $ARG1$ -c $ARG2$ -u GB -E -p $ARG3$
command[check_mailq]=/usr/lib64/nagios/plugins/check_mailq -w $ARG1$ -c $ARG2$
command[check_ntp_peer]=/usr/lib64/nagios/plugins/check_ntp_time -w $ARG1$ -c $ARG2$ -H $ARG3$
command[check_procs]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$
command[check_procs_zombie]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -s Z
command[check_procs_named]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C named
command[check_procs_java]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C java
command[check_procs_apache]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C apache
command[check_procs_httpd]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C httpd
command[check_procs_platform]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C platform
command[check_procs_dhcpd]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C dhcpd
command[check_procs_qemu]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C qemu
command[check_procs_mysqld]=/usr/lib64/nagios/plugins/check_procs -w $ARG1$ -c $ARG2$ -C mysqld
command[check_sensors]=/usr/lib64/nagios/plugins/check_sensors
command[check_smtp]=/usr/lib64/nagios/plugins/check_smtp -H $ARG1$
command[check_swap]=/usr/lib64/nagios/plugins/check_swap -w $ARG1$ -c $ARG2$
command[check_security_updates]=/usr/lib64/nagios/plugins/check_updates --security-only -t 30
 

Auf dem Monitoring-Server:

Nun sind wir fast fertig. Für müssen nun nur noch unserem icinga Monitoring-Server mitteilen, dass es doch bitte ein neues Checkcommand kennt und zum anderen natürlich noch einen zu monitorenden Service daraus machen. Anschließend wird der angegebene Dienst per NRPE auf dem neu installierten Host überwacht.

define command {
                command_name    check_nrpe
                command_line    /usr/lib/nagios/plugins/check_nrpe -H $ARG1$ -c $ARG2$ -a $ARG3$
        }

$ARG1$ wird zum Hostnamen

$ARG2$ wird zum Command das auf dem Server definiert wurde (sehe oben)

$ARG3$ wird zu den Schwellwerten für Warning und Critical

define service {
                hostgroup_name                nrpe
                service_description             Check users on system
                check_command                check_nrpe!$HOSTNAME!check_users!2 5!
                use                             generic-service
        }