Урок 4. Наблюдение за службой Order Service с помощью Windows PowerShell
**Время выполнения:**25 минут
Цель: узнать, как отслеживать данные наблюдения в режиме реального времени и данные, сохраненные в журнале, используя командлеты Microsoft AppFabric 1.1 для Windows Server среды Windows PowerShell.
Задача: целью этого занятия является ознакомление с данными экземпляров посредством использования командлетов AppFabric для среды Windows PowerShell, а также с использование этих данных для управления экземплярами.
Необходимые условия
Прежде чем начать выполнение этого задания, следует выполнить перечисленные ниже предварительные условия.
- Перед началом работы необходимо выполнить задание Урок 3. Настройка службы заказов с помощью Windows PowerShell.
Процедура
Это задание состоит из следующих действий:
Отображение данных наблюдения с помощью Windows PowerShell.
Управление экземпляром рабочего процесса в среде Windows PowerShell.
Использование Windows PowerShell для просмотра отслеживаемых событий рабочих процессов в базе данных наблюдения AppFabric.
Отображение данных наблюдения с помощью Windows PowerShell
Чтобы просмотреть экземпляры WF для службы OrderWorkflowService, развернутой вместе с приложением службы заказов
Выполните файл OrderClient.exe, расположенный в каталоге C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug. Этот файл был создан на занятии Урок 2. Развертывание приложения Order Service с помощью Windows PowerShell. Чтобы выполнить этот файл, можно скопировать в командную строку Windows PowerShell приведенную ниже команду.
C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этой строки экземпляр OrderWorkflowService моделирует обработку заказа.
Обратите внимание на время, чтобы потом сопоставить его со временем создания экземпляра рабочего процесса.
Чтобы отобразить экземпляры рабочих процессов службы OrderWorkflowService с помощью командлетов AppFabric, выполните приведенную ниже команду в командной строке Windows PowerShell.
Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
Эта команда получает все экземпляры службы OrderWorkflowService в базе данных OrderService_PS. Экземпляры передаются по конвейеру в командлет Format-List с помощью псевдонима fl, чтобы отображались только необходимые свойства рабочего процесса.
Убедитесь, что выполнение команды привело к созданию списка экземпляров рабочих процессов, который выглядит аналогично приведенному ниже.
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, чтобы получить работающий экземпляр службы. Файл OrderClient может быть запущен в среде Windows PowerShell с помощью приведенной ниже команды.
C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этой строки экземпляр OrderWorkflowService моделирует обработку заказа.
Обратите внимание на время, чтобы потом сопоставить его со временем создания экземпляра рабочего процесса.
Чтобы отобразить экземпляры рабочих процессов службы OrderWorkflowService с помощью командлетов AppFabric, выполните приведенную ниже команду в командной строке Windows PowerShell.
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. Выделите значение идентификатора GUID для InstanceId. Для этого нажмите левую кнопку мыши и, удерживая ее, проведите курсором по идентификатору GUID.
После выделения всего идентификатора GUID, щелкните правой кнопкой мыши в пределах выделенного идентификатора, чтобы скопировать его в буфер обмена.
Чтобы приостановить работающий экземпляр рабочего процесса с идентификатором InstanceId, размещенным в буфере обмена, выполните следующую команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Suspend-ASAppServiceInstance
Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Suspend-ASAppServiceInstance для приостановки рабочего процесса.
Чтобы возобновить рабочий процесс, выполните приведенную ниже команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Resume-ASAppServiceInstance
Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Resume-ASAppServiceInstance для возобновления приостановленного рабочего процесса.
Чтобы остановить и завершить работу экземпляра, выполните приведенную ниже команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.
Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Stop-ASAppServiceInstance -Terminate
Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Stop-ASAppServiceInstance для остановки и прекращения работы рабочего процесса.
Просмотр отслеживаемых событий WF с помощью Windows PowerShell
На основе уровня наблюдения и профиля отслеживания, настроенного для рабочего процесса, можно отслеживать множество точек данных в рабочем процессе. Уровень наблюдения можно задать как HealthMonitoring, используя командлет Set-ASAppMonitoring в Урок 2. Развертывание приложения Order Service с помощью Windows PowerShell. В этом разделе будет создан отчет о событиях 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 на нужный идентификатор экземпляра.
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 :
События, отображаемые на этом шаге, содержат сведения о состоянии действий и операций в рабочем процессе. Эти сведения необходимы для отслеживания хода выполнения рабочего процесса в режиме реального времени.
Дополнительные сведения о запросах базы данных наблюдения см. в разделе Наблюдение за представлениями и таблицами базы данных.
Также см. пример сценария Выполнение запросов к базе данных наблюдения SQL с помощью Windows PowerShell. Дополнительные сведения см. в разделе Примеры.
Чтобы было сделано?
На этом занятии было показано, как отображать данные рабочего процесса, отслеживаемые в AppFabric, и идентифицировать экземпляр. Также было показано, как приостанавливать, возобновлять и останавливать экземпляры. Наконец, была использована новая функция сценария, добавленная в модуль сценария Utility.ps1, для отображения событий рабочего процесса из базы данных наблюдения.
Следующие действия
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
См. также
Основные понятия
Урок 1. Начало работы с командлетами AppFabric для Windows PowerShell
Урок 2. Развертывание приложения Order Service с помощью Windows PowerShell
Урок 3. Настройка службы заказов с помощью Windows PowerShell
Урок 4. Наблюдение за службой Order Service с помощью Windows PowerShell
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell
2012-03-05