9.4.6 Managementアクション実行コマンドの設定
Managementアクションとして実行するコマンドは,コマンドファイル(バッチファイルまたはシェルスクリプトファイル)に記述できます。必要に応じて,コマンドファイルを作成してください。なお,バッチサーバの場合,CTMによるリクエストのスケジューリングは使用できないため,CTMに関する記述は該当しません。
ここでは,コマンドファイルで使用できる環境変数と,コマンドファイルのサンプルについて説明します。
(1) コマンドファイルで使用できる環境変数
コマンドファイルでは,次の表に示す環境変数を使用できます。
(2) コマンドファイルのサンプル
コマンドファイルのサンプルが提供されていますので,サンプルを参考にしてコマンドファイルを作成してください。サンプルの格納場所を次に示します。
-
Windowsの場合
<Application Serverのインストールディレクトリ>\manager\examples\maction
-
UNIXの場合
/opt/Cosminexus/manager/examples/maction
なお,サンプルを使用する場合は,mngsvrutilコマンドの引数(-m,-u,-pオプションなど)やログファイルの格納先を環境に合わせて適宜変更してください。
(a) Managementイベント発行サーバを再起動するサンプル
- サンプルのファイル名
-
-
Windowsの場合:mActionSample_restartServer.bat
-
UNIXの場合:mActionSample_restartServer.sh
-
- サンプルの動作
-
Managementイベントを発行した論理サーバを再起動します。
このサンプルは,リソース枯渇監視機能でManagementイベントを発行する場合に使用できます。
-
リソース枯渇監視機能では,JavaVMでのメモリの使用状況を監視し,設定されているしきい値を超えて,FullGCが発生しそうな場合にメッセージを出力します。
-
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アクション実行コマンドの動作を次に示します。
-
Managementアクション実行コマンドから出力される標準出力,標準エラー出力は,Management Serverでは取得しません。このため,コマンドの標準出力,標準エラー出力を取得する場合は,コマンドの中でファイルに出力する必要があります。
-
Managementアクション実行コマンドはManagement Serverによって実行されます。実行ユーザは,Management Serverの実行ユーザになります。また,環境変数はManagement Serverに設定された環境変数を引き継ぎます。
-
Managementアクション実行コマンドのワーキングディレクトリは,<Application Serverのインストールディレクトリ>\manager\bin(Windowsの場合),または/opt/Cosminexus/manager/bin(UNIXの場合)です。