Inhaltsverzeichnis

ArchLinux's Pacman lässt sich mit dem folgenden Skript einfach mithilfe von Nagios auf verfügbare Updates überprüfen.

Skript

Das folgende Skript muss unter /usr/local/nagios/libexec/check_pacman abgelegt werden:

#!/bin/sh

#################################
# check ArchLinux pacman        #
# ----------------------        #
# 2012 By Christian Stankowic   #
# http://christian-stankowic.de #
# info@christian-stankowic.de   #
#################################

#set warning level per param if detected
if [ -n "$1" ]; then
        warning="$1"
else
        warning=5
fi

#update ports and calculate updates
/usr/bin/pacman -Sy > /dev/null
updates=$(/usr/bin/pacman -Qu | wc -l)

#Return code depending on ready updates
if [ "$updates" = 0 ]; then
        echo "OK - $updates updates ready"
        exit 0
elif [ "$updates" -le $warning ]; then
        echo "WARNING - $updates updates ready"
        exit 1
else
        echo "CRITICAL - $updates updates ready"
        exit 2
fi

Danach wird das Skript ausführbar gemacht:

# chmod +x /usr/local/nagios/libexec/check_pacman

Parameter

Ohne Parameter überprüft das Skript ob Updates vorhanden sind und gibt bei 5 Updates oder weniger eine Warnung aus - existieren mehr Updates erhält Nagios den Status CRITICAL

Dieser Schwellenwert kann dem Skript angepasst übergeben werden:

# ./check_pacman 20

In diesem Beispiel verursachen bis zu 20 Updates noch eine Warnung - 21 Updates oder mehr übergeben einen kritischen Wert an Nagios.

Einbindung in NRPE

Damit das Skript auch innerhalb NRPE zur Verfügung steht, muss in der NRPE-Konfigurationsdatei (/usr/local/nagios/etc/nrpe.cfg) folgende Zeile hinzugefügt werden:

command[check_pacman]=/usr/local/nagios/libexec/check_pacman

In dieser Zeile kann natürlich noch ein alternative Schwellenwert angegeben werden.

Nach einem Neustart des NRPE-Daemons steht das Kommando zur Verfügung.

Einbindung im Nagios

Nagios-seitig wird das Skript wie jeder gewöhnlicher Check in Form eines Kommandos implementiert und einem Host zugewiesen:

define command{
        command_name    check_nrpe_pacman
        command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_pacman
}
#Updates
define service{
        use                             local-service
        host_name                       tvm-crux271
        service_description             Updates
        check_command                   check_nrpe_pacman
        }