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. :)