Wednesday, February 2, 2011

Azure Diagnostics Monitoring

Do you want to change the diagnostic level or other diagnostic configuration settings in Azure at runtime?  Doing this is very easy thanks to the DeploymentDiagnosticManager class .(See http://msdn.microsoft.com/en-us/library/ee830424.aspx )

To remotely change the configuration

  1. Create a small console application.

  2. Add a referenceMicrosoft.WindowsAzure.Diagnostics.dll file .

  3. Create a CloudStorageAccount instance.

    var storageAccount = CloudStorageAccount.Parse("DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey");
  4. Create an instance of the DeploymentDiagnosticManager. :

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

    The<DeploymentID> can be found on the Azure Management Portal.

  5. Create a role instance diagnostic manager.

    var instanceManagers = diagManager.GetRoleInstanceDiagnosticManagersForRole("<RoleName>");
    

    The <RoleName> can be found on the Azure Management Portal.

  6. Specify the configuration information that you want to change. The following code example shows how to set performance counter information:

    PerformanceCounterConfiguration pccCPU = new PerformanceCounterConfiguration();
    pccCPU.CounterSpecifier = @"\Processor(_Total)\% Processor Time";
    pccCPU.SampleRate = TimeSpan.FromSeconds(5);
    
    PerformanceCounterConfiguration pccMemory = new PerformanceCounterConfiguration();
    pccMemory.CounterSpecifier = @"\Memory\Available Mbytes";
    pccMemory.SampleRate = TimeSpan.FromSeconds(5);
    
  7. Change the configuration for each instance of the role. The following code example shows how to iterate through the role instances and change 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);
    }
    
  8. Save and build the project.

1 comment:

home alarm monitoring said...

awesome information. Thanks for sharing.