Azure Key Vault 모니터링

Azure 리소스를 사용하는 중요한 애플리케이션 및 비즈니스 프로세스가 있는 경우 이와 같은 리소스의 가용성, 성능 및 작업을 모니터링할 수 있습니다. Azure Key Vault의 경우 Key Vault에 전송된 요청 수가 증가하기 때문에 스케일링을 시작할 때 서비스를 모니터링하는 것이 중요합니다. 이로 인해 요청 대기 시간이 길어질 수 있으며 극단적인 경우에는 서비스의 성능에 영향을 줄 수 있는 요청이 정체됩니다.

이 문서에서는 Key Vault에서 생성된 모니터링 데이터에 대해 설명합니다. Key Vault는 Azure Monitor를 사용합니다. 이 기능을 사용하는 모든 Azure 서비스에 공통되는 Azure Monitor 기능에 익숙하지 않은 경우, Azure Monitor로 Azure 리소스 모니터링을 읽어 보세요.

Azure Portal의 모니터링 개요 페이지

Azure Portal에서 각 Key Vault에 대한 개요 페이지에는 “모니터링” 탭의 다음 메트릭이 포함됩니다.

  • 총 요청
  • 평균 대기 시간
  • 성공률

“추가 메트릭”(또는 왼쪽 사이드바의 “메트릭” 탭, “모니터링”)을 선택하여 이러한 메트릭도 볼 수 있습니다.

  • 전체 서비스 API 대기 시간
  • 전체 자격 증명 모음 가용성
  • 전체 자격 증명 모음 채도
  • 서비스 API 총 방문 횟수
  • 서비스 API 총 결과

Key Vault 인사이트

Azure의 일부 서비스에는 서비스 모니터링을 위한 시작점을 제공하는 Azure Portal에 특별히 집중적으로 미리 작성된 모니터링 대시보드가 있습니다. 이러한 특수 대시보드를 “인사이트”라고 합니다.

Key Vault 인사이트는 Key Vault 요청, 성능, 실패 및 대기 시간에 대한 통합 보기를 제공하여 키 자격 증명 모음의 종합적인 모니터링을 제공합니다. 자세한 내용은 Key Vault 인사이트를 통해 Key Vault 서비스 모니터링을 참조하세요.

데이터 모니터링

Key Vault는 Azure 리소스에서 데이터 모니터링에 설명된 다른 Azure 리소스와 동일한 종류의 모니터링 데이터를 수집합니다.

Key Vault 모니터링 데이터 참조에서 Key Vault에서 생성된 메트릭 및 로그 메트릭에 관한 자세한 정보를 확인하세요.

수집 및 라우팅

플랫폼 메트릭 및 활동 로그는 자동으로 수집되고 저장되지만 진단 설정을 사용하여 다른 위치로 라우팅할 수 있습니다.

리소스 로그는 진단 설정을 만들고 하나 이상의 위치로 라우팅할 때까지 수집 및 저장되지 않습니다.

Azure Portal, CLI 또는 PowerShell을 사용한 진단 설정 만들기의 자세한 프로세스는 Azure에서 플랫폼 로그 및 메트릭을 수집하는 진단 설정 만들기를 참조하세요. 진단 설정을 만들 때 수집할 로그 범주를 지정합니다. Key Vault의 범주는 Key Vault 모니터링 데이터 참조에 나열됩니다.

Key Vault에 대한 진단 설정을 만들려면 Key Vault 로깅 사용을 참조합니다. 수집할 수 있는 메트릭 및 로그는 다음 섹션에서 설명합니다.

메트릭 분석

Azure Monitor 메뉴에서 메트릭을 열어 메트릭 탐색기에서 다른 Azure 서비스의 메트릭으로 Key Vault에 대한 메트릭을 분석할 수 있습니다. 이 도구 사용에 대한 자세한 내용은 Azure Monitor 메트릭 탐색기를 사용하여 메트릭 분석을 참조하세요.

Key Vault에 대해 수집되는 플랫폼 메트릭 목록은 Key Vault 데이터 참조 메트릭 모니터링을 참조하세요.

로그 분석

Azure Monitor Logs의 데이터는 테이블마다 고유한 자체 속성 집합이 있는 테이블에 저장됩니다.

Azure Monitor의 모든 리소스 로그에는 동일한 필드와 그 뒤에 오는 서비스별 필드가 있습니다. 공용 스키마는 Azure Monitor 리소스 로그 스키마에서 설명합니다.

활동 로그는 구독 수준의 이벤트에 대한 인사이트를 제공하는 Azure의 플랫폼 로그 유형입니다. 활동 로그는 독립적으로 보거나 Azure Monitor Logs로 라우팅할 수 있습니다. 여기서 Log Analytics를 사용하여 훨씬 더 복잡한 쿼리를 수행할 수 있습니다.

Key Vault에 대해 수집되는 리소스 로그 유형 목록은 Key Vault 데이터 참조 모니터링을 참조하세요.

Azure Monitor 로그에서 사용하고 Log Analytics에서 쿼리할 수 있는 테이블 목록은 Key Vault 데이터 참조 모니터링을 참조하세요.

샘플 Kusto 쿼리

Important

