IBM SmarterCloud Application Workload Service 上の仮想システムをモニターする

IBM Tivoli Monitoring サーバーに仮想システム・パターンを接続する

IBM SmarterCloud Application Workload Service は IBM SmarterCloud Enterprise の IBM PaaS (Platform as a Service) オファリングで利用可能なサービスの 1 つです。Workload Service は IBM Workload Deployer の技術を基礎として使用し、仮想アプリケーションや仮想システムを IBM SmarterCloud Enterprise にデプロイします。この記事の執筆時点では、IBM Workload Deployer は仮想システム・パターンをモニターすることができません。このチュートリアルでは仮想システム・パターンを IBM Tivoli Monitoring サーバーに接続する方法について説明します。

Revathi Subramanian, Senior Software Engineer, IBM Corporation

Author photoRevathi Subramanian は IBM 研究所のシニア・ソフトウェア技術者です。彼女はサービス指向アーキテクチャー、クラウド・コンピューティング、SaaS フレームワークなどを研究しています。彼女は WebSphere、Lotus、Rational、Tivoli など、IBM の多くの開発チームで働いた経験があり、研究成果としての技術を製品やサービスの実用化に反映してきました。



2012年 11月 15日

作業を始める前に

仮想システム・パターンはシステムのトポロジー・パターンであり、Workload Deployer のカタログに含まれる仮想イメージを使用して作成することができます。Workload Service のコンテキストでは、基本的に Workload Deployer のカタログは SmarterCloud のイメージ・カタログから選択された一連の仮想イメージを含んでいます。これらの仮想イメージを組み合わせると、仮想システム・パターンを作成することができます。また、スクリプト・パッケージを使用することで、仮想イメージの一部をカスタマイズすることもできます。

このチュートリアルでは、共有のモニター・サーバーに仮想システムを接続する方法について学びます。


前提条件とシステム要件

このチュートリアルでは、皆さんが IBM SmarterCloud Application Services ファミリーのオファリングを利用する資格を持っているものとします。具体的には、Workload Service の専用インスタンスを持つ必要があり、仮想システム・パターンについてもある程度理解している必要があります。

また、IBM Tivoli Monitoring サーバーが IBM SmarterCloud Enterprise 上にセットアップされている必要があります。SmarterCloud にはプレリリース・バージョンの Tivoli Monitoring V6.2.2.1 があります。IBM SmarterCloud ポータルにログインし、図 1 に示すように「Add Instance (インスタンスの追加)」ウィンドウで丸印の付いたイメージを選択し、この Tivoli Monitoring サーバーの専用インスタンスを作成します。

図 1. Tivoli Monitoring 6.2.2.1 のプレリリース・インスタンスを Tivoli Monitoring サーバーに追加する
Tivoli Monitoring 6.2.2.1 のプレリリース・インスタンスを Tivoli Monitoring サーバーに表示した場合のスクリーン・キャプチャー

この Tivoli Monitoring サーバーを、いくつもの仮想システムをモニターできる共有サーバーと考えてください。Tivoli Monitoring サーバーのインスタンスがプロビジョニングされたら、その Tivoli Monitoring のインスタンスの IP アドレスをメモし、Tivoli Enterprise Portal にアクセスします。URL は http://<ITM インスタンスの IP アドレス>:1920///cnp/kdh/lib/cnp.html です。


このチュートリアルについて

このチュートリアルはスクリプト・パッケージを使用して IBM Workload Deloyer の仮想イメージをカスタマイズします。こうすることで、仮想イメージのインスタンスを Tivoli Monitoring サーバーで自動的に繰り返しモニターできるようになります。仮想システムをモニターするには、図 2 に示す 4 つのステップを実行します。

図 2. 仮想システムをモニターするためのステップ
Steps to achieve virtual systems monitoring

ステップ 1: Tivoli Monitoring ソフトウェアの OS エージェントをインストールして構成するためのスクリプト・パッケージを作成する

スクリプト・パッケージは zip ファイルであり、このファイルの中には、メインの実行可能ファイルから呼び出される一連のスクリプトや、スクリプトの実行を支援する成果物が含まれています。例えば、itmOS4SCAS.zip というスクリプト・パッケージを見てください。このパッケージには以下の 3 つのファイルが含まれています。

  • cbscript.json: スクリプト・パッケージを構成するためのメタデータを含んでいます。
  • itm.sh: メインの実行可能ファイルです
  • li6263-lz.tar: 大規模な tar アーカイブです。
図 3. スクリプト・パッケージの内容
スクリプト・パッケージに含まれる 3 つのファイルを示すスクリーン・キャプチャー

Linux OS エージェントをインストールするためのシェル・スクリプト

では、メインの実行可能ファイルである itm.sh を見てみましょう。itm.sh はシェル・スクリプトであり、仮想システムの一部としての仮想マシンに Linux OS エージェントをインストールします。

リスト 1. Linux OS エージェントをインストールするためのシェル・スクリプト
#! /bin/sh

SCRIPT_LOCATION=/tmp
LOG_LOCATION=/tmp/SCAS_scriptpkg_logs
if [ ! -e $LOG_LOCATION ]; then
	mkdir -p $LOG_LOCATION
fi
export LOGFILE=$LOG_LOCATION/itmAgentInstall.log
. /etc/virtualimage.properties     #1
echo "Begin Linux OS Agent Install" > $LOGFILE
echo "Incoming TEMS_SERVER: $TEMS_IP" >> $LOGFILE  #1
echo "Checking if IBM JDK is installed" >> $LOGFILE
# Install IBM JDK if needed
if [ ! -e /opt/IBM/ibm-java-i386-60 ]; then #2
	echo "IBM JDK not installed. Prereq failed. Returning 
	without installing ITM" >> $LOGFILE
	exit 1
fi
echo "IBM JDK Installed, setting JAVA_HOME" >> $LOGFILE
export JAVA_HOME=/opt/IBM/ibm-java-i386-60

#Check SELinux. Must be disabled for install    #3
SELinux_changed=false 
if [ "`cat /selinux/enforce`" -eq "0" ]; then
    echo "SELinux is not enforced. Nothing to do." >> $LOGFILE
else
   echo "SELinux is enforced. Temporarily turning off enforcement" >> $LOGFILE
   echo 0 >/selinux/enforce
   SELinux_changed=true
fi

#Extract Linux Agent Installer, Configure and Run it. 
ITM_DIR=/opt/IBM/ITM
mkdir -p /tmp/ITM
pushd /tmp/ITM
echo "Extracting li6263-lz.tar to /tmp/ITM" >> $LOGFILE
tar -xvf ${SCRIPT_LOCATION}/li6263-lz.tar    #4
echo "Setting TEMS_IP to ${TEMS_IP}" >> $LOGFILE
cat silent_config.txt | sed -e "s/<TEMS_IP>/${TEMS_IP}/" > 
                                                              silent_config.txt.tmp
cat silent_config.txt.tmp > silent_config.txt
echo "Installing lz" >> $LOGFILE
./silentInstall.sh
popd


