Передача данных по требованию

Обновлено: Ноябрь 2015 г.

С помощью классов в Microsoft.WindowsAzure.Diagnostics.Management можно передавать диагностические данные по требованию. Передать данные по требованию можно из кода, запущенного в рамках роли, из другого приложения, работающего в Windows Azure, или из приложения вне среды Windows Azure. Перед выполнением действий, описанных в этом разделе, необходимо инициализировать монитор диагностики и указать учетную запись хранения, которая будет использоваться. Сведения об этом см. в разделе Включение диагностики в Windows Azure.

Если вы выполняете передачу по требованию из кода, который выполняется вне Windows Azure, необходимо получить идентификатор развертывания, имя роли и имя экземпляра роли для вашего приложения, вручную записав их с портала.

  1. Войдите на портал.

  2. Щелкните Службы среды выполнения приложений, а затем разверните узел вашего приложения.

  3. Щелкните развертывание для приложения.

  4. Запишите значение поля Идентификатор на панели Свойства. Это идентификатор развертывания размещенной службы.

  5. Разверните узел развертывания и выберите узел для роли, из которой нужно собирать диагностические данные.

  6. Запишите значение поля Имя на панели Свойства. Это имя роли.

  7. Разверните роль узла, а затем выберите узел экземпляра роли.

  8. Запишите значение поля Имя на панели Свойства. Это идентификатор экземпляра роли.

Если требуется передать данные по требованию из выполняемой роли, можно использовать свойства класса RoleInstanceDiagnosticManager.

  1. Откройте исходный файл программы, которая используется для передачи данных.

  2. Убедитесь, что проект ссылается на файл Microsoft.WindowsAzure.Diagnostics.dll и следующие инструкции using добавлены в файл.

    
    using Microsoft.WindowsAzure.Diagnostics; 
    using Microsoft.WindowsAzure.Diagnostics.Management;
    
    
  3. Получите учетные данные хранилища из конфигурации. В следующем примере кода показано применение метода Parse для получения учетных данных:

    var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=<AccountKey>");
    

    Дополнительные сведения об использовании строк подключения см. в разделе How to Configure Connection Strings.

  4. Создайте экземпляр класса DeploymentDiagnosticManager. В следующем примере кода показано создание нового экземпляра с помощью объекта учетной записи хранения и идентификатора развертывания:

    
    var diagManager = new DeploymentDiagnosticManager(storageAccount, "<DeploymentID>"); 
    
    

    <DeploymentID> — это значение, которое вы получили в предыдущей процедуре.

  5. Создание диспетчера диагностики экземпляра роли В следующем примере кода показано создание этого диспетчера диагностики:

    var roleInstDiagMgr = diagManager.GetRoleInstanceDiagnosticManager("<RoleName>", "<RoleInstanceID>");
    

    <RoleName> и <RoleInstanceID> — это значения, полученные в предыдущей процедуре.

  6. Укажите журналы, которые необходимо передать. В следующем примере кода показано, как передавать журналы Windows Azure:

    DataBufferName dataBuffersToTransfer = DataBufferName.Logs;
    

    Сведения о буферах данных, которые можно добавить, см. в разделе DataBufferName.

  7. Укажите параметры передачи. В следующем примере кода показано, как передать записи за период начиная с трех часов назад до текущего времени:

    
    OnDemandTransferOptions transferOptions = new OnDemandTransferOptions();
    transferOptions.NotificationQueueName = "wad-on-demand-transfers";
    var timeInterval = new TimeSpan(3, 0, 0);
    transferOptions.From = DateTime.UtcNow.Subtract(timeInterval);
    transferOptions.To = DateTime.UtcNow;
    
    

    Дополнительные сведения о параметрах передачи см. в разделе OnDemandTransferOptions.

  8. Запрос передачи данных. В следующем примере кода показано, как начать передачу данных, используя заданные буферы данных и параметры передачи:

    Guid requestID = roleInstDiagMgr.BeginOnDemandTransfer(dataBuffersToTransfer, transferOptions);
    

См. также

Показ: