レッスン 4: Windows PowerShell による Order Service の監視
所要時間: 25 分
目標: Microsoft AppFabric 1.1 for Windows Server の Windows PowerShell 用のコマンドレットを使用して、リアルタイムの監視データおよび監視データの履歴を監視する方法を学習します。
目的: このレッスンの目的は、AppFabric の Windows PowerShell コマンドレットによってレポートされるインスタンス情報を理解し、その情報を使用してインスタンスを管理する方法を学習することです。
前提条件
このレッスンを開始する前に、以下の前提条件を確認してください。
- このレッスンを開始する前に、「レッスン 3: Windows PowerShell による Order Service の構成」を完了している必要があります。
手順
このレッスンでは、以下の演習を行います。
Windows PowerShell で監視情報をレポートします。
Windows PowerShell でワークフロー インスタンスを制御します。
Windows PowerShell を使用して AppFabric 監視データベースから追跡対象ワークフロー イベントを表示します。
Windows PowerShell での監視情報のレポート
Order Service アプリケーションによって展開された OrderWorkflowService の WF インスタンスをレポートするには
C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug ディレクトリから OrderClient.exe を実行します。このファイルは、「レッスン 2:Windows PowerShell による Order Service アプリケーションの展開」でビルドしたものです。次のコマンドを Windows PowerShell にコピーして OrderClient を実行できます。
C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
[Contoso.com Order Form] の [Submit] をクリックします。作業を続行する前に、フォームの下部にあるステータス セクションに [Your order has been received] と表示されていることを確認します。フォームにこのメッセージが表示されると、OrderWorkflowService のインスタンスが実行され、注文の処理がシミュレートされます。
ワークフロー インスタンスの作成時刻と相互参照できるように、このときの時刻をメモしておきます。
AppFabric のコマンドレットを使用して OrderWorkflowService のワークフロー インスタンスをレポートするには、Windows PowerShell で次のコマンドを実行します。
Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
このコマンドは、OrderService_PS データベース内の OrderWorkflowService のすべてのインスタンスを取得します。このインスタンスは、fl エイリアスを使用して、目的のワークフローのプロパティのみをレポートする Format-List コマンドレットにパイプされます。
実行したコマンドによって、次の一覧のようなワークフロー インスタンスの一覧が生成されたことを確認します。
InstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc Status : Running Condition : Active CreationTime : 11/1/2009 2:04:48 AM LastUpdateTime : 11/1/2009 2:04:56 AM SiteName : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx ExceptionMessage :
この情報を使用して、インスタンスのステータスおよび例外情報を監視できます。
CreationTime が手順 3. でメモした時刻であるインスタンスを探します。
Windows PowerShell でのワークフロー インスタンスの制御
ここでは、ワークフロー インスタンスを中断、再開、および停止します。
再び OrderClient.exe を実行し、インスタンスが実行状態であることを確認します。Windows PowerShell で次のコマンドによって OrderClient を実行します。
C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
[Contoso.com Order Form] の [Submit] をクリックします。作業を続行する前に、フォームの下部にあるステータス セクションに [Your order has been received] と表示されていることを確認します。フォームにこのメッセージが表示されると、OrderWorkflowService のインスタンスが実行され、注文の処理がシミュレートされます。
ワークフロー インスタンスの作成時刻と相互参照できるように、このときの時刻をメモしておきます。
Windows PowerShell で次のコマンドを実行することによって、AppFabric のコマンドレットを使用して OrderWorkflowService のワークフロー インスタンスをレポートします。
Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" –Status Running | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
実行したコマンドによって、次の一覧のようなワークフロー インスタンスの一覧が生成されたことを確認します。
InstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc Status : Running Condition : Active CreationTime : 11/1/2009 2:04:48 AM LastUpdateTime : 11/1/2009 2:04:56 AM SiteName : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx ExceptionMessage :
インスタンスの CreationTime を見て、手順 3. でメモした時刻と一致するインスタンスを探します。"InstanceId" に示されている GUID 値を、マウスの左ボタンを押したままドラッグして強調表示します。
GUID 全体が強調表示されたら、強調表示された GUID 内を右クリックして、GUID をクリップボードにコピーします。
クリップボードにコピーした InstanceId で識別される実行中のワークフロー インスタンスを中断するには、以下に示されている InstanceId の GUID を実際の GUID に置き換えて次のコマンドを実行します。
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Suspend-ASAppServiceInstance
このコマンドは、InstanceId で識別されるワークフロー インスタンスを取得し、ワークフローを中断する Suspend-ASAppServiceInstance コマンドレットにパイプします。
ワークフローを再開するには、以下に示されている InstanceId の GUID を実際の GUID に置き換えて次のコマンドを実行します。
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Resume-ASAppServiceInstance
このコマンドは、InstanceId で識別されるワークフロー インスタンスを取得し、中断されたワークフローを再開する Resume-ASAppServiceInstance コマンドレットにパイプします。
インスタンスを停止して終了するには、以下に示されている InstanceId の GUID を実際の GUID に置き換えて次のコマンドを実行します。
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Stop-ASAppServiceInstance -Terminate
このコマンドは、InstanceId で識別されるワークフロー インスタンスを取得し、ワークフローを停止して終了する Stop-ASAppServiceInstance コマンドレットにパイプします。
Windows PowerShell での追跡対象 WF イベントの表示
ワークフローについて構成されている監視レベルと追跡プロファイルに基づいて、ワークフロー内の複数のデータ ポイントを追跡できます。監視レベルは、「レッスン 2:Windows PowerShell による Order Service アプリケーションの展開」で Set-ASAppMonitoring を使用して HealthMonitoring に設定しました。ここでは、インスタンスで追跡対象の WF イベントのレポートを生成します。この情報をレポートするために、Utility.ps1 スクリプト モジュールに追加したスクリプト関数をもう一度使用します。
Windows PowerShell で、次のコマンドを入力して Utility.ps1 スクリプト ファイルを開きます。
Notepad .\Utility.ps1
次のスクリプト関数をコピーして、メモ帳で Utility.ps1 スクリプトの最後に貼り付けます。
#============================================================================================# #=== ===# #=== Make sure the modules and snapins are loaded ===# #=== ===# #============================================================================================# function RegisterSnapIn($snapin) { $reg = Get-PSSnapin -Registered -Name $snapin $added = Get-PSSnapin -Name $snapin -ErrorAction SilentlyContinue if ($reg.Name -eq $snapin) { if ($added.Name -ne $snapin) { Add-PSSnapin $snapin } } } RegisterSnapIn "SqlServerProviderSnapin100" RegisterSnapIn "SqlServerCmdletSnapin100" Import-Module ApplicationServer #============================================================================================# #=== ===# #=== Retrieves WF Events for the given InstanceId from the specified monitoring database. ===# #=== ===# #============================================================================================# Function GetWFEvents($InstanceId,$database) { $SQL = "SELECT EventSources.Name AS WorkflowName, " + "EventSources.Computer, " + "EventSources.Site, " + "EventSources.VirtualPath, " + "WfEvents.Id AS EventID, " + "WfEvents.WorkflowInstanceId, " + "WfEvents.TimeCreated, " + "WfEvents.Name AS EventName, " + "WfEvents.State, " + "WfEvents.ActivityName, " + "WfEvents.Exception " + "FROM EventSources INNER JOIN " + "WfEvents ON EventSources.Id = WfEvents.EventSourceId " + "WHERE WfEvents.WorkflowInstanceId = `'$InstanceId`'" Invoke-Sqlcmd -Query $SQL -Database $database }
このスクリプト コードによって、Windows PowerShell セッションで SQL Server コマンドレットを使用するために必要なコンポーネントがロードされます。また、GetWFEvents というユーティリティ関数も追加されます。この関数によって、監視データベースに照会し、Wfevents ビューからワークフロー イベント情報を取得できます。この関数で使用される SQL クエリは、EventSources ビューとの内部結合を実行して、イベントに関連付けられたワークフローを識別します。
メモ帳を閉じ、[保存] をクリックして Utility.ps1 への変更を保存します。
Windows PowerShell で次のコマンドを実行して、Utility.ps1 に対する変更内容を Windows PowerShell セッションにロードします。
Import-Module .\Utility.ps1
Windows PowerShell で次のコマンドを入力し、新しいスクリプト関数を使用してワークフロー インスタンスの監視データベースに記録されているワークフロー イベントを照会します。以下に示されている GUID を実際のインスタンス ID に置き換えてください。
GetWFEvents 95a25419-0d71-42c4-ab70-aa523ba603fc OrderService_PS
Windows PowerShell での出力は、以下に示すようなイベントの一覧になります。
WorkflowName : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow Computer : server1 Site : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx EventID : 975 WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc TimeCreated : 2009-11-01 10:06:57.6974305 EventName : Order completed State : Closed ActivityName : Exception : WorkflowName : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow Computer : server1 Site : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx EventID : 976 WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc TimeCreated : 2009-11-01 10:06:57.6974305 EventName : Order Service State : Closed ActivityName : Exception : WorkflowName : Microsoft.Samples.Dublin.Tutorials.OrderService.OrderWorkflowService.OrderWorkflow Computer : server1 Site : OrderService_PS VirtualPath : /OrderWorkflowService/OrderWorkflow.xamlx EventID : 977 WorkflowInstanceId : 95a25419-0d71-42c4-ab70-aa523ba603fc TimeCreated : 2009-11-01 10:06:57.6974305 EventName : State : Completed ActivityName : Exception :
この手順でレポートされるイベントは、ワークフローでのアクティビティおよび操作のステータスや状態に関する情報を示します。この情報は、実行中のワークフローの進行状況を監視するのに便利です。
監視データベースへの照会の詳細については、「監視データベースのビューおよびテーブル」を参照してください。
スクリプト サンプルについて復習するには、「Windows PowerShell を使用した SQL 監視データベースの照会」を参照してください。詳細については、「サンプル」を参照してください。
まとめ
このレッスンでは、AppFabric によって監視されるワークフロー情報をレポートする方法およびインスタンスを識別する方法について学習しました。また、インスタンスの中断、再開、および停止の各制御操作の方法についても学習しました。最後に、Utility.ps1 スクリプト モジュールに追加された新しいスクリプト関数を使用して、監視データベースに記録されたワークフロー イベントをレポートしました。
次のステップ
レッスン 5: Windows PowerShell によるワークフローの追跡
関連項目
概念
レッスン 1: Windows PowerShell 用の AppFabric コマンドレットの概要
レッスン 2:Windows PowerShell による Order Service アプリケーションの展開
レッスン 3: Windows PowerShell による Order Service の構成
レッスン 4: Windows PowerShell による Order Service の監視
レッスン 5: Windows PowerShell によるワークフローの追跡
2012-03-05