Azure Monitor 메트릭 탐색기를 사용하여 다른 Azure 서비스의 메트릭과 함께 Azure Storage의 메트릭을 분석할 수 있습니다. Azure Monitor 메뉴에서 메트릭을 선택하여 메트릭 탐색기를 엽니다. 이 도구 사용에 대한 자세한 내용은 Azure Monitor 메트릭 탐색기를 사용하여 메트릭 분석을 참조하세요.
차원을 지원하는 메트릭의 경우 원하는 차원 값을 사용하여 메트릭을 필터링할 수 있습니다. Azure Storage에서 지원하는 차원의 전체 목록은 메트릭 차원을 참조하세요.
public static async Task ListStorageMetricDefinition()
{
var resourceId = "<resource-ID>";
var subscriptionId = "<subscription-ID>";
var tenantId = "<tenant-ID>";
var applicationId = "<application-ID>";
var accessKey = "<AccessKey>";
MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;
IEnumerable<MetricDefinition> metricDefinitions = await readOnlyClient.MetricDefinitions.ListAsync(resourceUri: resourceId, cancellationToken: new CancellationToken());
foreach (var metricDefinition in metricDefinitions)
{
// Enumerate metric definition:
// Id
// ResourceId
// Name
// Unit
// MetricAvailabilities
// PrimaryAggregationType
// Dimensions
// IsDimensionRequired
}
}
계정 수준 메트릭 값 읽기
다음 예제는 계정 수준에서 UsedCapacity 데이터를 읽는 방법을 보여줍니다.
public static async Task ReadStorageMetricValue()
{
var resourceId = "<resource-ID>";
var subscriptionId = "<subscription-ID>";
var tenantId = "<tenant-ID>";
var applicationId = "<application-ID>";
var accessKey = "<AccessKey>";
MonitorClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;
Microsoft.Azure.Management.Monitor.Models.Response Response;
string startDate = DateTime.Now.AddHours(-3).ToUniversalTime().ToString("o");
string endDate = DateTime.Now.ToUniversalTime().ToString("o");
string timeSpan = startDate + "/" + endDate;
Response = await readOnlyClient.Metrics.ListAsync(
resourceUri: resourceId,
timespan: timeSpan,
interval: System.TimeSpan.FromHours(1),
metricnames: "UsedCapacity",
aggregation: "Average",
resultType: ResultType.Data,
cancellationToken: CancellationToken.None);
foreach (var metric in Response.Value)
{
// Enumerate metric value
// Id
// Name
// Type
// Unit
// Timeseries
// - Data
// - Metadatavalues
}
}
다차원 메트릭 값 읽기
다차원 메트릭에서 특정 차원 값에 대한 메트릭 데이터를 읽으려면 메타데이터 필터를 정의해야 합니다.
다음 예제는 다차원을 지원하는 메트릭에서 메트릭 데이터를 읽는 방법을 보여줍니다.
public static async Task ReadStorageMetricValueTest()
{
// Resource ID for Azure Files
var resourceId = "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/{storageAccountName}/fileServices/default";
var subscriptionId = "<subscription-ID}";
// How to identify Tenant ID, Application ID and Access Key: https://azure.microsoft.com/documentation/articles/resource-group-create-service-principal-portal/
var tenantId = "<tenant-ID>";
var applicationId = "<application-ID>";
var accessKey = "<AccessKey>";
MonitorManagementClient readOnlyClient = AuthenticateWithReadOnlyClient(tenantId, applicationId, accessKey, subscriptionId).Result;
Microsoft.Azure.Management.Monitor.Models.Response Response;
string startDate = DateTime.Now.AddHours(-3).ToUniversalTime().ToString("o");
string endDate = DateTime.Now.ToUniversalTime().ToString("o");
string timeSpan = startDate + "/" + endDate;
// It's applicable to define meta data filter when a metric support dimension
// More conditions can be added with the 'or' and 'and' operators, example: BlobType eq 'BlockBlob' or BlobType eq 'PageBlob'
ODataQuery<MetadataValue> odataFilterMetrics = new ODataQuery<MetadataValue>(
string.Format("BlobType eq '{0}'", "BlockBlob"));
Response = readOnlyClient.Metrics.List(
resourceUri: resourceId,
timespan: timeSpan,
interval: System.TimeSpan.FromHours(1),
metricnames: "BlobCapacity",
odataQuery: odataFilterMetrics,
aggregation: "Average",
resultType: ResultType.Data);
foreach (var metric in Response.Value)
{
//Enumerate metric value
// Id
// Name
// Type
// Unit
// Timeseries
// - Data
// - Metadatavalues
}
}
워크로드 성능 모니터링
Azure Monitor를 사용하여 Azure Files를 활용하는 워크로드를 분석할 수 있습니다. 다음 단계를 수행합니다.
Azure Monitor에서 가용성 메트릭은 애플리케이션 또는 사용자 관점에서 문제가 눈에 띄게 잘못되었거나 경고 문제를 해결할 때 유용할 수 있습니다.
Azure Files에서 이 메트릭을 사용하는 경우 항상 집계를 최대 또는 최소가 아니라 평균으로 보는 것이 중요합니다. 평균을 사용하면 오류가 발생하는 요청의 비율과 해당 요청이 Azure Files에 대한 SLA 내에 있는지를 이해하는 데 도움이 됩니다.
대기 시간 모니터링
가장 중요한 두 가지 대기 시간 메트릭은 성공 E2E 대기 시간 및 성공 서버 대기 시간입니다. 이러한 메트릭은 성능 조사를 시작할 때 선택하는 이상적인 메트릭입니다. 평균은 권장 집계입니다. 앞에서 설명한 것처럼 최대와 최소는 경우에 따라 잘못된 결과를 가져올 수 있습니다.
다음 차트에서 파란색 선은 총 대기 시간(성공 E2E 대기 시간)에 소요되는 시간을 나타내고 분홍색 선은 Azure Files 서비스(성공 서버 대기 시간)에서만 소요된 시간을 나타냅니다.
이 차트는 온-프레미스 환경에서 Azure 파일 공유를 탑재한 클라이언트 컴퓨터의 예입니다. 이는 사무실, 집 또는 기타 원격 위치에서 연결하는 일반적인 사용자를 나타낼 수 있습니다. 클라이언트와 Azure 지역 간의 물리적 거리는 E2E와 서버 대기 시간 간의 차이를 나타내는 해당 클라이언트 쪽 대기 시간과 밀접한 상관 관계가 있음을 알 수 있습니다.
이에 비해 다음 차트는 클라이언트와 Azure 파일 공유가 모두 동일한 지역 내에 있는 상황을 보여 줍니다. 클라이언트 쪽 대기 시간은 첫 번째 차트의 43.9ms에 비해 0.17ms에 불과합니다. 이는 최적의 성능을 얻기 위해 클라이언트 쪽 대기 시간을 최소화해야 하는 이유를 보여 줍니다.
문제를 확인할 수 있는 또 다른 대기 시간 지표는 성공 서버 대기 시간의 빈도 증가 또는 비정상적인 스파이크입니다. 이는 일반적으로 표준 파일 공유에 대한 Azure Files 크기 제한 초과로 인해 또는 프로비전된 Azure Files 프리미엄 공유에 따른 제한 때문입니다.
전송되는 데이터 양(처리량) 또는 서비스 중인 작업(IOPS)을 측정하는 사용률 메트릭은 일반적으로 애플리케이션 또는 워크로드에서 수행되는 작업의 양을 결정하는 데 사용됩니다. 트랜잭션 메트릭은 다양한 시간 단위로 Azure Files 서비스에 대한 작업 또는 요청 수를 결정할 수 있습니다.
송신 또는 수신 메트릭을 사용하여 인바운드 또는 아웃바운드 데이터의 볼륨을 확인하는 경우 Sum 집계를 사용하여 1분에서 1일 시간 단위로 파일 공유와 주고받는 총 데이터 양을 결정합니다. 평균, 최대및 최소와 같은 다른 집계는 개별 I/O 크기의 값만 표시합니다. 따라서 대부분의 고객은 최대 집계를 사용할 때 일반적으로 1MiB를 볼 수 있습니다. 가장 크거나, 가장 작거나, 평균 I/O 크기를 이해하는 것이 유용할 수 있지만 워크로드의 사용 패턴에 의해 생성된 I/O 크기의 분포를 표시할 수는 없습니다.
응답 유형(성공, 실패, 오류) 또는 API 작업(읽기, 쓰기, 만들기, 닫기)에서 분할 적용을 선택하여 다음 차트와 같이 추가 세부 정보를 표시할 수도 있습니다.
워크로드의 평균 IOPS(초당 I/O)를 확인하려면 먼저 1분 동안 총 트랜잭션 수를 확인한 다음, 그 수를 60초로 나눕니다. 예를 들어 1분 동안 총 트랜잭션 수가 120,000인 경우 120,000을 60초로 나누면 평균 IOPS는 2,000개입니다.
워크로드의 평균 처리량을 확인하려면 수신 및 송신 메트릭(총 처리량)을 결합하여 전송된 총 데이터 크기를 가져와서 60초로 나눕니다. 예를 들어 1분 동안 총 처리량이 1GiB인 경우 1GiB를 60초로 나누면 평균 처리량은 17MiB 입니다.
최대 IOPS 및 대역폭별 사용률 모니터링(프리미엄만 해당)
Azure Premium 파일 공유는 프로비전하는 각 GiB의 스토리지 용량이 더 많은 IOPS 및 처리량을 제공하는 프로비전된 모델에 대해 청구되므로 최대 IOPS 및 대역폭을 결정하는 것이 유용한 경우가 많습니다. 처리량은 성공적으로 전송된 실제 데이터 양을 측정하는 반면 대역폭은 최대 데이터 전송 속도를 나타냅니다.
Azure Premium 파일 공유를 사용하면 최대 IOPS별 트랜잭션 및 최대 MiB/초별 메트릭 대역폭을 사용하여 사용량이 많은 시간에 워크로드가 달성한 작업을 표시할 수 있습니다. 이러한 메트릭을 사용하여 워크로드를 분석하면 대규모로 실제 기능을 이해하고, Azure Premium 파일 공유를 최적으로 프로비전할 수 있도록 더 많은 처리량 및 IOPS의 영향을 이해하는 기준을 설정하는 데 도움이 됩니다.
다음 차트는 1시간 동안 263만 개의 트랜잭션을 생성한 워크로드를 보여 줍니다. 263만 개의 트랜잭션을 3,600초로 나누면 평균 IOPS는 730입니다.
이제 평균 IOPS를 최대 IOPS별 트랜잭션과 비교하면 최대 부하에서 1,840개의 IOPS를 달성했음을 알 수 있습니다. 이는 워크로드의 대규모 기능을 더 잘 나타낸 것입니다.
메트릭 추가를 선택하여 단일 그래프에서 수신 및 송신 메트릭을 결합합니다. 이는 76.2GiB(78,028MiB)가 1시간 동안 전송되었으며, 이는 동일한 시간에 평균 21.67MiB의 처리량을 제공함을 나타냅니다.