AXP(Application eXtension Platform)/アプリケーションのステータスモニター(Watchdogスクリプト)

バージョン 5

    AXP(Application eXtension Platform)へ戻る

     

    アプリケーションのステータス管理

    アプリケーションは、Cisco AXP アプリケーションモニタリング機能を使用する、1 つまたは複数のウォッチドッグスクリプトまたは実行可能ファイルをパッケージにバンドルして提供する必要があります。

    1. ウォッチドッグスクリプトは、前もって定義されているディレクトリ/opt/app_status_monitor/watchdogs/ に配置する必要があります。
      [~]# cd /opt/AXP/apps/helloworld/
      [helloworld]# mkdir -p build/opt/app_status_monitor/watchdogs
    2. ウォッチドックスクリプト build/opt/app_status_monitor/watchdogs/W01helloworld.sh を作成します。
      #!/bin/bash
      APP=helloworld.sh
      APPNAME_NO_EXT=helloworld
      PID_FILE=/var/run/${APPNAME_NO_EXT}.pid
      if [ ! -e $PID_FILE ]; then
         exit 1;
      fi
      PID_FROM_FILE=`cat ${PID_FILE}`
      for x in `ps -ef|grep $APP |awk '{print $2}'`
      do
        if [ $x == "${PID_FROM_FILE}" ]; then
          exit 0
        else
          exit 1
        fi
      done
      このスクリプトでは、/var/run/helloworld.pid ファイルに記載されているPIDに該当するプロセスが実行されている場合は成功とし、プロセスが存在しない場合は、失敗としています。
    3. ウォッチドックスクリプトに実行属性をつけます。
      [helloworld]# chmod +x build/opt/app_status_monitor/watchdogs/W01helloworld.sh
    4. ウォッチドックスクリプトが、監視するpidファイルを作成するように helloworld.shを修正します。
      1. #!/bin/bash
      2.
      3. #provide health status
      4. /bin/app_status_notifier helloworld INITIALIZING
      5.
      6. #create helloworld.pid file
      7. PID_FILE=/var/run/helloworld.pid
      8. ps -ef|grep helloworld.sh|grep -v grep|awk '{print $2}' > $PID_FILE
      9.
      10. # remove old log file
      11. rm -rf /var/log/fancy_output
      12.
      13. #provide health status
      14. /bin/app_status_notifier helloworld ALIVE
      15. echo "`date` Hello world begin" >> /var/log/fancy_output
      16. CNT=0
      17. while [ $CNT -lt 60 ]; do
      18.  echo "`date` Hello world" >> /var/log/fancy_output
      19.  sleep 10
      20.  let CNT=CNT+1
      21. done
      22. echo "`date` Hello world end" >> /var/log/fancy_output
      23.
      24. /bin/app_status_notifier helloworld DOWN
      25.
      26. rm $PID_FILE
      6-8行でpidファイルを作成し、26行でpidファイルを削除します。

     

     

    ステータスモニタ

    ウォッチドックを設定すると、ステータスモニタを確認することができます。

    1. ステータスモニタを確認します
      AXP> app-service helloworld

      AXP(exec-helloworld)> show status-monitor
      Application:                  helloworld
      Monitor status:                PASSED
      Monitor in progress:          No
      Last executed watchdog:        W01helloworld.sh
      Last executed date:            Thu Mar 19 19:30:59 JST 2009
      Last failed watchdog:          ---
      Last failed return code:      -
      Last failed date:              ---
      Last restarted date:          ---
      Recovery threshold:            5
      Monitor interval:              12
    2. ステータスモニタが正常に動作していない場合は、以下の内容を確認します。
      1. ゲストOSシェルへアクセスします。                 
        AXP(exec-helloworld)> connect console
        bash-2.05b#
      2. pidファイルが正しく作られているか確認します。
        bash-2.05b# ps -ef | grep hello
        root      3105  3104  0 19:29 ?        00:00:00 /bin/bash /opt/helloworld.sh
        bash-2.05b# cat /var/run/helloworld.pid
        3105
      3. W01helloworld.sh の終了コードを確認します。
        bash-2.05b# cd /opt/app_status_monitor/watchdogs/
        bash-2.05b# ./W01helloworld.sh
        bash-2.05b# echo $?
        0
        ここが0以外の場合、ステータスモニタはアプリケーションが機能していないとみなします。

     

     

    ステータスモニタの監視設定

    モニターの監視設定の条件変更を行うには、AXPのコンソールから設定をします。

    AXP# config terminal
    AXP(config)# app-service helloworld
    AXP(config-myapp)# status-monitor monitor_interval 24 recovery_threshold 10
    AXP(config-myapp)# end

     

     

    詳細については、Developer Guide の Application Status Monitoring using Watchdog Scripts を参照してください。