#Check if Linux Agent is running     #5
$ITM_DIR/bin/itmcmd agent stop lz
sleep 10
export installDir=$ITM_DIR
export CANDLEHOME=$installDir
chmod -R 755 $installDir/*

update_environment( ) 
    {         
  echo "Updating environment variable parameters"  >> $LOGFILE   
			export ENV_FILE=$CANDLEHOME/config/lz.ini
			cat ${ENV_FILE}| sed 's/'KDC_FAMILIES'/'#KDC_FAMILIES'/' > 
                                                ${ENV_FILE}.tmp
			cat ${ENV_FILE}.tmp> ${ENV_FILE}
			rm -f ${ENV_FILE}.tmp
			echo -e "`cat ${ENV_FILE}` "\\n"KDC_FAMILIES=ip.pipe 
                            port:1918 ip.spipe 
			            use:n sna use:n HTTP:1920"> ${ENV_FILE}
			echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_EVENTEXPORT=Y "> 
                            ${ENV_FILE}
			echo -e "`cat ${ENV_FILE}` "\\n"IRA_DEBUG_PRIVATE_SITUATION=Y "> 
			            ${ENV_FILE}	
		
		echo "environment variable updated successfully"  >> $LOGFILE
		}

############function to update iptables######

update_iptables( ) 
	       {         
	    echo "Updating iptables"   
			export IP_FILE=/etc/sysconfig/iptables >> $LOGFILE
			cat ${IP_FILE}| sed 's/COMMIT/#ITM IPTABLES CONFIGURATIONS/' > 
                      ${IP_FILE}.tmp
			cat ${IP_FILE}.tmp> ${IP_FILE}
			cat ${IP_FILE}| sed 's/-A RH-Firewall-1-INPUT -j REJECT 
                      --reject-with 
			          icmp-host-prohibited/#-A RH-Firewall-1-INPUT -j REJECT 
			          --reject-with icmp-host-prohibited/' > ${IP_FILE}.tmp
			cat ${IP_FILE}.tmp> ${IP_FILE}
			
			rm -f ${IP_FILE}.tmp

			echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m tcp -p tcp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A INPUT -m udp -p udp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m tcp -p tcp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A OUTPUT -m udp -p udp 
			     --dport 1918 -j ACCEPT"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"-A RH-Firewall-1-INPUT 
			      -j REJECT --reject-with icmp-host-prohibited"> ${IP_FILE}
			echo -e "`cat ${IP_FILE}` "\\n"COMMIT"> ${IP_FILE}	
		
			/sbin/service iptables restart
		
		echo "updating iptables"  >> $LOGFILE
		}


############function to start itm agent######
		start_itmagent() 
		{
		echo "Restarting ITM agent" >> $LOGFILE	
		$CANDLEHOME/bin/itmcmd agent start lz			
		echo "ITM agent started successfully" >> $LOGFILE
		}

echo "calling functions " >>  $LOGFILE 	

update_environment    #6
update_iptables       #7
start_itmagent        #8

echo "functions called successfully" >>  $LOGFILE
if $SELinux_changed ; then    #9
   echo "Reinstating SELinux enforcement" >> $LOGFILE
   echo 1 >/selinux/enforce
fi

上記のコードで太字にされた数字の部分を説明したものが以下の注記です。

#1: スクリプト・パッケージはスクリプトを実行する際に特定の変数を使用することができます。これらの変数は、仮想システムをデプロイする際に Workload Service のユーザーが値を入力する場合もあれば、そのパターンを設計する際に値が設定される場合もあります。これらの変数は /etc/virtualimage.properties というファイルに含まれます。この例では $TEMS_IP が変数であり、メインの実行可能ファイルは /etc/virtualimage.properties を介してこの変数を認識します。

#2. Java が前提条件であることから、メインの実行可能ファイルは Linux OS エージェントをインストールする前に、Java がインストールされているかどうかを確認します。Java が特定のパスに見つからない場合、このスクリプトは Tivoli Monitoring エージェントをインストールせずに終了します。

#3. Linux OS エージェントをインストールする前に、メインの実行可能ファイルは SELinux (Secure Enhanced Linux) が有効にされているかどうかを確認します。IBM Tivoli Monitoring は enforcing モードをサポートしていません。Tivoli Monitoring のドキュメントによれば、permissive モードまたは disabled モードでないと Tivoli Monitoring のインストールや構成を行うことはできません。しかしインストールや構成が終わると、あらためて SELinux を有効にすることができます。つまりこのスクリプトは一時的に SELinux を enforcing 以外のモードに切り替えます。

#4. 次に、同じパッケージに含まれているバイナリー・ファイル li6263-lz.tar が既知の場所に解凍されます。サイレント・インストールの構成ファイルは Tivoli Monitoring サーバーの IP アドレスを反映して更新されます。そのため、いったん Linux エージェントがインストールされると、Linux エージェントが構成されてサーバーに接続されます。

#5. Linux エージェントはサイレント・インストール・プログラムによって自動的に起動されます。何らかの構成変更を行えるように、エージェントは itm.sh によって停止されます。

#6. Tivoli Monitoring の環境変数が更新されます。

#7. Linux OS エージェントが実行されている VM のファイアウォール・ルールが更新されます。その結果、Linux OS エージェントはポート1918 でモニター・サーバーに接続することができます。

#8. 上記の変更が行われた後、Tivoli Monitoring エージェントが再起動されます。

#9: このスクリプトによって SELinux が無効にされた場合は、あらためて SELinux が有効にされます。

スクリプト・パッケージのメタデータ・ディスクリプター

ここで、スクリプト・パッケージのメタデータ・ディスクリプター、cbscript.json を調べてみましょう。このディスクリプターは、スクリプト・パッケージが Workload Deployer のカタログに追加されたときに、スクリプト・パッケージを構成するために必要な全情報を追加するために使用されます。このことからわかるように、スクリプト・パッケージのメタデータには、スクリプト・パッケージのコピー先の場所、スクリプト・パッケージの実行を記録するログの場所、スクリプトに関するあらゆる変数やプロパティーの定義などが含まれています (この例の場合には TEMS_IP という 1 つの変数しかありません)。

リスト 2. スクリプト・パッケージを記述するメタデータ
[
{
       name": Install and configure ITM OS agent",
       command": sh /tmp/itm.sh",
       commandargs": " ,
       log": /tmp/SCAS_scriptpkg_logs",
       location": /tmp",
       timeout": 3600000,
       version": 1.0",
       path": default_data/Script_Packages/itmOS4SCAS/itmOS4SCAS.zip",
       keys":
       [
           {
               scriptkey": TEMS_IP",
               scriptvalue": ",
               scriptdefaultvalue": 170.224.x.y"
           }
       ]
}
]

これで、Tivoli Monitoring ソフトウェアの Linux OS エージェントを任意の仮想マシンにインストールして構成できるスクリプト・パッケージを準備できました。itmOS4SCAS.zip と共に、任意の仮想イメージに Java ランタイムをインストールする別のスクリプト・パッケージをダウンロードすることができます。このスクリプト・パッケージの名前は jdk4SCAS.zip です。


ステップ 2: IWD のカタログにスクリプト・パッケージをインポートする

今度は、このスクリプト・パッケージ (itmOS4SCAS.zip) を Workload Deployer のカタログに追加する必要があります。スクリプト・パッケージを仮想システム・パターンに追加する前に、スクリプト・パッケージがカタログの中になければなりません。

スクリプト・パッケージをインポートするために、Workload Service にログインします。

  1. 「Catalog (カタログ)」 > 「Script Packages (スクリプト・パッケージ)」の順にクリックします。
  2. 「Add icon (アイコンの追加)」のプラス記号をクリックして新しいスクリプト・パッケージを作成します。
  3. 名前として「InstallOSAgent」と入力します。
  4. OK」をクリックします。
  5. InstallOSAgent の詳細ページで、「Script Package (スクリプト・パッケージ)」ファイル・フィールドの「Browse... (参照)」をクリックします。
  6. 皆さんのコンピューター上で itmOS4SCAS.zip ファイルがある場所にアクセスします。
  7. Upload (アップロード)」をクリックします。
  8. 「Refresh (更新)」アイコンをクリックし、スクリプト・パッケージの詳細を表示します。
  9. スクリプト・パッケージの情報の大部分は JSON ディスクリプター (cbscript.json) に含まれています。他のすべてのプロパティーに関してはデフォルトを受け入れます。スクリプトの「Executes (実行)」フィールドが、仮想システムを作成するように設定されていることに注意してください。このことから、仮想システムで仮想マシンが作成されると、このスクリプトが自動的に実行されることがわかります。

必要な環境変数の値をすべて入力します。この場合は TEMS_IP 変数がデフォルト値の 170.224.x.y に設定されます。この値を皆さんの ITM サーバーの IP アドレスに変更します。この値の変更は仮想システムをデプロイする前に行うことも可能です。

同様に、InstallJava という別のスクリプト・パッケージを作成することで jdk4SCAS.zip も Workload Deployer カタログにインポートすることができます。


ステップ 3: スクリプト・パッケージと仮想イメージのパーツとを関連付ける

では、スクリプト・パッケージを仮想システム・パターンに追加しましょう。

Workload Service にログインし、以下の操作を行います。

  1. 「Patterns (パターン)」 > 「Virtual Systems (仮想システム)」の順にクリックします。
  2. 「Add icon (アイコンの追加)」のプラス記号をクリックして新しい仮想システム・パターンを作成します。名前として「WebSphereWithMonitoring」と入力します。
  3. OK」をクリックします。
  4. 右側のパネルで「Edit (編集)」アイコンを選択し、「Pattern Editor (パターン・エディター)」を表示します。
  5. 左側のパネルで、「Parts selection (パーツ選択)」から IBM WebSphere Application Server v7.0 for IWD パーツをドラッグし、キャンバス上にドロップします。
  6. 左側のパネルで「Script Packages (スクリプト・パッケージ)」を選択します。
  7. InstallJava スクリプト・パッケージをドラッグし、既にキャンバス上にある WebSphere パーツの上にドロップします。同じことを InstallOSAgent スクリプト・パッケージについても行います。
  8. スクリプトの順序が適切であることを確認します。OS エージェントをインストールするよりも前に Java がインストールされるように、実行順序は InstallJava が最初、次が InstallOSAgent でなければなりません。順序を変更する必要がある場合には、「Pattern Editor (パターン・エディター)」で「Ordering (順序付け)」リンクをクリックします。
  9. キャンバス上で、InstallOSAgent スクリプト・パッケージの「Edit Parameter (パラメーターの編集)」アイコンをクリックします。するとウィンドウが開きます。TEMS_IP 変数の値 (皆さんのモニター・サーバーの IP アドレス) を入力、または編集します。この変数の値がデプロイ時に誰かに変更されないようにするには、このウィンドウの TEMS_IP の横にあるロック・アイコンをクリックし、この値のフィールドをロックします。
  10. キャンバスの上部にある「Done Editing (編集の完了)」をクリックして仮想システム・パターンを保存し、「Pattern Editor (パターン・エディター)」を終了します。

ステップ 4: 仮想システムをデプロイする

では、この仮想システムをデプロイし、結果を見てみましょう。

Workload Service にログインし、以下の操作を行います。

  1. 「Patterns (パターン)」 > 「Virtual Systems (仮想システム)」の順にクリックします。
  2. WebSphereWithMonitoring」パターンを選択し、「Deploy (デプロイ)」をクリックします。
  3. パターンをデプロイするウィンドウでは、仮想システムの名前を指定します (例えば「WASITM1」など)。
  4. Configure virtual parts (仮想パートの構成)」をクリックし、WebSphere パーツを選択します。
  5. このパターンに関して必要なすべての値、またスクリプト・パッケージの環境変数を入力または編集します。
  6. OK」をクリックします。
  7. OK」をクリックし、このパターンをデプロイします。

この仮想システムが完全に起動されて実行状態になるまで、この仮想システムはいくつかの状態を変化します。仮想システムのダッシュボードに緑色の矢印が表示されると、仮想システムの詳細を調べて、以下の項目をメモすることができます。

  • WebSphere Application Server 仮想マシンの IP アドレス
  • WebSphere Application Server 仮想マシンのホスト名
  • スクリプト実行レポート。詳細ページの「Script Packages (スクリプト・パッケージ)」セクションには、この仮想イメージと関連付けられたスクリプトがすべて一覧表示されています。この例の場合には 2 つのスクリプトがあるはずです。スクリプトの実行が成功すると、そのスクリプトに緑色のティック・マークが表示されるはずです。cloudburst_collect*.zip ファイルをクリックすると、2 つのスクリプトを実行した結果のログが表示されます。
    図 4. スクリプトを実行した結果が仮想システムのダッシュボードに表示されている状態
    スクリプトを実行した結果が仮想システムのダッシュボードに表示されている状態

これで仮想システムが実行状態となり、スクリプトが適切に実行されたので、WebSphere Application Server VM 上で実行される Linux OS エージェントが共有モニター・サーバーに接続できたかどうかを確認しましょう。Tivoli Enterprise Portal にログインします。URL は http://<ITM インスタンスの IP アドレス>:1920///cnp/kdh/lib/cnp.html です。「Navigator (ナビゲーター)」の「Linux Managed Systems (Linux 管理対象システム)」の下に WebSphere Application Server VM のホスト名が表示されるはずです。

図 5. 「Linux Managed Systems (Linux 管理対象システム)」の自動登録
「Linux Managed Systems (Linux 管理対象システム)」の自動登録

下記の図のように、Linux OS エージェントがモニター・サーバーと通信し、CPU、メモリー、ファイルシステム、その他の重要なメトリクスに関するモニター・データを提供している様子が表示されるはずです。

図 6. 仮想システム上で実行する Linux OS エージェントがモニター・データを表示している様子
仮想システム上で実行する Linux OS エージェントがモニター・データを表示している様子

まとめ

このチュートリアルでは、IBM SmarterCloud Enterprise の IBM SmarterCloud Application Workload Service を使用して仮想システムをモニターする方法について説明しました。

この記事で概説したのと同じ方法を使用して、他のモニター・エージェントを IBM Tivoli Composite Application Manager for WebSphere Application Server や Optim Performance Manager などの仮想システムにインストールして構成することができます。1 つの Tivoli Monitoring サーバー・インスタンスを使用して複数の仮想システムをモニターすることもできます。仮想システム自体は、さまざまな Workload Service インスタンスからデプロイすることができます。つまり、仮想システムのモニターに関するすべてのニーズに 1 台で対応する専用の Tivoli Monitoring サーバーをセットアップすることができます。

この記事をレビューしてくださった Prasad Vishnubhotla 氏と Denis Ducharme 氏に感謝いたします。

参考文献

学ぶために

製品や技術を入手するために

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing, Tivoli (service management)
ArticleID=845560
ArticleTitle=IBM SmarterCloud Application Workload Service 上の仮想システムをモニターする
publish-date=11152012