[-]
[+]
|
Changed |
nagios-plugins-plesk.spec
|
|
[-]
[+]
|
Changed |
check_automysqlbackup.cfg
^
|
@@ -1,2 +1,3 @@
command[check_automysqlbackup]=/usr/lib/nagios/plugins/check_automysqlbackup
command[check_multimysqlbackup]=/usr/lib/nagios/plugins/check_multimysqlbackup
+command[check_mysql_backup_files]=/usr/lib/nagios/plugins/check_mysql_backup_files
|
[-]
[+]
|
Added |
check_mysql_backup_files
^
|
@@ -0,0 +1,123 @@
+#!/usr/bin/env bash
+# Author: Marek Rzepala <Marek.Rzepala@internetx.com>
+# Version: 3.01
+# Last changed: 27.10.2021
+# Upstream URL: https://gitlab.muc.internetx.com/p-s/nagios/check_mysql_backup_files
+
+IFS=$'\n'
+warn_daily=86400 # one day
+crit_daily=$(($warn_daily * 2))
+
+warn_weekly=$(($warn_daily * 36))
+crit_weekly=$(($warn_weekly + $crit_daily))
+
+warn_monthly=$(($warn_daily * 151))
+crit_monthly=$(($warn_monthly + $crit_daily))
+
+now=$(date +'%s')
+confdir=/etc/multimysqlbackup.d/
+backdirs+=($(awk -F ";" '{print $1}' <(grep -vh ^# $confdir/*.conf) | awk -F ":" '{print $1}'))
+stat=0
+stat_warn=0
+stat_crit=0
+
+
+#### data gathering
+for rota in daily weekly monthly
+do
+ for ((i=0;i<${#backdirs[@]};i++))
+ do
+ for backstat in $(find /backup/mysql/${backdirs[i]}/$rota/* -maxdepth 0 -type d -printf '%p %Cs\n')
+ do
+ diff=$(($now - $(awk '{print $2}' <(printf $backstat))))
+
+ case $rota in
+
+ daily)
+ case $((($diff >= $warn_daily && $diff <= $crit_daily) * 1 + ($diff >= $crit_daily ) * 2)) in
+
+ 1)
+ warns+=($(echo "${backdirs[i]}_daily $backstat $(($diff / 3600))")) && stat_warn=1
+ ;;
+ 2)
+ crits+=($(echo "${backdirs[i]}_daily $backstat $(($diff / 3600))")) && stat_crit=2
+ ;;
+ esac
+ ;;
+ weekly)
+ case $((($diff >= $warn_weekly && $diff <= $crit_weekly) * 1 + ($diff >= $crit_weekly ) * 2)) in
+
+ 1)
+ warns+=($(echo "${backdirs[i]}_weekly $backstat $(($diff / 3600))")) && stat_warn=1
+ ;;
+ 2)
+ crits+=($(echo "${backdirs[i]}_weekly $backstat $(($diff / 3600))")) && stat_crit=2
+ ;;
+ esac
+ ;;
+ monthly)
+ case $((($diff >= $warn_monthly && $diff <= $crit_monthly) * 1 + ($diff >= $crit_monthly ) * 2)) in
+
+ 1)
+ warns+=($(echo "${backdirs[i]}_monthly $backstat $(($diff / 3600))")) && stat_warn=1
+ ;;
+ 2)
+ crits+=($(echo "${backdirs[i]}_monthly $backstat $(($diff / 3600))")) && stat_crit=2
+ ;;
+ esac
+ ;;
+
+ esac
+ done
+ done
+done
+####
+
+
+#### functions for printing warnings und criticals gathered in prior for loop
+stat=$(($stat_warn+$stat_crit))
+
+print_warns () {
+for ((i=0;i<${#warns[@]};i++))
+do
+ echo -n "{$(awk '{print $1}' <(echo ${warns[i]})) backup "
+ echo -n $(awk -F "/" '{print $NF}' <(echo ${warns[i]})| awk '{print $1}')
+ echo -n " $(awk '{print $NF}' <(echo ${warns[i]})) hours old!}"
+done
+}
+
+print_crits () {
+for ((i=0;i<${#crits[@]};i++))
+do
+ echo -n "{$(awk '{print $1}' <(echo ${crits[i]})) backup "
+ echo -n $(awk -F "/" '{print $NF}' <(echo ${crits[i]})| awk '{print $1}')
+ echo -n " $(awk '{print $NF}' <(echo ${crits[i]})) hours old!}"
+done
+}
+
+
+#### print and exit depending on $stat set in data gathering loop
+case $stat in
+
+ 1)
+ echo -n "WARNING check backup "
+ print_warns
+ exit 1
+ ;;
+ 2)
+ echo -n "CRITICAL "
+ print_crits
+ exit 2
+ ;;
+ 3)
+ echo -n "CRITICAL "
+ print_warns
+ echo -n "WARNING "
+ print_crits
+ exit 2
+ ;;
+
+ 0) echo "we gucci"
+ exit 0
+ ;;
+esac
|