Hitachi

Cosminexus V11 アプリケーションサーバ 機能解説 運用/監視/連携編


9.4.6 Managementアクション実行コマンドの設定

Managementアクションとして実行するコマンドは,コマンドファイル(バッチファイルまたはシェルスクリプトファイル)に記述できます。必要に応じて,コマンドファイルを作成してください。なお,バッチサーバの場合,CTMによるリクエストのスケジューリングは使用できないため,CTMに関する記述は該当しません。

ここでは,コマンドファイルで使用できる環境変数と,コマンドファイルのサンプルについて説明します。

〈この項の構成〉

(1) コマンドファイルで使用できる環境変数

コマンドファイルでは,次の表に示す環境変数を使用できます。

表9‒4 Managementアクション実行コマンドのコマンドファイルで使用できる環境変数

環境変数

説明

COSMI_MNG_MACT_LSNAME

Managementイベントを発行した論理サーバ名。

COSMI_MNG_MACT_HOST

Managementイベントを発行した論理サーバのホスト名。

COSMI_MNG_MACT_MSG_ID

Managementイベントで通知されたメッセージID。

COSMI_MNG_MACT_MSG_TEXT

Managementイベントで通知されたメッセージテキスト。

COSMI_MNG_MACT_CTM

Managementイベントを発行した論理サーバに設定された論理CTM名。

COSMI_MNG_MACT_WEBSYSTEM

Managementイベントを発行した論理サーバが所属するWebシステム名。

COSMI_MNG_MACT_UNIT

Managementイベントを発行した論理サーバが所属するサービスユニット名。

COSMI_MNG_MACT_TIER

Managementイベントを発行した論理サーバが所属する物理ティア種別。

COSMI_MNG_MACT_OPT<N>

Managementイベントで通知されたオプション文字列。オプション文字列としてメッセージの埋め字が使用されます。Nは,0以上の整数であり,オプション文字列の1番目を表す環境変数は「COSMI_MNG_MACT_OPT0」となります。

設定される文字列の詳細については,Managementイベント発行の対象となるメッセージのメッセージテキスト中の可変値に表示される情報を参照してください。

COSMI_MNG_MACT_MNGSVR_PORT

Management ServerのHTTPポート番号。

COSMI_MNG_MACT_RNAME

Managementイベントを発行した論理サーバの実サーバ名。

COSMI_MNG_MACT_NS_HOSTPORT

Managementイベントを発行した論理サーバが使用するネーミングサービスのホスト名とポート番号。例えば,ホスト名が「HostA」でポート番号が「900」の場合には,「HostA:900」となります。

(2) コマンドファイルのサンプル

コマンドファイルのサンプルが提供されていますので,サンプルを参考にしてコマンドファイルを作成してください。サンプルの格納場所を次に示します。

なお,サンプルを使用する場合は,mngsvrutilコマンドの引数(-m,-u,-pオプションなど)やログファイルの格納先を環境に合わせて適宜変更してください。

(a) Managementイベント発行サーバを再起動するサンプル

サンプルのファイル名
  • Windowsの場合:mActionSample_restartServer.bat

  • UNIXの場合:mActionSample_restartServer.sh

サンプルの動作

Managementイベントを発行した論理サーバを再起動します。

このサンプルは,リソース枯渇監視機能でManagementイベントを発行する場合に使用できます。

  1. リソース枯渇監視機能では,JavaVMでのメモリの使用状況を監視し,設定されているしきい値を超えて,FullGCが発生しそうな場合にメッセージを出力します。

  2. Managementイベント発行機能は,出力されたメッセージに対応したManagementイベントを発行したあとManagementアクションを実行し,Managementイベントを発行したJ2EEサーバを再起動します。

Managementイベントを発行したJ2EEサーバを停止することで,J2EEアプリケーションを閉塞できます。また,J2EEサーバがCTMによってリクエストを負荷分散させている場合は,J2EEサーバを停止することで,新規リクエストをほかのJ2EEサーバに分散できます。

