summaryrefslogtreecommitdiffstats
path: root/ctdb/config/events.d/40.fs_use
blob: 603b4635fa9bc480b0ebc5c981ffc85f779fd07f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
#!/bin/sh
# ctdb event script for checking local file system utilization

[ -n "$CTDB_BASE" ] || \
    export CTDB_BASE=$(cd -P $(dirname "$0") ; dirname "$PWD")

. $CTDB_BASE/functions
loadconfig

case "$1" in 
    monitor)
        # check each specified fs to be checked
        # config format is <fs_mount>:<fs_threshold>
        for fs in $CTDB_CHECK_FS_USE
        do
            # parse fs_mount and fs_threshold
            fs_mount="${fs%:*}"
            fs_threshold="${fs#*:}"

            # check if given fs_mount is existing directory
            if [ ! -d "$fs_mount" ]; then
                echo "Directory $fs_mount does not exist"
                exit 1
            fi

            # check if given fs_threshold is number
            if ! (echo "$fs_threshold" | egrep -q '^[0-9]+$')  ; then
                echo "Threshold $fs_threshold is invalid number"
                exit 1
            fi

            # get utilization of given fs from df
            fs_usage=$(df -kP $fs_mount | sed -n -e 's@.*[[:space:]]\([[:digit:]]*\)%.*@\1@p')

            # check if fs_usage is number
            if [ -z "$fs_usage" ] ; then
                echo "Unable to get FS utilization for $fs_mount"
                exit 1
            fi

            # check if fs_usage is higher than or equal to fs_threshold
            if [ "$fs_usage" -ge "$fs_threshold" ] ; then
                echo "ERROR: Utilization of $fs_mount ($fs_usage%) is higher than threshold ($fs_threshold%)"
                exit 1
            fi
        done

	;;

    *)
	ctdb_standard_event_handler "$@"
	;;
esac

exit 0