
vSphere HA + Guest SDK で httpd を簡易アプリケーション監視。
Posted by gowatana in にほんごVMware on Nov 7, 2013 6:57:46 AM前回 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 disableps 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
監視が開始され、
イベントに、「~ アプリケーションハードビートのステータスの緑への変更 ~」と表示されます。
★アプリケーション監視を終了
開始スクリプト同様、実行権限を付けた上で実行します。
こちらは、スクリプトの引数なしです。
[root@vm01 ~]# ./vSphereHA_app_check_stop.sh
Stop process: 23715
監視がOFFになり、
イベントに、「~ アプリケーションハードビートのステータスの灰色への変更 ~」と表示されます。
★障害を起こしてみると・・・
上記の要領で、アプリケーションの監視を開始してから httpd を停止すると
・・・ vSphere HA により VM がリセットされます。
[root@vm01 ~]# pkill httpd
→少し待つとアプリケーション障害が検知されて vSphereHA によりVMがリセットされる!
ちゃんと、vSphere HA に障害検知されて、VM がリセット(Power OFF → ON)されました。
「うちのチームしか使っていない文書管理システム」みたいな、高いサービスレベルを求められない VM であれば
Guest SDK が十分に使えそうな気がしました。
以上、Guest SDK での vSphere HA アプリケーション監視でした。
Comments