Managementイベント発行サーバを再起動するサンプルを次に示します。

  • Windowsの場合

       (省略)
        :
    rem Management action sample for restart server.
     
    setlocal
     
    set LSNAME=%COSMI_MNG_MACT_LSNAME%
    set MSGID=%COSMI_MNG_MACT_MSG_ID%
     
    set CJCLDELLOG=%COSMINEXUS_HOME%\CC\client\bin\cjcldellog.bat
    set LOG_ROOT_DIR=%SystemDrive%\<MyLogDir>
    if not exist "%LOG_ROOT_DIR%" mkdir "%LOG_ROOT_DIR%"
    call "%CJCLDELLOG%" -t 30d -f "%LOG_ROOT_DIR%"
    set LOG_DIR=%LOG_ROOT_DIR%\%date:/=%
    if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
    set LOG=%LOG_DIR%\%time::=%_%LSNAME%_%MSGID%.txt
     
    echo %0 > "%LOG%"
     
    set MNGSVR=localhost:%COSMI_MNG_MACT_MNGSVR_PORT%
    set UID=<User-id>
    set PWD=<Password>
     
    echo mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s stop server >> "%LOG%" 2>&1
    mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s stop server >> "%LOG%" 2>&1
    set RET=%ERRORLEVEL%
    echo %RET% >> "%LOG%"
     
    if not %RET% == 0 goto END
    echo mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s start server >> "%LOG%" 2>&1
    mngsvrutil.exe -m %MNGSVR% -u %UID% -p %PWD% -t %LSNAME% -s start server >> "%LOG%" 2>&1
    set RET=%ERRORLEVEL%
    echo %RET% >> "%LOG%"
     
    :END
    exit %RET%
  • UNIXの場合

       (省略)
        :
    # Management action sample for restart server.
     
    LSNAME=${COSMI_MNG_MACT_LSNAME}
    MSGID=${COSMI_MNG_MACT_MSG_ID}
     
    LOG_ROOT_DIR=/tmp/<MyLogDir>
    if [ ! -d ${LOG_ROOT_DIR} ]; then
      /bin/mkdir ${LOG_ROOT_DIR}
    fi
    /usr/bin/find ${LOG_ROOT_DIR}/* -depth -mtime +30 | /usr/bin/xargs /bin/rm -fr
    LOG_DIR=${LOG_ROOT_DIR}/`/bin/date +%y%m%d`
    if [ ! -d ${LOG_DIR} ]; then
      /bin/mkdir ${LOG_DIR}
    fi
    LOG=${LOG_DIR}/`/bin/date +%H%M%S`_${LSNAME}_${MSGID}.txt
     
    echo $0 > "${LOG}"
     
    MNGSVR=localhost:${COSMI_MNG_MACT_MNGSVR_PORT}
    USERID=<User-id>
    PASSWD=<Password>
     
    echo ./mngsvrutil -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -t ${LSNAME} -s stop server >> "${LOG}" 2>&1
    ./mngsvrutil -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -t ${LSNAME} -s stop server >> "${LOG}" 2>&1
    RET=$?
    echo ${RET} >> "${LOG}"
     
    if [ $RET -eq 0 ]; then
      echo ./mngsvrutil -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -t ${LSNAME} -s start server >> "${LOG}" 2>&1
      ./mngsvrutil -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -t ${LSNAME} -s start server >> "${LOG}" 2>&1
      RET=$?
      echo ${RET} >> "${LOG}"
    fi
     
    exit ${RET}

(b) Managementイベント発行サーバの所属サービスユニットを閉塞するサンプル

Managementイベント発行サーバの所属サービスユニットを閉塞するサンプルが提供されていますので,サンプルを参考にして作成してください。サンプルのファイル名と動作を次に示します。

サンプルのファイル名
  • Windowsの場合:mActionSample_closeUnit.bat

  • UNIXの場合:mActionSample_closeUnit.sh

サンプルの動作

サービスユニットに所属するJ2EEサーバにリソース枯渇などの障害が発生した場合に,Managementイベントを発行したサーバを閉塞します。

Managementイベント発行サーバの所属サービスユニットを閉塞するサンプルを次に示します。

  • Windowsの場合

       (省略)
        :
    rem Management action sample for close unit.
     
    setlocal
     
    set LSNAME=%COSMI_MNG_MACT_LSNAME%
    set MSGID=%COSMI_MNG_MACT_MSG_ID%
    set WEBSYSTEM=%COSMI_MNG_MACT_WEBSYSTEM%
    set UNIT=%COSMI_MNG_MACT_UNIT%
     
    set CJCLDELLOG=%COSMINEXUS_HOME%\CC\client\bin\cjcldellog.bat
    set LOG_ROOT_DIR=%SystemDrive%\<MyLogDir>
    if not exist "%LOG_ROOT_DIR%" mkdir "%LOG_ROOT_DIR%"
    call "%CJCLDELLOG%" -t 30d -f "%LOG_ROOT_DIR%"
    set LOG_DIR=%LOG_ROOT_DIR%\%date:/=%
    if not exist "%LOG_DIR%" mkdir "%LOG_DIR%"
    set LOG=%LOG_DIR%\%time::=%_%LSNAME%_%MSGID%.txt
     
    echo %0 > "%LOG%"
     
    if "%WEBSYSTEM%" == "" goto :ERR
    if "%UNIT%" == "" goto :ERR
     
    set MNGSVR=localhost:%COSMI_MNG_MACT_MNGSVR_PORT%
    set UID=<User-id>
    set PWD=<Password>
     
    echo cmx_stop_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode ALL -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
    cmx_stop_target.exe -m %MNGSVR% -u %UID% -p %PWD% -mode ALL -s %WEBSYSTEM% -unit %UNIT% >> "%LOG%" 2>&1
    set RET=%ERRORLEVEL%
    echo %RET% >> "%LOG%"
    goto :END
     
    :ERR
    set RET=2
     
    :END
    exit %RET%
  • UNIXの場合

       (省略)
        :
    # Management action sample for close unit.
     
    LSNAME=${COSMI_MNG_MACT_LSNAME}
    MSGID=${COSMI_MNG_MACT_MSG_ID}
    WEBSYSTEM=${COSMI_MNG_MACT_WEBSYSTEM}
    UNIT=${COSMI_MNG_MACT_UNIT}
     
    LOG_ROOT_DIR=/tmp/<MyLogDir>
    if [ ! -d ${LOG_ROOT_DIR} ]; then
      /bin/mkdir ${LOG_ROOT_DIR}
    fi
    /usr/bin/find ${LOG_ROOT_DIR} -depth -mtime +30 -mindepth 1 -exec /bin/rm -fr {} \;
    LOG_DIR=${LOG_ROOT_DIR}/`/bin/date +%y%m%d`
    if [ ! -d ${LOG_DIR} ]; then
      /bin/mkdir ${LOG_DIR}
    fi
    LOG=${LOG_DIR}/`/bin/date +%H%M%S`_${LSNAME}_${MSGID}.txt
     
    echo $0 > "${LOG}"
     
    if [ "${WEBSYSTEM}" = "" -o "${UNIT}" = "" ]; then
      exit 2
    fi
     
    MNGSVR=localhost:${COSMI_MNG_MACT_MNGSVR_PORT}
    USERID=<User-id>
    PASSWD=<Password>
     
    echo ./cmx_stop_target -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -mode ALL -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
    ./cmx_stop_target -m ${MNGSVR} -u ${USERID} -p ${PASSWD} -mode ALL -s ${WEBSYSTEM} -unit ${UNIT} >> "${LOG}" 2>&1
    RET=$?
    echo ${RET} >> "${LOG}"
     
    exit ${RET}

(3) Managementアクション実行コマンドの動作

Managementアクション実行コマンドの動作を次に示します。