다음을 통해 공유


Azure Cosmos DB에서 인사이트를 사용하여 모니터링 및 디버그

적용 대상: NoSQL MongoDB Cassandra Gremlin 테이블

Azure Cosmos DB는 처리량, 스토리지, 일관성, 가용성 및 대기 시간에 대한 인사이트를 제공합니다. Azure Portal은 이러한 메트릭의 집계 보기를 제공합니다. Azure Monitor API에서 Azure Cosmos DB 메트릭을 볼 수도 있습니다. 컨테이너 이름과 같은 메트릭의 차원 값은 대/소문자를 구분하지 않습니다. 따라서 해당 차원 값의 문자열 비교를 수행할 때는 대/소문자를 구분하지 않는 비교를 사용해야 합니다. Azure Monitor에서 메트릭을 보는 방법을 알아보려면 Azure Cosmos DB 모니터링을 참조하세요.

이 문서에서는 일반적인 사용 사례와 Azure Cosmos DB 인사이트를 사용하여 이러한 문제를 분석 및 디버그할 수 있는 방법을 안내합니다. 기본적으로 메트릭 인사이트는 5분마다 수집되고 7일 동안 유지됩니다.

다음 섹션에서는 Azure Cosmos DB 메트릭을 사용할 수 있는 일반적인 시나리오에 대해 설명합니다.

참고 항목

메트릭의 데이터베이스 또는 컬렉션별로 필터링할 때 resourceName으로 "__Empty" 또는 "<비어> 있음"이 표시되었을 수 있습니다. 메트릭 데이터가 특정 요청에 대한 계정 수준에서 수집되기 때문입니다. 따라서 메트릭 값으로 연결된 데이터베이스 또는 컬렉션이 없습니다.

성공한 요청 수 또는 오류가 발생하는 요청 수 이해

시작하려면 Azure Portal에서 Insights 창으로 이동합니다. 이 창에서 요청 탭을 엽니다. 요청 탭에는 총 요청 수가 상태 코드 및 작업 유형별로 분할되어 나와 있는 차트가 표시됩니다. HTTP 상태 코드에 대한 자세한 내용은 Azure Cosmos DB에 대한 HTTP 상태 코드를 참조하세요.

가장 일반적인 오류 상태 코드는 429입니다(속도 제한/제한). 이 오류는 Azure Cosmos DB에 대한 요청이 프로비전된 처리량보다 더 많은 것을 의미합니다. 이 문제에 대한 가장 일반적인 솔루션은 지정된 컬렉션에 대한 RU를 스케일 업하는 것입니다. 자세한 내용은 Azure Cosmos DB의 프로비전된 처리량 소개를 참조하세요.

상태 코드별 총 요청 수, 제한된 요청 수, 작업 유형별 총 요청 수를 보여주는 스크린샷.

파티션 키 범위별로 처리량 사용량 확인

파티션 키의 좋은 카디널리티 사용은 확장 가능한 모든 애플리케이션에 필요합니다. 모든 분할된 컨테이너의 처리량 배포를 파티션 키 범위 ID로 분석하여 확인하려면 인사이트 창으로 이동합니다. 처리량 탭을 엽니다. 서로 다른 파티션 키 범위에서 정규화된 RU/s 사용량이 차트에 표시됩니다.

RU/s 사용량을 보여주는 처리량 탭의 스크린샷.

이 차트를 통해 핫 파티션이 있는지 확인할 수 있습니다. PartitionKeyRangeID는 실제 파티션에 해당합니다. 정규화된 RU 소비 메트릭은 데이터베이스 또는 컨테이너에서 프로비전된 처리량의 사용률을 측정하는 데 도움이 되는 0%에서 100% 사이의 값입니다. 불균등 처리량 배포 시 파티션이 발생할 수 있고, 이로 인해 제한된 요청이 초래되고 다시 분할해야 할 수도 있습니다. 배포 불균등을 초래하는 파티션 키를 식별한 후 더 많이 배포된 파티션 키로 컨테이너를 다시 분할해야 할 수도 있습니다. Azure Cosmos DB의 분할에 대한 자세한 내용은 Azure Cosmos DB의 분할 및 수평 크기 조정을 참조하세요.

데이터 및 인덱스 사용량 확인

데이터 사용량, 인덱스 사용량 및 문서 사용량에 따라 분할된 컨테이너의 스토리지 배포를 결정하는 것이 중요합니다. 인덱스 사용량을 최소화하고, 데이터 사용량을 최대화하고, 쿼리를 최적화할 수 있습니다. 이 데이터를 가져오려면 인사이트 창으로 이동하여 스토리지 탭을 엽니다.

