I frequently need to Enable and configure collecting performance counters remotely in my windows azure deployment,  There are a few tasks you are trying to accomplish

1- Get all roles you have for your deployment

2- Get the Diagnostics manager associated with each instance of each role

3- Set your Windows Azure Diagnostics Settings. 

I created the following helper class to make it easier for me, hope you find it useful:)

   1:          #region Default Counters
   2:          static string[] defaultCounterNames = new string[] 
   3:          {
   4:              @"\Memory\Available Mbytes", 
   5:              @"\Processor(_Total)\% Processor Time", 
   6:              @"\Processor(*)\% Processor Time",
   7:              @"\Process(*)\Working Set",
   8:              @"\Process(*)\Private Bytes",
   9:              @"\Process(*)\Working Set Peak",
  10:              @"\Process(*)\Virtual Bytes",
  11:              @"\Process(*)\Virtual Bytes Peak"
  12:          };
  13:          #endregion
  14:   
  15:          public static void SetState(string connectionString, string deploymentId , int sampleRateInSeconds, int transferPeriodInSeconds, string[] counterNames = null)
  16:          {
  17:              if (counterNames == null || counterNames.Length == 0)
  18:              {
  19:                  counterNames = defaultCounterNames;
  20:              }
  21:              
  22:              CloudStorageAccount cloudStorageAccount = CloudStorageAccount.Parse(connectionString);
  23:              
  24:              //TODO: Need to remove this if HTTPS is enabled - this allows connecting though http, otherwise the connection will fail.
  25:              DeploymentDiagnosticManager.AllowInsecureRemoteConnections = true;
  26:              
  27:              //Get the diagnostis manager associated with this blob storage.
  28:              DeploymentDiagnosticManager deploymentDiagnosticsManager = new DeploymentDiagnosticManager(cloudStorageAccount, deploymentId);
  29:              
  30:              //Get the role instance diagnostics manager for all instance of the a role
  31:              var roles = deploymentDiagnosticsManager.GetRoleNames();
  32:              foreach (string item in roles)
  33:              {
  34:                  //Get the Role instance Diagnostics manager for each instance. and use it to enable data collection
  35:                  var roleInstanceManagers = deploymentDiagnosticsManager.GetRoleInstanceDiagnosticManagersForRole(item);
  36:                  RoleInstanceDiagnosticManager.AllowInsecureRemoteConnections = true;
  37:                  Console.Out.WriteLine("Getting Diagnostics Managers for Azure Role '{0}'", item);
  38:   
  39:                  //Set the new diagnostic monitor configuration for each instance of the role 
  40:                  foreach (var ridmN in roleInstanceManagers)
  41:                  {
  42:                      Console.Out.WriteLine("\tEnabling counters on instance {0} of role {1}", ridmN.RoleInstanceId, ridmN.RoleName);
  43:   
  44:                      EnableCounters(sampleRateInSeconds, transferPeriodInSeconds, counterNames, ridmN);
  45:                   }
  46:              }
  47:          }

  This is the code that enables the counters for each role instance:

   1:  private static void EnableCounters(int sampleRateInSeconds, int transferPeriodInSeconds, string[] counterNames, RoleInstanceDiagnosticManager ridmN)
   2:          {
   3:              DiagnosticMonitorConfiguration dmc = ridmN.GetCurrentConfiguration();// Depending on what you are trying to fo this can be DiagnosticMonitor.GetDefaultInitialConfiguration();
   4:                     
   5:              counterNames.ToList<String>().ForEach(counterName =>
   6:              {
   7:                  string counterNameTrimmed = counterName.Trim();
   8:                  if (!string.IsNullOrEmpty(counterNameTrimmed))
   9:                  {
  10:                      PerformanceCounterConfiguration pcc = new PerformanceCounterConfiguration();
  11:                      pcc.CounterSpecifier = counterNameTrimmed;
  12:                      pcc.SampleRate = TimeSpan.FromSeconds(sampleRateInSeconds);
  13:                      dmc.PerformanceCounters.DataSources.Add(pcc);
  14:                      Console.Out.WriteLine("\t\tCounter {0} Sample Rate {1} seconds", counterName, sampleRateInSeconds);
  15:                  }
  16:              });
  17:              
  18:              dmc.PerformanceCounters.ScheduledTransferPeriod = TimeSpan.FromSeconds(transferPeriodInSeconds);
  19:              ridmN.SetCurrentConfiguration(dmc);
  20:          }