Logoj0ke.net Open Build Service > Projects > internetx > nagios-plugins-automysqlbackup > check_mysql_backup_files
Sign Up | Log In

File check_mysql_backup_files of Package nagios-plugins-automysqlbackup

 
1
#!/usr/bin/env bash
2
# Author: Marek Rzepala <Marek.Rzepala@internetx.com> 
3
# Version: 3.01
4
# Last changed: 27.10.2021
5
# Upstream URL: https://gitlab.muc.internetx.com/p-s/nagios/check_mysql_backup_files
6
7
IFS=$'\n'
8
warn_daily=86400 # one day
9
crit_daily=$(($warn_daily * 2))
10
11
warn_weekly=$(($warn_daily * 36))
12
crit_weekly=$(($warn_weekly + $crit_daily))
13
14
warn_monthly=$(($warn_daily * 151))
15
crit_monthly=$(($warn_monthly + $crit_daily))
16
17
now=$(date +'%s')
18
confdir=/etc/multimysqlbackup.d/
19
backdirs+=($(awk -F ";" '{print $1}' <(grep -vh ^# $confdir/*.conf) | awk -F ":" '{print $1}'))
20
stat=0
21
stat_warn=0
22
stat_crit=0
23
24
25
#### data gathering
26
for rota in daily weekly monthly
27
do
28
    for ((i=0;i<${#backdirs[@]};i++))
29
    do
30
        for backstat in $(find /backup/mysql/${backdirs[i]}/$rota/* -maxdepth 0 -type d -printf '%p %Cs\n')
31
        do
32
            diff=$(($now - $(awk '{print $2}' <(printf $backstat))))
33
            
34
            case $rota in 
35
            
36
                daily)
37
                    case $((($diff >= $warn_daily && $diff <= $crit_daily) * 1 + ($diff >= $crit_daily ) * 2)) in   
38
39
                        1) 
40
                            warns+=($(echo "${backdirs[i]}_daily $backstat $(($diff / 3600))")) && stat_warn=1
41
                            ;; 
42
                        2) 
43
                            crits+=($(echo "${backdirs[i]}_daily $backstat $(($diff / 3600))")) && stat_crit=2
44
                            ;; 
45
                    esac
46
                    ;;
47
                weekly)
48
                    case $((($diff >= $warn_weekly && $diff <= $crit_weekly) * 1 + ($diff >= $crit_weekly ) * 2)) in   
49
50
                        1) 
51
                            warns+=($(echo "${backdirs[i]}_weekly $backstat $(($diff / 3600))")) && stat_warn=1
52
                            ;; 
53
                        2) 
54
                            crits+=($(echo "${backdirs[i]}_weekly $backstat $(($diff / 3600))")) && stat_crit=2
55
                            ;; 
56
                    esac
57
                    ;;
58
                monthly)
59
                    case $((($diff >= $warn_monthly && $diff <= $crit_monthly) * 1 + ($diff >= $crit_monthly ) * 2)) in   
60
61
                        1) 
62
                            warns+=($(echo "${backdirs[i]}_monthly $backstat $(($diff / 3600))")) && stat_warn=1
63
                            ;; 
64
                        2) 
65
                            crits+=($(echo "${backdirs[i]}_monthly $backstat $(($diff / 3600))")) && stat_crit=2
66
                            ;; 
67
                    esac
68
                    ;;
69
70
            esac
71
        done
72
    done
73
done
74
####
75
76
77
#### functions for printing warnings und criticals gathered in prior for loop
78
stat=$(($stat_warn+$stat_crit))
79
80
print_warns () {
81
for ((i=0;i<${#warns[@]};i++))
82
do 
83
    echo -n "{$(awk '{print $1}' <(echo ${warns[i]})) backup "
84
    echo -n $(awk -F "/" '{print $NF}' <(echo ${warns[i]})| awk '{print $1}')
85
    echo -n " $(awk '{print $NF}' <(echo ${warns[i]})) hours old!}"
86
done
87
}
88
89
print_crits () {
90
for ((i=0;i<${#crits[@]};i++))
91
do
92
    echo -n "{$(awk '{print $1}' <(echo ${crits[i]})) backup "
93
    echo -n $(awk -F "/" '{print $NF}' <(echo ${crits[i]})| awk '{print $1}')
94
    echo -n " $(awk '{print $NF}' <(echo ${crits[i]})) hours old!}"
95
done
96
}
97
98
99
#### print and exit depending on $stat set in data gathering loop
100
case $stat in
101
102
    1)
103
        echo -n "WARNING check backup "
104
        print_warns
105
        exit 1
106
        ;;
107
    2)  
108
        echo -n "CRITICAL "
109
        print_crits
110
        exit 2
111
        ;;
112
    3)
113
        echo -n "CRITICAL "
114
        print_warns
115
        echo -n "WARNING "
116
        print_crits
117
        exit 2
118
        ;;
119
120
    0)  echo "we gucci"
121
        exit 0
122
        ;;
123
esac
124