다음을 통해 공유


Azure Monitor를 사용하여 Azure DocumentDB 진단 로그 모니터링

Azure의 진단 로그는 Azure DocumentDB 계정에 대한 Azure 리소스 로그를 캡처하는 데 필수적입니다. 이러한 로그는 계정 내 리소스의 작업에 대한 상세하고 빈번한 인사이트를 제공합니다.

중요합니다

이 기능은 컴퓨팅 계층 또는 하위 계층 M30 또는 무료 계층 SKU에서 사용할 수 없습니다.

필수 조건

  • Azure 구독

  • 기존 Azure DocumentDB 클러스터

  • 기존 Log Analytics 작업 영역 또는 Azure Storage 계정.

진단 설정 만들기

플랫폼 메트릭 및 활동 로그는 자동으로 수집됩니다. 리소스 로그를 수집하고 Azure Monitor에서 외부에서 라우팅하려면 진단 설정을 설정해야 합니다. 방법을 알아보려면 Azure Monitor에서 진단 설정 만들기를 참조하세요.

진단 설정 관리

경우에 따라 설정을 찾거나 제거하여 관리해야 합니다. 명령 그룹에는 az monitor diagnostic-settings 진단 설정 관리를 위한 하위 명령이 포함됩니다.

  1. 클러스터에 대한 API와 연결된 모든 진단 설정을 나열합니다.

    az monitor diagnostic-settings list \
        --resource-group $resourceGroupName \
        --resource $clusterResourceId
    
  2. 연결된 리소스 및 설정 이름을 사용하여 특정 설정을 삭제합니다.

    az monitor diagnostic-settings delete \
        --resource-group $resourceGroupName \
        --name $diagnosticSettingName \
        --resource $clusterResourceId
    

고급 진단 쿼리 사용

이러한 리소스별 쿼리를 사용하여 클러스터용 API에서 일반적인 문제 해결 연구를 수행합니다.

중요합니다

이 섹션에서는 리소스별 로그와 함께 Log Analytics 작업 영역을 사용한다고 가정합니다.

  1. 클러스터용 API의 로그 섹션으로 이동합니다. 샘플 쿼리 목록을 관찰합니다.

    샘플 쿼리의 진단 쿼리 목록 스크린샷

  2. 이 쿼리를 실행하여 오류 코드별로 그룹화된 요청에 대해 실패한 API 수를 계산합니다.

    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | where ErrorCode != 0
    | summarize count() by bin(TimeGenerated, 5m), ErrorCode=tostring(ErrorCode)
    
  3. 이 쿼리를 실행하여 작업 이름으로 요청 P99 런타임 기간에 대한 API를 가져옵니다.

    // Mongo requests P99 duration by operation 
    // Mongo requests P99 runtime duration by operation name. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize percentile(DurationMs, 99) by bin(TimeGenerated, 1h), OperationName
    
  4. 이 쿼리를 실행하여 총 런타임 기간별로 그룹화된 요청에 대한 API 수를 가져옵니다.

    // Mongo requests binned by duration 
    // Count of Mongo requests binned by total runtime duration. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | project TimeGenerated, DurationBin=tostring(bin(DurationMs, 5))
    | summarize count() by bin(TimeGenerated, 1m), tostring(DurationBin)
    
  5. 이 쿼리를 실행하여 사용자 에이전트의 요청에 대한 API 수를 가져옵니다.

    // Mongo requests by user agent 
    // Count of Mongo requests by user agent. 
    VCoreMongoRequests
    // Time range filter:  | where TimeGenerated between (StartTime .. EndTime)
    // Resource id filter: | where _ResourceId == "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourcegroups/my-resource-group-name/providers/microsoft.documentdb/mongoclusters/my-cluster-name"
    | summarize count() by bin(TimeGenerated, 1h), UserAgent