summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xctdb/Makefile.in1
-rw-r--r--ctdb/config/events.d/40.fs_use53
-rw-r--r--ctdb/packaging/RPM/ctdb.spec.in1
3 files changed, 55 insertions, 0 deletions
diff --git a/ctdb/Makefile.in b/ctdb/Makefile.in
index d53d3db5e0..0cce22e0d7 100755
--- a/ctdb/Makefile.in
+++ b/ctdb/Makefile.in
@@ -258,6 +258,7 @@ install: all
${INSTALLCMD} -m 644 config/events.d/20.multipathd $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 644 config/events.d/31.clamd $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/40.vsftpd $(DESTDIR)$(etcdir)/ctdb/events.d
+ ${INSTALLCMD} -m 644 config/events.d/40.fs_use $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/41.httpd $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/50.samba $(DESTDIR)$(etcdir)/ctdb/events.d
${INSTALLCMD} -m 755 config/events.d/60.nfs $(DESTDIR)$(etcdir)/ctdb/events.d
diff --git a/ctdb/config/events.d/40.fs_use b/ctdb/config/events.d/40.fs_use
new file mode 100644
index 0000000000..14d33fae74
--- /dev/null
+++ b/ctdb/config/events.d/40.fs_use
@@ -0,0 +1,53 @@
+#!/bin/sh
+# ctdb event script for checking local file system utilization
+
+. $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_config=(`echo $fs | tr ':' '\n'`)
+ fs_mount=${fs_config[0])}
+ fs_threshold=${fs_config[1])}
+
+ # check if given fs_mount is existing directory
+ if [ ! -d "$fs_mount" ]; then
+ echo "$0: Directory $fs_mount does not exist"
+ exit 1
+ fi
+
+ # check if given fs_threshold is number
+ if ! [[ "$fs_threshold" =~ ^[0-9]+$ ]] ; then
+ echo "$0: Threshold $fs_threshold is invalid number"
+ exit 1
+ fi
+
+ # get utilization of given fs from df
+ fs_usage=`df -k $fs_mount | grep % | awk {'print $5'} | sed 's/%//g' | tail -n 1`
+
+ # check if fs_usage is number
+ if ! [[ "$fs_usage" =~ ^[0-9]+$ ]] ; then
+ echo "$0: FS utilization $fs_usage is invalid number"
+ 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
diff --git a/ctdb/packaging/RPM/ctdb.spec.in b/ctdb/packaging/RPM/ctdb.spec.in
index c006b51836..f618e76013 100644
--- a/ctdb/packaging/RPM/ctdb.spec.in
+++ b/ctdb/packaging/RPM/ctdb.spec.in
@@ -102,6 +102,7 @@ rm -rf $RPM_BUILD_ROOT
%{_sysconfdir}/ctdb/events.d/11.routing
%{_sysconfdir}/ctdb/events.d/20.multipathd
%{_sysconfdir}/ctdb/events.d/31.clamd
+%{_sysconfdir}/ctdb/events.d/40.fs_use
%{_sysconfdir}/ctdb/events.d/40.vsftpd
%{_sysconfdir}/ctdb/events.d/41.httpd
%{_sysconfdir}/ctdb/events.d/50.samba