Azure 진단(SDK 2.0)의 주요 변경 사항

업데이트 날짜: 2015년 11월

Microsoft Azure SDK for .NET 버전 2.0의 Microsoft Azure 진단 라이브러리(Microsoft.WindowsAzure.Diagnostics.dll)에는 라이브러리 버전 1.8 이후의 주요 변경 내용이 포함되어 있습니다. Microsoft Azure 진단 클라이언트 라이브러리가 업데이트되어 더 이상 저장소 클라이언트 라이브러리 버전 1.7에 대한 종속성이 포함되지 않으므로 코드를 변경해야 할 수 있습니다. 이 변경으로 인해 응용 프로그램이 최신 버전의 저장소 클라이언트 라이브러리를 보다 쉽게 사용할 수 있습니다. 이 항목에서는 버전 1.8과 2.0 간에 변경된 사항에 대해 설명하고, 기존 응용 프로그램을 버전 2.0 릴리스로 마이그레이션하는 데 도움이 되는 팁을 제공합니다.

Microsoft.WindowsAzure.DiagnosticsMicrosoft.WindowsAzure.Diagnostics.Management API에서 저장소 클라이언트 라이브러리에 대한 종속성이 제거되었습니다. 응용 프로그램과 연결된 Microsoft Azure 저장소 계정, 즉 응용 프로그램 진단 구성이 저장되는 저장소 계정을 지정하기 위해 여러 메서드에서 CloudStorageAccount 개체를 사용할 수 있었습니다. 이러한 메서드는 이제 저장소 계정을 지정하기 위해 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 개체를 사용하여 특정 역할에 포함된 모든 인스턴스의 진단 구성을 원격으로 변경합니다. 저장되는 구성 변경 내용 및 수집을 위해 성능 카운터 두 개를 사용하도록 설정됩니다. 이 예제에서는 Microsoft.WindowsAzure.Diagnostics.dll 어셈블리 버전 1.8을 사용하며 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);
}

표시: