scripts: Add alternative network family monitoring for NFS
authorMartin Schwenke <martin@meltin.net>
Tue, 28 Apr 2015 03:51:00 +0000 (13:51 +1000)
committerAmitay Isaacs <amitay@gmail.com>
Wed, 6 May 2015 02:33:22 +0000 (12:33 +1000)
For example, adding a file called nfs-rpc-checks.d/20.nfsd@udp.check
will cause NFS to be checked on UDP as well, using a separate counter.

Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
Autobuild-User(master): Amitay Isaacs <amitay@samba.org>
Autobuild-Date(master): Thu Apr 30 09:24:12 CEST 2015 on sn-devel-104

(Imported from commit e359d826a42656bb02ca2ab85f0fa886a046cb58)

config/functions

index 33a3a3a861aeafcfdf17a90ac8a6204f00a6f4f1..80639c4a18e94154e61d77f3acbf51bac09a401f 100755 (executable)
@@ -271,7 +271,16 @@ nfs_check_rpc_services ()
        _t="${_f%.check}"
        _prog_name="${_t##*/[0-9][0-9].}"
 
-       if _nfs_check_rpc_common "$_prog_name" ; then
+       # If $_prog_name contains '@' then the bit after it is the
+       # address family.
+       _family="${_prog_name#*@}"
+       if [ "$_family" = "$_prog_name" ] ; then
+           _family=""
+       else
+           _prog_name="${_prog_name%@*}"
+       fi
+
+       if _nfs_check_rpc_common "$_prog_name" "$_family" ; then
            # This RPC service is up, check next service...
            continue
        fi
@@ -295,6 +304,7 @@ nfs_check_rpc_services ()
 _nfs_check_rpc_common ()
 {
     _prog_name="$1"
+    _family="$2"
 
     # Some platforms don't have separate programs for all services.
     case "$_prog_name" in
@@ -328,9 +338,9 @@ _nfs_check_rpc_common ()
            exit 1
     esac
 
-    _service_name="nfs_${_prog_name}"
+    _service_name="nfs_${_prog_name}${_family:+_}${_family}"
 
-    if ctdb_check_rpc "$_rpc_prog" $_version >/dev/null ; then
+    if ctdb_check_rpc "$_rpc_prog" "$_version" "$_family" >/dev/null ; then
        ctdb_counter_init "$_service_name"
        return 0
     fi
@@ -432,10 +442,11 @@ ctdb_check_rpc ()
 {
     progname="$1"
     version="$2"
+    _family="${3:-tcp}"
 
     _localhost="${CTDB_RPCINFO_LOCALHOST:-127.0.0.1}"
 
-    if ! ctdb_check_rpc_out=$(rpcinfo -T tcp $_localhost $progname $version 2>&1) ; then
+    if ! ctdb_check_rpc_out=$(rpcinfo -T $_family $_localhost $progname $version 2>&1) ; then
        ctdb_check_rpc_out="ERROR: $progname failed RPC check:
 $ctdb_check_rpc_out"
        echo "$ctdb_check_rpc_out"