WordPress mit Checkmk überwachen – check_wordpress

Anstehende Updates meiner WordPress Site möchte ich mit Checkmk überwachen. Core, Themes und Plugins.
Der Checkmk Server führt über SSH ein Skript auf dem Hosting Server aus.

Vorbereitung

Ein passwortloser SSH Login vom Checkmk Server auf den netcup Server wird benötigt.
Sollte der User noch keine SSH Keys haben, müssen die erst erstellt werden. User ist mein SITE User!

cmk@cmk:~$ ssh-keygen

Im Webhosting Control Panel unter Websites & Domains, oben rechts auf SSH Keys und mit Add Key den Inhalt des id_rsa.pub des Users einfügen.

Im Terminal den SSH Zugang testen.

cmk@cmk:~# ssh hostingxxxxxx@hostingxxxxxx.a2f24.netcup.net
Linux a2f24 4.19.0-21-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
--- SNIP ---
Last login: Tue Jul  2 19:30:58 2024 from 212.7.165.171
bash-5.0$

Checkmk Server

~/local/lib/nagios/plugins/check_wordpress Skript erstellen

#!/usr/bin/bash
ssh hosting1xxxxx@hosting1xxxxx.a2f24.netcup.net /scripts/wp-cli/check_wordpress.sh

netcup Server

WP-CLI installieren (kommt bei mir alles unter /scripts)

# Verzeichnis erstellen
mkdir /scripts/wp-cli

# wp-cli holen und ausführbar machen
wget -O /scripts/wp-cli/wp https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar
chmod +x /scripts/wp-cli/wp

wp-cli testen

cd /scripts/wp-cli
./wp --info
OS:     Linux 4.19.0-21-amd64 #1 SMP Debian 4.19.249-2 (2022-06-30) x86_64
Shell:  /bin/bash
---SNIP---
WP-CLI root dir:        phar://wp-cli.phar/vendor/wp-cli/wp-cli
WP-CLI vendor dir:      phar://wp-cli.phar/vendor
WP_CLI phar path:       /scripts/wp-cli
WP-CLI packages dir:
WP-CLI cache dir:       /.wp-cli/cache
WP-CLI global config:
WP-CLI project config:
WP-CLI version: 2.10.0

./wp cli update
Success: WP-CLI is at the latest version.

/scripts/wp-cli/check_wordpress.sh Skript erstellen (site und wp anpassen)

#!/usr/bin/bash
site="--path=/httpdocs/bachmann-lan.de"     # path to wordpress site
wp="/scripts/wp-cli/wp"                     # path to wp binary

upd_core=$(if $wp core update $site | grep -q Success; then echo 0; else echo 1; fi)
upd_theme=$($wp theme list $site | grep available 2> /dev/null | wc -l)
upd_plugin=$($wp plugin list $site | grep available 2> /dev/null | wc -l)

if [[ $upd_core = 0 && $upd_theme = 0 && $upd_plugin = 0 ]]; then
   echo WordPress $($wp $site core version) - Core, Plugins and Themes are up to date
   exit 0
 else
   echo "WordPress Updates Available - Core: $upd_core, Themes: $upd_theme, Plugins: $upd_plugin"
   exit 1
fi

Skript testen

# updates vorhanden
./check_wordpress.sh
WordPress Updates Available - Core: 0, Themes: 0, Plugins: 1

# keine updates vorhanden
./check_wordpress.sh
WordPress 6.5.5 - Core, Plugins and Themes are up to date

Checkmk Server

Den Service Check einem Host zuweisen.
Setup → Services → Other services → Integrate Nagios plugins, neue Regel erstellen

Check Intervall höher setzen, reicht mir alle 12 Stunden.
Setup → Services → Service monitoring rules → Normal check interval for service checks,  neue Regel erstellen

Der Host in Checkmk.

Vielleicht nicht perfekt aber es funktioniert. :)

Schreibe einen Kommentar