스토리지 탭이 강조 표시된 Insights 창의 스크린샷.

데이터 크기 및 인덱스 크기 비교

Azure Cosmos DB에서 사용된 총 스토리지는 데이터 크기와 인덱스 크기의 조합입니다. 일반적으로 인덱스 크기는 데이터 크기의 비율입니다. 자세한 내용은 인덱스 크기 문서를 참조하세요. Azure Portal의 메트릭 창에 있는 스토리지 탭에는 스토리지 사용량이 데이터 및 인덱스에 따라 분석되어 표시됩니다.

// Measure the document size usage (which includes the index size)  
ResourceResponse<DocumentCollection> collectionInfo = await client.ReadDocumentCollectionAsync(UriFactory.CreateDocumentCollectionUri("db", "coll"));
 Console.WriteLine("Document size quota: {0}, usage: {1}", collectionInfo.DocumentQuota, collectionInfo.DocumentUsage);

인덱스 공간을 절약하려는 경우 인덱싱 정책을 조정할 수 있습니다.

느린 쿼리 디버그

API for NoSQL SDK에서 Azure Cosmos DB는 쿼리 실행 통계를 제공합니다.

IDocumentQuery<dynamic> query = client.CreateDocumentQuery(
 UriFactory.CreateDocumentCollectionUri(DatabaseName, CollectionName),
 "SELECT * FROM c WHERE c.city = 'Seattle'",
 new FeedOptions
 {
 PopulateQueryMetrics = true,
 MaxItemCount = -1,
 MaxDegreeOfParallelism = -1,
 EnableCrossPartitionQuery = true
 }).AsDocumentQuery();
FeedResponse<dynamic> result = await query.ExecuteNextAsync();

// Returns metrics by partition key range Id
IReadOnlyDictionary<string, QueryMetrics> metrics = result.QueryMetrics;

QueryMetrics는 쿼리의 각 구성 요소를 실행하는 데 걸린 기간에 대한 세부 정보를 제공합니다. 장기 실행 쿼리에 대한 가장 일반적인 근본 원인은 검색이며 쿼리에서 인덱스를 적용할 수 없음을 의미합니다. 더 나은 필터 조건을 사용하여 이 문제를 해결할 수 있습니다.

컨트롤 플레인 요청 모니터링

Azure Cosmos DB는 연속 5분 간격으로 수행할 수 있는 메타데이터 요청 수에 제한을 적용합니다. 이러한 제한을 초과한 컨트롤 플레인 요청에는 제한이 발생할 수 있습니다. 메타데이터 요청은 경우에 따라 계정의 모든 메타데이터를 포함하는 계정 내의 master partition에 대한 처리량을 사용할 수 있습니다. 처리량을 초과하는 컨트롤 플레인 요청에는 속도 제한(429초)이 발생합니다.

시작하려면 Azure Portal에서 Insights 창으로 이동합니다. 이 창에서 시스템 탭을 엽니다. 시스템 탭에는 두 개의 차트가 표시됩니다. 계정에 대한 모든 메타데이터 요청을 보여 주는 요청입니다. 두 번째는 계정의 메타데이터를 저장하는 계정의 master partition에서 메타데이터 요청 처리량 사용을 보여 줍니다.

시스템 탭의 메타데이터 요청 그래프가 강조 표시된 Insights 창의 스크린샷.

시스템 탭의 메타데이터 요청 429 그래프가 강조 표시된 Insights 창의 스크린샷.

위의 상태 코드별 메타데이터 요청 그래프는 시간 범위를 늘리면 요청을 세분화하여 집계합니다. 5분 동안 사용할 수 있는 최대 시간 범위는 4시간입니다. 특정 세분성을 사용하여 더 큰 시간 범위에 걸쳐 메타데이터 요청을 모니터링하려면 Azure 메트릭을 사용합니다. 새 차트를 만들고 메타데이터 요청 메트릭을 선택합니다. 아래와 같이 오른쪽 위 모서리에서 시간 세분성에 대해 5분을 선택합니다. 또한 메트릭을 사용하면 사용자가 경고를 만들 수 있으므로 Insights보다 유용하게 사용할 수 있습니다.

계정에 대한 메타데이터 요청과 5분의 시간 세분성이 강조된 메트릭 창의 스크린샷.

다음 단계

다음 문서를 참조하여 데이터베이스 성능 개선에 대해 자세히 알아볼 수 있습니다.