Критические изменения в системе диагностики пакета Azure (SDK 2.0)

Критические изменения в системе диагностики пакета Azure (SDK 2.0)

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

Библиотека диагностики Azure (Microsoft.WindowsAzure.Diagnostics.dll) в пакете SDL Azure для .NET версии 2.0 включает в себя критические изменения из версии 1.8 библиотеки. Клиентская библиотека диагностики Azure обновлена и больше не зависит от клиентской библиотеки хранилища версии 1.7. Это изменение облегчает использование новых версий клиентской библиотеки хранилища для приложения. В этом разделе изложены сведения о том, какие изменения произошли при переходе от версии 1.8 к версии 2.0 клиентской библиотеки хранилища (SCL), и рекомендации по миграции, которые помогут перевести существующие приложения на использование версии 2.0.

Удалены зависимости клиентской библиотеки хранилища из API Microsoft.WindowsAzure.Diagnostics и Microsoft.WindowsAzure.Diagnostics.Management. Некоторые методы принимали объект CloudStorageAccount в качестве входного параметра для указания учетной записи хранения Azure, связанной с приложением (учетная запись хранения, где хранится конфигурация диагностики приложений). Эти методы были заменены на новые методы, которые теперь принимают строку подключения вместо объекта CloudStorageAccount для указания учетной записи для хранения.

Следующая таблица показывает соответствие между устаревшими и новыми методами в пространстве имен Microsoft.WindowsAzure.Diagnostics.Management:

 

Версия 1.8 (устаревшая) Версия 2.0 (новая)

CloudAccountDiagnosticMonitorExtensions.CreateDeploymentDiagnosticManager(this CloudStorageAccount storageAccount,string deploymentId)

CreateDeploymentDiagnosticManager

CloudAccountDiagnosticMonitorExtensions.CreateRoleInstanceDiagnosticManager(this CloudStorageAccount storageAccount, string deploymentId, string roleName, string roleInstanceId)

CreateRoleInstanceDiagnosticManager

OnDemandTransferInfo.FromQueueMessage(CloudQueueMessage queueMessage)

FromQueueMessage

DeploymentDiagnosticManager.DeploymentDiagnosticManager(CloudStorageAccount storageAccount, string deploymentId)

DeploymentDiagnosticManager

RoleInstanceDiagnosticManager(CloudStorageAccount storageAccount, string deploymentId, string roleName, string roleInstanceId)

RoleInstanceDiagnosticManager

Следующая таблица показывает соответствие между устаревшими и новыми методами в пространстве имен Microsoft.WindowsAzure.Diagnostics :

Microsoft.WindowsAzure.Diagnostics

Версия 1.8 (устаревшая) Версия 2.0 (новая)

DiagnosticMonitor.Start(CloudStorageAccount storageAccount, DiagnosticMonitorConfiguration initialConfiguration)

StartWithConnectionString

DiagnosticMonitor.UpdateStorageAccount(CloudStorageAccount storageAccount)

UpdateStorageAccount

В следующем примере удаленно изменяется конфигурация диагностики для всех экземпляров в конкретной роли, используя объект DeploymentDiagnosticManager. Для сбора и сохранения изменений в конфигурации добавлены два счетчика производительности. В этом примере используется версия 1.8 сборки Microsoft.WindowsAzure.Diagnostics.dll и конструктор DeploymentDiagnosticManager принимает объект CloudStorageAccount в качестве входного параметра. Объект CloudStorageAccount используется для указания учетной записи хранения, где хранится конфигурация диагностики приложения.

// Get the connection string. It's recommended that you store the connection string in 
// your web.config or app.config file. Use the ConfigurationManager type to retrieve your 
// storage connection string.  You can find the account name and key in the Windows Azure 
// Management Portal (http://manage.windowsazure.com).
//string connectionString = "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>";
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;

// The deployment ID and role name for your application can be obtained from the Windows 
// Azure Management Portal (http://manage.windowsazure.com). See your application dashboard 
// under Cloud Services.
string deploymentID = "2f10410d4a194b0fa8863365674828ba";
string roleName = "WebRole1";

CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);

// Get the DeploymentDiagnosticManager object for your deployment.
DeploymentDiagnosticManager diagManager = new DeploymentDiagnosticManager(storageAccount, deploymentID);

// Get the RoleInstanceDiagnosticManager object for each instance of your role.
IEnumerable<RoleInstanceDiagnosticManager> instanceManagers = diagManager.GetRoleInstanceDiagnosticManagersForRole(roleName);

// Add a performance counter for processor time.
PerformanceCounterConfiguration pccCPU = new PerformanceCounterConfiguration();
pccCPU.CounterSpecifier = @"\Processor(_Total)\% Processor Time";
pccCPU.SampleRate = perfSampleRate;

// Add a performance counter for available memory.
PerformanceCounterConfiguration pccMemory = new PerformanceCounterConfiguration();
pccMemory.CounterSpecifier = @"\Memory\Available Mbytes";
pccMemory.SampleRate = perfSampleRate;

// Iterate through the role instances and update the configuration.
foreach (var roleInstance in instanceManagers)
{
   DiagnosticMonitorConfiguration currentConfiguration = roleInstance.GetCurrentConfiguration();

   currentConfiguration.PerformanceCounters.DataSources.Add(pccCPU);
   currentConfiguration.PerformanceCounters.DataSources.Add(pccMemory);

   //Update the configuration
   roleInstance.SetCurrentConfiguration(currentConfiguration);
}

Ниже показан предыдущий пример, переписанный для использования сборки Microsoft.WindowsAzure.Diagnostics.dll версии 2.0. Конструктор DeploymentDiagnosticManager теперь принимает строку подключения к учетной записи хранения вместо объекта CloudStorageAccount.

// Get the connection string. It's recommended that you store the connection string in 
// your web.config or app.config file. Use the ConfigurationManager type to retrieve your 
// storage connection string.  You can find the account name and key in the Windows Azure 
// Management Portal (http://manage.windowsazure.com).
//string connectionString = "DefaultEndpointsProtocol=https;AccountName=<AccountName>;AccountKey=<AccountKey>";
string connectionString = System.Configuration.ConfigurationManager.ConnectionStrings["StorageConnectionString"].ConnectionString;

// The deployment ID and role name for your application can be obtained from the Windows 
// Azure Management Portal (http://manage.windowsazure.com).  See your application dashboard 
// under Cloud Services.
string deploymentID = "e2ab8b6667644666ba627bdf6f5e4daa";
string roleName = "WebRole1";

// Get the DeploymentDiagnosticManager object for your deployment.
DeploymentDiagnosticManager diagManager = new DeploymentDiagnosticManager(connectionString, deploymentID);

// Get the RoleInstanceDiagnosticManager object for each instance of your role.
IEnumerable<RoleInstanceDiagnosticManager> instanceManagers = diagManager.GetRoleInstanceDiagnosticManagersForRole(roleName);

// Use 45 seconds for the performance counter sample rate.
TimeSpan perfSampleRate = TimeSpan.FromSeconds(45.0);

// Add a performance counter for processor time.
PerformanceCounterConfiguration pccCPU = new PerformanceCounterConfiguration();
pccCPU.CounterSpecifier = @"\Processor(_Total)\% Processor Time";
pccCPU.SampleRate = perfSampleRate;

// Add a performance counter for available memory.
PerformanceCounterConfiguration pccMemory = new PerformanceCounterConfiguration();
pccMemory.CounterSpecifier = @"\Memory\Available Mbytes";
pccMemory.SampleRate = perfSampleRate;

// Iterate through the role instances and update the configuration.
foreach (RoleInstanceDiagnosticManager roleInstance in instanceManagers)
{
   DiagnosticMonitorConfiguration currentConfiguration = roleInstance.GetCurrentConfiguration();

   currentConfiguration.PerformanceCounters.DataSources.Add(pccCPU);
   currentConfiguration.PerformanceCounters.DataSources.Add(pccMemory);

   roleInstance.SetCurrentConfiguration(currentConfiguration);
}

Показ:
© 2016 Microsoft