通信管理 XNF/AS 解説・運用編

[目次][用語][索引][前へ][次へ]

3.10.5 XNF/ASのプロセスを監視するシェルスクリプト

XNF/AS/BASEのプロセスを監視するシェルスクリプトを作成します。OSI拡張機能を使用する場合は,XNF/AS/BASEのプロセスに加えて,XNF/AS/OSI Extensionのプロセスも監視するシェルスクリプトを作成します。

各シェルスクリプトのサンプルは,XNF/ASのサンプルファイル用ディレクトリの下に格納されています。詳細については,「3.10.7 HAモニタで使用するサンプルファイル」を参照してください。

シェルスクリプトのサンプルを次に示します。

XNF/AS/BASEのプロセスを監視するシェルスクリプト(XNF_monitor.sh)
#!/bin/sh
#
# XNF/AS/BASE (XNF_monitor.sh)
# All Rights Reserved. Copyright (C) 2013, Hitachi, Ltd.
#
# The object program to monitor
# XNF/AS/BASE
XNFELDMON_PROGRAM=/xnfs/bin/XNFeldmon
XNFELDMON_COUNT=1
XNFRASDMON_PROGRAM=/xnfs/bin/XNFrasdmon
XNFRASDMON_COUNT=2
# Tuning parameter
SLEEP_TIME=5
MAX_RETRY_COUNT=3
 
# The definition of command
PS=/usr/bin/ps
GREP=/usr/bin/grep
WC=/usr/bin/wc
SLEEP=/usr/bin/sleep
BASENAME=/usr/bin/basename
PRINTF=/usr/bin/printf
EXPR=/usr/bin/expr
 
# process check
ProcessCheck()
{
    PROGRAM1=$1
    PROGRAM_COUNT=$2
    PROGRAM2=`$BASENAME $PROGRAM1`
    PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`
 
    RETRY_COUNT=0
    while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
    do
        COUNT=`$PS -ef | $GREP -e "${PROGRAM1}" -e "\[${PROGRAM2}" | $GREP -v grep | $WC -l`
        if [ $COUNT -eq $PROGRAM_COUNT ]
        then
            return 0
        else
            RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
        fi
 
        $SLEEP $SLEEP_TIME
    done
 
    exit
}
 
# Main loop
{
    while true
    do
        # XNF/AS/BASE
        ProcessCheck $XNFELDMON_PROGRAM $XNFELDMON_COUNT
        ProcessCheck $XNFRASDMON_PROGRAM $XNFRASDMON_COUNT
 
        $SLEEP $SLEEP_TIME
    done
}

チューニングパラメタの説明
下線で表記したシェル変数はチューニングパラメタです。次のとおり設定してください。
  • シェル変数SLEEP_TIME
    プロセス監視の実行間隔(単位:秒)を設定してください。
  • シェル変数MAX_RETRY_COUNT
    プロセス監視の最大試行回数を設定してください。
     

XNF/AS/BASEとXNF/AS/OSI Extensionのプロセスを監視するシェルスクリプト(XNF_OSIEX_monitor.sh)
#!/bin/sh
#
# XNF/AS/OSI Extension (XNF_OSIEX_monitor.sh)
# All Rights Reserved. Copyright (C) 2013, Hitachi, Ltd.
#
# The object program to monitor
# XNF/AS/BASE
XNFELDMON_PROGRAM=/xnfs/bin/XNFeldmon
XNFELDMON_COUNT=1
XNFRASDMON_PROGRAM=/xnfs/bin/XNFrasdmon
XNFRASDMON_COUNT=2
# XNF/AS/OSI Extension
XNFTPCLIDMON=/etc/xnftpclidmon
XNFTPGWDMON=/etc/xnftpgwdmon
XNFTPLSNDMON=/etc/xnftplsndmon
# Tuning parameter
SLEEP_TIME=5
MAX_RETRY_COUNT=3
 
# The definition of command
PS=/usr/bin/ps
GREP=/usr/bin/grep
WC=/usr/bin/wc
SLEEP=/usr/bin/sleep
BASENAME=/usr/bin/basename
PRINTF=/usr/bin/printf
EXPR=/usr/bin/expr
 
# process check
ProcessCheck()
{
    PROGRAM1=$1
    PROGRAM_COUNT=$2
    PROGRAM2=`$BASENAME $PROGRAM1`
    PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`
 
    RETRY_COUNT=0
    while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
    do
        COUNT=`$PS -ef | $GREP -e "${PROGRAM1}" -e "\[${PROGRAM2}" | $GREP -v grep | $WC -l`
        if [ $COUNT -eq $PROGRAM_COUNT ]
        then
            return 0
        else
            RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
        fi
 
        $SLEEP $SLEEP_TIME
    done
 
    exit
}
 
# process check2
ProcessCheck2()
{
    PROGRAM1=$1
    PROGRAM2=`$BASENAME $PROGRAM1`
    PROGRAM2=`$PRINTF "%.8s" "$PROGRAM2"`
 
    RETRY_COUNT=0
    while [ $RETRY_COUNT -lt $MAX_RETRY_COUNT ]
    do
        EXIST=`$PS -ef | $GREP -e "${PROGRAM1}" -e "\[${PROGRAM2}" | $GREP -v grep`
        if [ "$EXIST" != "" ]
        then
            return 0
        else
            RETRY_COUNT=`$EXPR $RETRY_COUNT + 1`
        fi
 
        $SLEEP $SLEEP_TIME
    done
 
    exit
}
 
# Main loop
{
    while true
    do
        # XNF/AS/BASE
        ProcessCheck $XNFELDMON_PROGRAM $XNFELDMON_COUNT
        ProcessCheck $XNFRASDMON_PROGRAM $XNFRASDMON_COUNT
 
        # XNF/AS/OSI Extension
        ProcessCheck2 $XNFTPCLIDMON
        ProcessCheck2 $XNFTPGWDMON
        ProcessCheck2 $XNFTPLSNDMON
 
        $SLEEP $SLEEP_TIME
    done
}

チューニングパラメタの説明
下線で表記したシェル変数はチューニングパラメタです。次のとおり設定してください。
  • シェル変数SLEEP_TIME
    プロセス監視の実行間隔(単位:秒)を設定してください。
  • シェル変数MAX_RETRY_COUNT
    プロセス監視の最大試行回数を設定してください。