Exportar (0) Imprimir
Expandir Tudo

Alterações que causam interrupções no Diagnóstico do Azure (SDK 2.0)

Atualizado: dezembro de 2014

A biblioteca de diagnóstico do Windows Azure (Microsoft.WindowsAzure.Diagnostics.dll) no SDK do Windows Azure para .NET versão 2.0 inclui alterações que causam interrupções na versão 1.8 da biblioteca. A biblioteca cliente de Diagnóstico do Windows Azure foi atualizada e não depende mais da Biblioteca Cliente de Armazenamento versão 1.7 e pode exigir alterações no seu código. Essa alteração torna mais fácil para seu aplicativo usar versões mais recentes da Biblioteca Cliente de Armazenamento. Este tópico fornece informações sobre o que mudou entre as versões 1.8 e 2.0 e dicas para ajudá-lo a migrar aplicativos existentes para a versão 2.0.

Dependências da Biblioteca Cliente de Armazenamento foram removidas das APIs Microsoft.WindowsAzure.Diagnostics e Microsoft.WindowsAzure.Diagnostics.Management. Vários métodos aceitam um objeto CloudStorageAccount como um parâmetro de entrada para especificar a conta de armazenamento do Windows Azure associada ao seu aplicativo (a conta de armazenamento onde a configuração de diagnóstico de aplicativos está armazenada). Esses métodos foram substituídos por novos métodos que aceitam agora uma cadeia de conexão em vez de um objeto CloudStorageAccount para especificar a conta de armazenamento.

A tabela a seguir mostra o mapeamento entre os métodos substituídos e novos no namespace Microsoft.WindowsAzure.Diagnostics.Management:

 

Versão 1.8 (substituída) Versão 2.0 (nova)

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

A tabela a seguir mostra o mapeamento entre os métodos substituídos e novos no namespace Microsoft.WindowsAzure.Diagnostics :

Microsoft.WindowsAzure.Diagnostics

Versão 1.8 (substituída) Versão 2.0 (nova)

DiagnosticMonitor.Start(CloudStorageAccount storageAccount, DiagnosticMonitorConfiguration initialConfiguration)

StartWithConnectionString

DiagnosticMonitor.UpdateStorageAccount(CloudStorageAccount storageAccount)

UpdateStorageAccount

O exemplo a seguir altera remotamente a configuração de diagnóstico de todas as instâncias em uma função específica usando um objeto DeploymentDiagnosticManager. Dois contadores de desempenho estão habilitados para coleta e as alterações de configuração salvas. Este exemplo usa a versão 1.8 do assembly Microsoft.WindowsAzure.Diagnostics.dll e o construtor DeploymentDiagnosticManager aceita um objeto CloudStorageAccount como um parâmetro de entrada. O objeto CloudStorageAccount é usado para especificar a conta de armazenamento onde a configuração de diagnóstico do aplicativo está armazenada.

// 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);
}

A seguir está o exemplo anterior, reescrito para usar a versão 2.0 do assembly Microsoft.WindowsAzure.Diagnostics.dll. O construtor DeploymentDiagnosticManager agora aceita uma cadeia de conexão para a conta de armazenamento, em vez de um objeto 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);
}

Mostrar:
© 2015 Microsoft