Поделиться через


Урок 4. Наблюдение за службой заказов с помощью Windows PowerShell

Время завершения25 минут

Цель: узнать, как отслеживать данные наблюдения в режиме реального времени и данные, сохраненные в журнале, используя командлеты Windows Server AppFabric среды Windows PowerShell.

Назначение: целью этого занятия является ознакомление с данными экземпляров посредством использования командлетов AppFabric для среды Windows PowerShell, а также с использование этих данных для управления экземплярами.

Предварительные условия

Прежде чем начать выполнение этого задания, следует выполнить перечисленные ниже предварительные условия.

Процедура

Это задание состоит из следующих действий:

  1. Отображение данных наблюдения с помощью Windows PowerShell.

  2. Управление экземпляром рабочего процесса в среде Windows PowerShell.

  3. Использование Windows PowerShell для просмотра отслеживаемых событий рабочих процессов в базе данных наблюдения AppFabric.

Отображение данных наблюдения с помощью Windows PowerShell

Чтобы просмотреть экземпляры WF для службы OrderWorkflowService, развернутой вместе с приложением службы заказов

  1. Выполните файл OrderClient.exe, расположенный в каталоге C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug. Построение этого файла рассматривалось в разделе Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell. Чтобы выполнить этот файл, можно скопировать в командную строку Windows PowerShell приведенную ниже команду.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этой строки экземпляр OrderWorkflowService моделирует обработку заказа.

  3. Обратите внимание на время, чтобы потом сопоставить его со временем создания экземпляра рабочего процесса.

  4. Чтобы отобразить экземпляры рабочих процессов службы 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, чтобы отображались только необходимые свойства рабочего процесса.

  5. Убедитесь, что выполнение команды привело к созданию списка экземпляров рабочих процессов, который выглядит аналогично приведенному ниже.

    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 :
    

    Эти данные можно использовать для отслеживания состояния и исключений экземпляров.

  6. Найдите экземпляр, значение CreationTime для которого равнялось бы времени, которое было отмечено на шаге 3.

Управление экземплярами рабочих процессов с помощью Windows PowerShell

В этом разделе будет приостановлен, возобновлен и остановлен экземпляр рабочего процесса.

  1. Повторно выполните OrderClient.exe, чтобы получить работающий экземпляр службы. Файл OrderClient может быть запущен в среде Windows PowerShell с помощью приведенной ниже команды.

    C:\DublinTutorial\OrderServiceSolution\Completed\OrderClient\bin\Debug\OrderClient.exe
    
  2. Нажмите кнопку Submit (Отправить) на форме заказа Order Form сайта Contoso.com. Убедитесь, что в разделе состояния, расположенном в нижней части формы, отображается строка Your order has been received (Ваш заказ получен), затем продолжите работу. После отображения этой строки экземпляр OrderWorkflowService моделирует обработку заказа.

  3. Обратите внимание на время, чтобы потом сопоставить его со временем создания экземпляра рабочего процесса.

  4. Чтобы отобразить экземпляры рабочих процессов службы OrderWorkflowService с помощью командлетов AppFabric, выполните приведенную ниже команду в командной строке Windows PowerShell.

    Get-ASAppServiceInstance -SiteName "OrderService_PS" -VirtualPath "/OrderWorkflowService/OrderWorkflow.xamlx" –Status Running | fl InstanceId, Status, Condition, CreationTime, LastUpdateTime, SiteName, VirtualPath, ExceptionMessage
    
  5. Убедитесь, что выполнение команды привело к созданию списка экземпляров рабочих процессов, который выглядит аналогично приведенному ниже.

    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 :
    
  6. Найдите экземпляр, значение CreationTime которого равняется времени, отмеченному на шаге 3. Выделите значение идентификатора GUID для InstanceId. Для этого нажмите левую кнопку мыши и, удерживая ее, проведите курсором по идентификатору GUID.

  7. После выделения всего идентификатора GUID, щелкните правой кнопкой мыши в пределах выделенного идентификатора, чтобы скопировать его в буфер обмена.

  8. Чтобы приостановить работающий экземпляр рабочего процесса с идентификатором InstanceId, размещенным в буфере обмена, выполните следующую команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Suspend-ASAppServiceInstance
    

    Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Suspend-ASAppServiceInstance для приостановки рабочего процесса.

  9. Чтобы возобновить рабочий процесс, выполните приведенную ниже команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Resume-ASAppServiceInstance
    

    Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Resume-ASAppServiceInstance для возобновления приостановленного рабочего процесса.

  10. Чтобы остановить и завершить работу экземпляра, выполните приведенную ниже команду, заменив указанный в ней идентификатор GUID на скопированное значение InstanceId.

    Get-ASAppServiceInstance -InstanceId 95a25419-0d71-42c4-ab70-aa523ba603fc | Stop-ASAppServiceInstance -Terminate
    

    Эта команда получает экземпляр рабочего процесса по указанному значению InstanceId и передает его по конвейеру в командлет Stop-ASAppServiceInstance для остановки и прекращения работы рабочего процесса.

Просмотр отслеживаемых событий WF с помощью Windows PowerShell

На основе уровня наблюдения и профиля отслеживания, настроенного для рабочего процесса, можно отслеживать множество точек данных в рабочем процессе. Задан уровень наблюдения HealthMonitoring с помощью командлета Set-ASAppMonitoring на Урок 3. Настройка службы заказов с помощью Windows PowerShell. В этом разделе будет создан отчет о событиях WF, отслеживаемых в этом экземпляре. Чтобы отобразить эти данные, следует опять использовать функции сценария, добавленные в модуль сценария Utility.ps1.

  1. В среде Windows PowerShell введите следующую команду для открытия файла сценария Utility.ps1.

    Notepad .\Utility.ps1
    
  2. Скопируйте и вставьте следующую функцию сценария в блокнот, в самый низ сценария 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 для идентификации рабочего процесса, связанного с событиями.

  3. Закройте блокнот и нажмите кнопку Сохранить для сохранения изменений в файл Utility.ps1.

  4. В среде Windows PowerShell выполните следующую команду для импорта новых изменений из файла Utility.ps1 в сеанс Windows PowerShell.

    Import-Module .\Utility.ps1
    
  5. Введите в командной строке Windows PowerShell следующую команду, чтобы использовать новую функцию сценария для запроса событий рабочих процессов, зарегистрированных в базе данных наблюдения и имеющих отношение к рассматриваемому экземпляру рабочего процесса. Не забудьте заменить приведенный ниже идентификатор GUID на нужный идентификатор экземпляра.

    GetWFEvents 95a25419-0d71-42c4-ab70-aa523ba603fc OrderService_PS
    
  6. Выходными данными в окне 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. Начало работы с командлетами Windows Server AppFabric для Windows PowerShell
Урок 2. Развертывание приложения службы заказов с помощью Windows PowerShell
Урок 3. Настройка службы заказов с помощью Windows PowerShell
Урок 5. Отслеживание рабочего процесса с помощью Windows PowerShell

  2011-12-05