논리 파티션 키의 스토리지가 20GB에 근접하는지 모니터링하는 경고 만들기

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

Azure Cosmos DB는 20GB의 최대 논리 파티션 키 크기를 적용합니다. 예를 들어 UserId로 파티션을 나눈 컨테이너/컬렉션이 있는 경우 "Alice" 논리 파티션 내의 데이터는 최대 20GB의 데이터를 저장할 수 있습니다.

경고를 사용하여 20GB 논리 파티션 제한에 접근하는 논리 파티션 키가 있는지 모니터링할 수 있습니다. 경고는 조건이 트리거될 때 이메일 형식으로 알림을 보내거나 Azure Function 또는 Logic App과 같은 작업을 실행할 수 있습니다.

이 문서에서는 논리 파티션 키의 스토리지가 20GB 제한의 70%를 초과하는 경우 트리거되는 경고를 만듭니다(14GB 이상의 스토리지 포함). 특정 Azure Cosmos DB 계정의 경고 창 또는 Azure Portal의 Azure Monitor 서비스에서 경고를 설정할 수 있습니다. 두 인터페이스 모두 동일한 옵션을 제공합니다. 이 문서에서는 Azure Monitor에서 경고를 설정하는 방법을 보여 줍니다.

필수 구성 요소

진단 로그의 PartitionKeyStatistics 로그 범주 데이터를 사용하여 경고를 만듭니다. 진단 로그는 옵트인 기능이므로 계속하기 전에 사용하도록 설정해야 합니다. 이 예에서는 권장되는 리소스별 로그 옵션을 사용합니다.

Azure의 진단 설정을 사용하여 Azure Cosmos DB 데이터 모니터링의 지침에 따라 다음을 확인합니다.

  • 모니터링하려는 Azure Cosmos DB 계정에서 진단 로그가 사용하도록 설정되어 있습니다.
  • PartitionKeyStatistics 로그 범주 컬렉션을 구성했습니다.
  • 진단 로그가 Log Analytics 작업 영역으로 전송되고 있습니다.

경고 만들기

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 탐색 모음에서 모니터를 선택하고 경고를 선택합니다.

  3. 새 경고 규칙 단추를 선택하여 규칙 만들기 페이지를 엽니다.

  4. 범위 섹션을 작성합니다.

    • 리소스 선택 창을 열고 다음을 구성합니다.

    • 구독 이름을 선택합니다.

    • 리소스 종류에 대한 Azure Cosmos DB 계정을 선택합니다.

    • Azure Cosmos DB 계정의 위치입니다.

    • 세부 정보를 입력한 후에는 선택한 범위의 Azure Cosmos DB 계정 목록이 표시됩니다. 경고를 구성하려는 항목을 선택하고 완료를 선택합니다.

  5. 조건 섹션을 입력합니다.

    • 조건 선택 창을 열어 신호 선택 페이지를 열고 다음을 구성합니다.

    • 신호 유형에 대해 로그를 선택합니다.

    • 모니터 서비스에 대해 로그 분석을 선택합니다.

    • 신호 이름에 대해 사용자 지정 로그 검색을 선택합니다.

    • 쿼리 편집기에서 아래 쿼리를 추가합니다. 쿼리를 실행하여 결과를 미리 볼 수 있습니다.

    참고 항목

    쿼리가 현재 결과를 반환하지 않아도 완벽합니다. PartitionKeyStatistics 로그는 스토리지 크기가 상당한 논리적 파티션 키가 있는 경우에만 데이터를 표시하므로 결과가 반환되지 않으면 해당 키가 없다는 의미입니다. 향후 이러한 키가 나타나면 경고가 트리거됩니다.

    CDBPartitionKeyStatistics
    // Get the latest storage size for each logical partition key value
    | summarize arg_max(TimeGenerated, *) by AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey 
    | extend utilizationOf20GBLogicalPartition = SizeKb / (20.0 * 1024.0 * 1024.0) // Current storage / 20GB
    | project TimeGenerated, AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey, SizeKb, utilizationOf20GBLogicalPartition
    
    • 경고 계속 편집을 선택합니다.

    • 측정 섹션에서 다음을 수행합니다.

      • 측정값에 대해 utilizationOf20GBLogicalPartition을 선택합니다.

      • 집계 유형에 대해 최대를 선택합니다.

      • 요구 사항에 따라 원하는 집계 세분성을 선택합니다. 이 예에서는 1시간을 선택합니다. 즉 경고가 해당 시간의 가장 높은 스토리지 값을 사용하여 논리 파티션의 스토리지 크기를 계산합니다.

    • 차원별 분할 섹션에서 다음을 수행합니다.

      • AccountName, DatabaseName, CollectionName, _ResourceId, PartitionKey, SizeKb의 6개 차원을 추가합니다. 이렇게 하면 경고가 트리거될 때 경고를 트리거한 특정 Azure Cosmos DB 계정, 데이터베이스, 컬렉션 및 파티션 키를 식별할 수 있습니다.

      • SizeKb 차원의 경우 차원 값으로 현재 및 미래 값 모두 선택을 선택합니다.

      • 다른 모든 차원의 경우:

        • 특정 Azure Cosmos DB 계정, 데이터베이스, 컬렉션 또는 파티션 키만 모니터링하려면 특정 값을 선택하거나 값이 현재 드롭다운에 표시되지 않는 경우 사용자 지정 값 추가를 선택합니다.

        • 그렇지 않으면 현재 및 미래 값 모두 선택을 선택합니다. 예를 들어, Azure Cosmos DB 계정에 현재 2개의 데이터베이스와 5개의 컬렉션이 있는 경우 Database 및 CollectionName 차원에 대한 모든 현재 및 기능 값을 선택하면 경고가 모든 기존 데이터베이스 및 컬렉션은 물론 향후 만들 수 있는 모든 것에 적용됩니다.

    • 경고 논리 섹션에서 다음을 수행합니다.

      • 연산자에 대해 보다 큼을 선택합니다.

      • 원하는 임계값을 선택합니다. 쿼리 작성 방법에 따라 유효한 임계값은 0~1(포함) 사이의 숫자입니다. 이 예에서는 논리적 파티션 키가 허용된 스토리지의 70%에 도달하면 경고를 트리거하려고 하므로 0.7을 입력합니다. 요구 사항에 따라 이 숫자를 조정할 수 있습니다.

      • 요구 사항에 따라 원하는 평가 빈도를 선택합니다. 이 예에서는 1시간을 선택합니다. 이 값은 경고 평가 기간보다 작거나 같아야 합니다.

      5단계를 완료하면 조건 섹션이 아래 예와 같이 표시됩니다.

      Screenshot of an example configuration for signal logic

  6. 작업 섹션을 작성합니다.

    • 기존 작업 그룹을 선택하거나 새 작업 그룹을 만듭니다. 작업 그룹을 사용하면 경고가 트리거될 때 수행할 작업을 정의할 수 있습니다. 이 예제에서는 경고가 트리거될 때 이메일 알림을 받을 새 작업 그룹을 만듭니다. 작업 그룹 만들기 창을 엽니다.

    • 기본 섹션에서 할 일:

      • 이 작업 그룹을 만들 구독 및 리소스 그룹을 선택합니다.

      • 작업 그룹 이름 - 작업 그룹 이름은 리소스 그룹 내에서 고유해야 합니다.

      • 표시 이름 - 이 값은 알림의 원본이었던 작업 그룹을 식별하기 위해 이메일 및 SMS 알림에 포함됩니다.

    • 알림 섹션에서 다음을 수행합니다.

      • 알림 이름을 입력합니다.

      • 알림 유형으로 이메일/SMS 메시지/푸시/음성을 선택하고 이메일, SMS, 푸시 알림 또는 음성 정보를 입력합니다.

    • 선택 사항: 작업 섹션의 Azure 함수 또는 논리 앱과 같이 작업섹션에서 실행할 작업을 선택할 수 있습니다.

    • 검토 + 만들기를 선택하여 작업 그룹을 만듭니다.

  7. 세부 정보 섹션을 작성합니다.

    • 경고의 이름을 정의하고, 선택적 설명, 경고의 심각도 수준을 제공하고, 규칙 만들 때 규칙을 사용하도록 설정할지 여부를 선택합니다.
    • 검토 + 만들기를 선택하고 만들기를 선택하여 경고 만들기를 마칩니다.

경고를 만든 후 10분 이내에 활성화됩니다.

경고 예

Azure Portal에서 경고를 보려면 다음을 수행합니다.

  1. Azure Portal에 로그인합니다.

  2. 왼쪽 탐색 모음에서 모니터를 선택하고 경고를 선택합니다.

경고가 발생하면 다음이 포함됩니다.

  • 데이터베이스 계정 이름
  • 데이터베이스 이름
  • 컬렉션 이름
  • 논리 파티션 키
  • 논리 파티션 키의 스토리지(KB)
  • 20GB 한도 활용

예를 들어 아래에 발생한 경고에서 "ContosoTenant"의 논리 파티션이 20GB 논리 파티션 스토리지 한도의 0.78에 도달했으며 특정 데이터베이스 및 컬렉션에 16GB의 데이터가 있는 것을 볼 수 있습니다.

Screenshot of an alert fired when logical partition key size exceeds threshold

수정 단계

20GB 논리 파티션 크기 한도에 도달하면 해당 논리 파티션에 더 이상 데이터를 쓸 수 없습니다. 결과적으로 장기 솔루션으로 다른 파티션 키로 애플리케이션을 다시 설계하는 것이 좋습니다.

이를 위한 시간을 확보하기 위해 기존 애플리케이션에 대한 논리 파티션 키 제한의 일시적인 증가를 요청할 수 있습니다. Azure 지원 티켓을 제출하고 할당량 유형 컨테이너의 논리적 파티션 키 크기의 일시적 증가를 선택합니다. 이는 일시적인 완화를 위한 것이며 한도가 증가할 때 SLA 보장이 적용되지 않기 때문에 장기적인 솔루션으로 권장되지 않습니다. 구성을 제거하려면 지원 티켓을 제출하고 복원 컨테이너의 논리 파티션 키 크기를 기본값(20GB)으로 복원 할당량 유형을 선택합니다. 20GB 논리 파티션 제한에 맞게 데이터를 삭제했거나, 다른 파티션 키를 사용하여 애플리케이션을 다시 설계한 후에 이 작업을 완료할 수 있습니다.

파티션 키의 스토리지 또는 처리량 제한을 높여야 하는 워크로드 관리에 대한 모범 사례는 가상 파티션 키 만들기를 참조하세요.

다음 단계