Key Vault 메뉴에서 로그를 선택하면 쿼리 범위가 현재 Key Vault로 설정된 Log Analytics가 열립니다. 즉, 로그 쿼리에는 해당 리소스의 데이터만 포함됩니다. 다른 Azure 서비스의 데이터 또는 다른 Key Vault의 데이터를 포함하는 쿼리를 실행하려면 Azure Monitor 메뉴에서 로그를 선택합니다. 자세한 내용은 Azure Monitor Log Analytics의 로그 쿼리 범위 및 시간 범위를 참조하세요.

다음은 Key Vault 리소스를 모니터링하기 위해 로그 검색 창에 입력할 수 있는 몇 가지 쿼리입니다. 이러한 쿼리는 새 언어에서 작동합니다.

  • 이전 TLS 버전(<1.2)을 사용하는 클라이언트가 있나요?

    AzureDiagnostics
    | where TimeGenerated > ago(90d) 
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | where isnotempty(tlsVersion_s) and strcmp(tlsVersion_s,"TLS1_2") <0
    | project TimeGenerated,Resource, OperationName, requestUri_s, CallerIPAddress, OperationVersion,clientInfo_s,tlsVersion_s,todouble(tlsVersion_s)
    | sort by TimeGenerated desc
    
  • 느린 요청이 있나요?

    // List of KeyVault requests that took longer than 1sec. 
    // To create an alert for this query, click '+ New alert rule'
    let threshold=1000; // let operator defines a constant that can be further used in the query
    
    AzureDiagnostics
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | where DurationMs > threshold
    | summarize count() by OperationName, _ResourceId
    
  • 오류가 있나요?

    // Count of failed KeyVault requests by status code. 
    // To create an alert for this query, click '+ New alert rule'
    
    AzureDiagnostics
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | where httpStatusCode_d >= 300 and not(OperationName == "Authentication" and httpStatusCode_d == 401)
    | summarize count() by requestUri_s, ResultSignature, _ResourceId
    // ResultSignature contains HTTP status, e.g. "OK" or "Forbidden"
    // httpStatusCode_d contains HTTP status code returned
    
  • 입력 역직렬화 오류

    // Shows errors caused due to malformed events that could not be deserialized by the job. 
    // To create an alert for this query, click '+ New alert rule'
    
    AzureDiagnostics
    | where ResourceProvider == "MICROSOFT.KEYVAULT" and parse_json(properties_s).DataErrorType in ("InputDeserializerError.InvalidData", "InputDeserializerError.TypeConversionError", "InputDeserializerError.MissingColumns", "InputDeserializerError.InvalidHeader", "InputDeserializerError.InvalidCompressionType")
    | project TimeGenerated, Resource, Region_s, OperationName, properties_s, Level, _ResourceId
    
  • 이 KeyVault는 얼마나 활발하게 작동하고 있나요?

    // Line chart showing trend of KeyVault requests volume, per operation over time. 
    // KeyVault diagnostic currently stores logs in AzureDiagnostics table which stores logs for multiple services. 
    // Filter on ResourceProvider for logs specific to a service.
    
    AzureDiagnostics
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | summarize count() by bin(TimeGenerated, 1h), OperationName // Aggregate by hour
    | render timechart
    
    
  • 누가 KeyVault를 호출하고 있나요?

    // List of callers identified by their IP address with their request count.  
    // KeyVault diagnostic currently stores logs in AzureDiagnostics table which stores logs for multiple services. 
    // Filter on ResourceProvider for logs specific to a service.
    
    AzureDiagnostics
    | where ResourceProvider =="MICROSOFT.KEYVAULT"
    | summarize count() by CallerIPAddress
    
  • 이 KeyVault는 요청을 얼마나 빨리 처리하나요?

    // Line chart showing trend of request duration over time using different aggregations. 
    
    AzureDiagnostics
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | summarize avg(DurationMs) by requestUri_s, bin(TimeGenerated, 1h) // requestUri_s contains the URI of the request
    | render timechart
    
  • 지난 달에 어떤 변경이 발생했나요?

    // Lists all update and patch requests from the last 30 days. 
    // KeyVault diagnostic currently stores logs in AzureDiagnostics table which stores logs for multiple services. 
    // Filter on ResourceProvider for logs specific to a service.
    
    AzureDiagnostics
    | where TimeGenerated > ago(30d) // Time range specified in the query. Overrides time picker in portal.
    | where ResourceProvider =="MICROSOFT.KEYVAULT" 
    | where OperationName == "VaultPut" or OperationName == "VaultPatch"
    | sort by TimeGenerated desc
    

경고

Azure Monitor 경고는 모니터링 데이터에서 중요한 조건이 발견될 때 사용자에게 사전에 알립니다. 이를 통해 시스템에서 문제를 선제적으로 식별하고 해결할 수 있습니다. 메트릭, 로그활동 로그에서 경고를 설정할 수 있습니다.

Azure Key Vault에서 실행되는 애플리케이션을 만들거나 실행하는 경우 Azure Monitor Application Insights는 추가 유형의 경고를 제공할 수 있습니다.

Azure Key Vault에 대한 몇 가지 일반 및 권장 경고 규칙은 다음과 같습니다.

  • Key Vault 가용성이 100% 아래로 떨어짐(고정 임계값)
  • Key Vault 대기 시간이 1000ms보다 큼(고정 임계값)
  • 전체 자격 증명 모음 포화도가 75%보다 큼(고정 임계값)
  • 전체 자격 증명 모음 포화도가 평균 초과(동적 임계값)
  • 총 오류 코드가 평균보다 높음(동적 임계값)

자세한 내용은 Azure Key Vault에 대한 경고를 참조하세요.

다음 단계