前回 vSphere HA + Guest SDK でのアプリケーション監視についてポストしました。

 

今回は、ためしに Guest SDK に含まれるコマンド「vmware-appmonitor」で、

Apache HTTP Server (httpd) をアプリケーション監視してみます。

ちなみに試したのは、vSphere 5.1 環境です。

 

今回の監視対象プロセスは、この httpd です。

[root@vm01 ~]# ps ax | grep httpd | grep -v grep

1626 ?        Ss     0:00 /usr/sbin/httpd

1628 ?        S      0:00 /usr/sbin/httpd

1629 ?        S      0:00 /usr/sbin/httpd

1630 ?        S      0:00 /usr/sbin/httpd

1631 ?        S      0:00 /usr/sbin/httpd

1632 ?        S      0:00 /usr/sbin/httpd

1633 ?        S      0:00 /usr/sbin/httpd

1634 ?        S      0:00 /usr/sbin/httpd

1635 ?        S      0:00 /usr/sbin/httpd

 

まず、簡単な監視スクリプトを作ってみました。

 

★アプリケーション監視を開始するスクリプト

 

vSphereHA_app_check_start.sh

#!/bin/sh

PROCESS_NAME=$1
INTERVAL=$2

[ "$#" -lt 2 ] && { echo 'no args.' ; exit 1 ; }

 

SDK_HOME_DIR=/opt/vmw/GuestSDK
SDK_LIB_DIR=${SDK_HOME_DIR}/lib/lib64
SDK_BIN_DIR=${SDK_HOME_DIR}/bin/bin64
START_SCRIPT_NAME=vSphereHA_app_check_start.sh

 

export LD_LIBRARY_PATH=${SDK_LIB_DIR}:${LD_LIBRARY_PATH}

 

# Start Monitoring.
${SDK_BIN_DIR}/vmware-appmonitor enable

 

while :
do
    ps ax | grep ${PROCESS_NAME} | grep -v -e grep -e ${START_SCRIPT_NAME} 1> /dev/null
    [ $? -eq 0 ] && ${SDK_BIN_DIR}/vmware-appmonitor markActive
    sleep ${INTERVAL}
done

 

★アプリケーション監視を停止するスクリプト

 

vSphereHA_app_check_stop.sh

#!/bin/sh

SDK_HOME_DIR=/opt/vmw/GuestSDK
SDK_LIB_DIR=${SDK_HOME_DIR}/lib/lib64
SDK_BIN_DIR=${SDK_HOME_DIR}/bin/bin64
START_SCRIPT_NAME=vSphereHA_app_check_start.sh

 

export LD_LIBRARY_PATH=${SDK_LIB_DIR}:${LD_LIBRARY_PATH}

 

# Stop Monitoring.
${SDK_BIN_DIR}/vmware-appmonitor disable

ps awx | grep ${START_SCRIPT_NAME} | grep -v grep | awk '{print $1}' | while read PID
do
    echo "Stop process: ${PID}"
    kill ${PID}
done

 

それでは、アプリケーションの監視をしてみます。

 

★アプリケーション監視を開始

上記の開始スクリプトに実行権限を付けた上で、下記のように実行します。

※監視間隔の秒数は、vSphere HA の監視感度よりも短くしておきます。

# chmod +x ./vSphereHA_app_check_start.sh  ★スクリプトファイルに実行権限つける。

# ./vSphereHA_app_check_start.sh <監視するプロセス名> <監視間隔(秒)>

 

実際にスクリプトを実行すると、下記のようになります。

スクリプトをバックグラウンドで実行するため、「&」を付けています。

[root@vm01 ~]# ./vSphereHA_app_check_start.sh httpd 10 &
[1] 23715

監視が開始され、

イベントに、「~ アプリケーションハードビートのステータスの緑への変更 ~」と表示されます。
ha_app1.png

 

★アプリケーション監視を終了

開始スクリプト同様、実行権限を付けた上で実行します。

こちらは、スクリプトの引数なしです。

[root@vm01 ~]# ./vSphereHA_app_check_stop.sh
Stop process: 23715

 

監視がOFFになり、

イベントに、「~ アプリケーションハードビートのステータスの灰色への変更 ~」と表示されます。
ha_app2.png

 

★障害を起こしてみると・・・

 

上記の要領で、アプリケーションの監視を開始してから httpd を停止すると

・・・ vSphere HA により VM がリセットされます。

[root@vm01 ~]# pkill httpd
→少し待つとアプリケーション障害が検知されて vSphereHA によりVMがリセットされる!

 

ちゃんと、vSphere HA に障害検知されて、VM がリセット(Power OFF → ON)されました。

ha_app3.png


「うちのチームしか使っていない文書管理システム」みたいな、高いサービスレベルを求められない VM であれば
Guest SDK が十分に使えそうな気がしました。

 

以上、Guest SDK での vSphere HA アプリケーション監視でした。