Changes of Revision 4
[-] | Changed | nagios-plugins-plesk.spec |
x 1
2 Name: nagios-plugins-automysqlbackup 3 -Version: 0.2 4 +Version: 0.3 5 Release: 1 6 Url: http://www.linux-administrator.com 7 Group: System/Monitoring 8
9 License: GPL 10 Source0: check_automysqlbackup 11 Source1: check_multimysqlbackup 12 +Source2: check_mysql_backup_files 13 Source10: check_automysqlbackup.cfg 14 BuildArch: noarch 15 BuildRoot: %{_tmppath}/%{name}-%{version}-root 16
17 %__install -d %{buildroot}%{_sysconfdir}/nagios/nrpe.d 18 %__install -m755 %{S:0} %{buildroot}%{_prefix}/lib/nagios/plugins/check_automysqlbackup 19 %__install -m755 %{S:1} %{buildroot}%{_prefix}/lib/nagios/plugins/check_multimysqlbackup 20 +%__install -m755 %{S:2} %{buildroot}%{_prefix}/lib/nagios/plugins/check_mysql_backup_files 21 %__install -m644 %{S:10} %{buildroot}%{_sysconfdir}/nagios/nrpe.d/check_automysqlbackup.cfg 22 23 %clean 24
25 %dir %{_prefix}/lib/nagios/plugins 26 %{_prefix}/lib/nagios/plugins/check_automysqlbackup 27 %{_prefix}/lib/nagios/plugins/check_multimysqlbackup 28 +%{_prefix}/lib/nagios/plugins/check_mysql_backup_files 29 30 %changelog 31 |
||
[+] | 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 |