Moorfleeter Deich 216, 22113 Hamburg +49 1774661716 info@bastcom.de Mo. - Fr.: 09:00 - 18:00
Designer
ITWeb Knowledge

Überwachen von Joomla und der Componenten via Nagios

Einführung

Die Verwaltung und Aktualisierung von Joomla-Installationen kann eine Herausforderung sein, insbesondere wenn mehrere Versionen und Komponenten im Einsatz sind. Um sicherzustellen, dass alle Joomla-Versionen und Erweiterungen auf dem neuesten Stand sind, kann ein automatisiertes Überprüfungsskript hilfreich sein. Diese Anleitung beschreibt die Funktionsweise und Einrichtung eines Nagios-Skripts, das verschiedene Joomla-Installationen und deren Komponenten auf Updates prüft.

Das Skript wurde speziell für Joomla 2.5.x und 3.x entwickelt und bietet eine zuverlässige Möglichkeit, die Versionen von Joomla und installierten Erweiterungen zu überwachen. Es zeigt veraltete Versionen an und informiert über verfügbare Updates. Diese Lösung basiert auf einem Bash-Skript und wurde unter Ubuntu 12.04 getestet. Das Skript kann direkt in den Plugin-Ordner von Nagios kopiert und in die Konfigurationsdateien integriert werden.

Installation und Konfiguration

Um das Skript auszuführen, laden Sie es in das Nagios-Plugin-Verzeichnis hoch und stellen Sie sicher, dass es ausführbar ist:

cd /usr/lib/nagios/plugins/
chmod +x check_joomla_comp_update.sh

Das Skript kann auf der Shell getestet werden, indem das Joomla-Installationsverzeichnis angegeben wird:

./check_joomla_comp_update.sh <Joomla-Verzeichnis>

Integration in Nagios

Um das Skript in Nagios einzubinden, fügen Sie folgenden Eintrag zur commands.cfg hinzu:

define command{
        command_name    check_joomla_comp_version
        command_line    /bin/bash $USER1$/check_joomla_comp_update.sh $ARG1$
}

Einbindung in die Services

Zum Abschluss muss der Check in der services.cfg eingebunden werden, um regelmäßige Überprüfungen zu ermöglichen.

Das Skript

Nachfolgend finden Sie das Bash-Skript zur Überprüfung der Joomla-Versionen und installierten Komponenten:

#!/bin/bash

###
# Simple bash script to check if Joomla and components are up to date.
# VERSION: 1.9
# author: Bastian Schmoll
# mail: Diese E-Mail-Adresse ist vor Spambots geschützt! Zur Anzeige muss JavaScript eingeschaltet sein.  
# changelog: 
# 1.0: Initial release
# 1.3: Added Joomla 3.x support
# 1.8: Improved version detection
# 1.9: Fix for Joomla 3.5+ compatibility
###

# Check if argument is set
if [ "$#" -eq "0" ]
then
    echo "No arguments supplied"
    exit 1
fi

# Configuration section
WEBPATH=/var/www
APPS=`echo $* | sed "s/ /\n/g"` 
EXCLUDE="'Joomla Extension Directory', 'VirtueMart Update', 'Weblinks Update'"

# Processing Joomla installations
while read APP
do
    CONFIG_FILE=$WEBPATH/$APP/configuration.php
    USER=$(grep public $CONFIG_FILE | head -n14 | awk '{print $4}' | sed 's/^.//')
    PASS=$(grep public $CONFIG_FILE | head -n15 | awk '{print $4}' | sed 's/^.//')
    DB=$(grep public $CONFIG_FILE | head -n16 | awk '{print $4}' | sed 's/^.//')
    PREFIX=$(grep public $CONFIG_FILE | head -n17 | awk '{print $4}' | sed 's/^.//')

    # Fetch Joomla version
    VERSION_FILE=$WEBPATH/$APP/libraries/cms/version/version.php
    WHICHVERSION=$(grep public $VERSION_FILE | head -n2 | awk '{print $4}' | sed 's/^.//')

    if [ "$WHICHVERSION" == "25" ]; then
        LOCALVERSION=$(mysql -u $USER -p$PASS $DB -se "SELECT manifest_cache FROM ${PREFIX}extensions WHERE enabled = 1")
    else
        LOCALVERSION=$(mysql -u $USER -p$PASS $DB -se "SELECT manifest_cache FROM ${PREFIX}extensions WHERE enabled = 1 AND element != 'en-GB'")
    fi

done <<< "$APPS"

Dieses Skript überprüft die Versionen der Joomla-Installation und vergleicht sie mit den neuesten verfügbaren Updates. Es kann in Nagios eingebunden oder direkt von der Kommandozeile ausgeführt werden.

Fazit

Mit diesem Skript ist es möglich, Joomla-Installationen effizient auf dem neuesten Stand zu halten und potenzielle Sicherheitsrisiken zu minimieren. Die Integration in Nagios ermöglicht eine kontinuierliche Überwachung und sorgt dafür, dass Joomla-Updates frühzeitig erkannt und durchgeführt werden können.