부하 분산 장치 모니터링

Azure 리소스를 사용하는 중요한 애플리케이션 및 비즈니스 프로세스가 있는 경우 이와 같은 리소스의 가용성, 성능 및 작업을 모니터링할 수 있습니다.

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

Load Balancer 인사이트

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

Load Balancer 인사이트는 다음을 제공합니다.

  • 기능적 종속성 보기
  • 메트릭 대시보드
  • 개요 탭
  • 프런트 엔드 및 백 엔드 가용성 탭
  • 데이터 처리량 탭
  • 흐름 분포
  • 연결 모니터
  • 메트릭 정의

Load Balancer 인사이트에 관한 자세한 내용은 인사이트를 사용하여 Azure Load Balancer 모니터링 및 구성을 참조하세요.

데이터 모니터링

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

Load Balancer에서 생성된 메트릭과 로그 메트릭에 관한 자세한 내용은 Load Balancer 모니터링 데이터 참조를 참조하세요.

Load Balancer는 다음을 통해 다른 모니터링 데이터를 제공합니다.

수집 및 라우팅

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

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

진단 설정 만들기

Azure Portal, PowerShell 또는 Azure CLI를 사용하여 진단 설정을 만들 수 있습니다.

일반적인 지침은 Azure에서 플랫폼 로그 및 메트릭을 수집하는 진단 설정 만들기를 참조하세요.

진단 설정을 만들 때 수집할 로그 범주를 지정합니다. Load Balancer 범주는 AllMetrics입니다.

포털

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

  2. 포털 맨 위에 있는 검색 상자에 부하 분산 장치를 입력합니다.

  3. 검색 결과에서 부하 분산 장치를 선택합니다.

  4. 부하 분산 장치를 선택합니다. 이 예제의 경우 myLoadBalancer가 사용됩니다.

  5. myLoadBalancer모니터링 섹션에서 진단 설정을 선택합니다.

  6. 진단 설정에서 + 진단 설정 추가를 선택합니다.

  7. 진단 설정에 다음 정보를 입력하거나 선택합니다.

    설정
    진단 설정 이름 진단 설정의 이름을 입력합니다.
    범주 세부 정보
    메트릭 AllMetrics를 선택합니다.
  8. 대상 세부 정보를 선택합니다. 일부 대상 옵션은 다음과 같습니다.

    • Log Analytics에 보내기
      • 구독Log Analytics 작업 영역을 선택합니다.
    • 스토리지 계정에 보관
      • 구독스토리지 계정을 선택합니다.
    • 이벤트 허브로 스트림
      • 구독, 이벤트 허브 네임스페이스, 이벤트 허브 이름(선택 사항), 이벤트 허브 정책 이름을 선택합니다.
  9. 저장을 선택합니다.

PowerShell

Azure PowerShell에 로그인합니다.

Connect-AzAccount 

Log Analytics 작업 영역

리소스 로그를 Log Analytics 작업 영역으로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the workspace in a variable. ##
$wspara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-log-analytics-workspace-name>
}
$ws = Get-AzOperationalInsightsWorkspace @wspara
    
## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.id `
    -Name <your-diagnostic-setting-name> `
    -Enabled $true `
    -MetricCategory 'AllMetrics' `
    -WorkspaceId $ws.ResourceId

스토리지 계정

리소스 로그를 스토리지 계정으로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the storage account in a variable. ##
$storpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-storage-account-name>
}
$storage = Get-AzStorageAccount @storpara
    
## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.id `
    -Name <your-diagnostic-setting-name> `
    -StorageAccountId $storage.id `
    -Enabled $true `
    -MetricCategory 'AllMetrics'

이벤트 허브

리소스 로그를 이벤트 허브 네임스페이스로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

## Place the load balancer in a variable. ##
$lbpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-load-balancer-name>
}
$lb = Get-AzLoadBalancer @lbpara
    
## Place the event hub in a variable. ##
$hubpara = @{
    ResourceGroupName = <your-resource-group-name>
    Name = <your-event-hub-name>
}
$eventhub = Get-AzEventHubNamespace @hubpara

## Place the event hub authorization rule in a variable. ##    
$hubrule = @{
    ResourceGroupName = 'myResourceGroup'
    Namespace = 'myeventhub8675'
}
$eventhubrule = Get-AzEventHubAuthorizationRule @hubrule

## Enable the diagnostic setting. ##
Set-AzDiagnosticSetting `
    -ResourceId $lb.Id `
    -Name 'myDiagSetting-event'`
    -EventHubName $eventhub.Name `
    -EventHubAuthorizationRuleId $eventhubrule.Id `
    -Enabled $true `
    -MetricCategory 'AllMetrics'

Azure CLI

Azure CLI에 로그인합니다.

az login

Log Analytics 작업 영역

리소스 로그를 Log Analytics 작업 영역으로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

wsid=$(az monitor log-analytics workspace show \
    --resource-group <your-resource-group> \
    --workspace-name <your-log-analytics-workspace-name> \
    --query id \
    --output tsv)
    
az monitor diagnostic-settings create \
    --name <your-diagnostic-setting-name> \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --workspace $wsid

스토리지 계정

리소스 로그를 스토리지 계정으로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

storid=$(az storage account show \
        --name <your-storage-account-name> \
        --resource-group <your-resource-group> \
        --query id \
        --output tsv)
    
az monitor diagnostic-settings create \
    --name <your-diagnostic-setting-name> \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --storage-account $storid

이벤트 허브

리소스 로그를 이벤트 허브 네임스페이스로 보내려면 다음 명령을 입력합니다. 대괄호로 묶인 값을 원하는 값으로 바꿉니다.

lbid=$(az network lb show \
    --name <your-load-balancer-name> \
    --resource-group <your-resource-group> \
    --query id \
    --output tsv)

az monitor diagnostic-settings create \
    --name myDiagSetting-event \
    --resource $lbid \
    --metrics '[{"category": "AllMetrics","enabled": true}]' \
    --event-hub-rule /subscriptions/<your-subscription-id>/resourceGroups/<your-resource-group>/providers/Microsoft.EventHub/namespaces/<your-event-hub-namespace>/authorizationrules/RootManageSharedAccessKey

수집할 수 있는 메트릭 및 로그는 다음 섹션에서 설명합니다.

메트릭 분석

메트릭 탐색기를 사용하여 다른 Azure 서비스의 메트릭으로 Load Balancer에 대한 메트릭을 분석하려면 Azure Monitor 메뉴에서 메트릭을 엽니다. 이 도구 사용에 대한 자세한 내용은 Azure Monitor 메트릭 탐색기를 사용하여 메트릭 분석을 참조하세요.

Load Balancer에 대해 수집된 플랫폼 메트릭 목록은 Load Balancer 모니터링 데이터 참조 메트릭을 참조하세요.

Azure Monitor에서 지원되는 모든 리소스 메트릭 목록을 참조하세요.

로그 분석

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

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

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

NSG 흐름 로그를 사용하여 부하 분산 장치 트래픽 분석

NSG 흐름 로그는 NSG(네트워크 보안 그룹)를 통과하는 IP 트래픽에 대한 정보를 로깅할 수 있는 Azure Network Watcher의 기능입니다. 흐름 데이터는 액세스할 수 있는 Azure Storage로 전송되며 원하는 시각화 도구, SIEM(보안 정보 및 이벤트 관리) 솔루션 또는 IDS(침입 탐지 시스템)로 내보낼 수 있습니다.

NSG 흐름 로그를 사용하여 부하 분산 장치를 통해 이동하는 트래픽을 분석할 수 있습니다. NSG 흐름 로그에는 부하 분산 장치 프런트 엔드 IP 주소가 포함되지 않습니다. 부하 분산 장치로 이동하는 트래픽을 분석하려면 부하 분산 장치 백 엔드 풀 구성원의 개인 IP 주소로 NSG 흐름 로그를 필터링해야 합니다.

경고

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

Load Balancer에서 실행되는 애플리케이션을 만들거나 실행하는 경우 Azure Monitor Application Insights는 다른 유형의 경고를 제공합니다.

다음 표에는 Load Balancer에 대한 일반적인 경고 규칙과 권장되는 경고 규칙이 나와 있습니다.

경고 유형 조건 설명
사용할 수 없는 VM으로 인해 부하 분산 규칙을 사용할 수 없음 프런트 엔드 IP 주소와 프런트 엔드 포트(모든 알려진 값과 미래 값)별로 분할된 데이터 경로 가용성이 0과 같고 보조 경고에서 상태 프로브 상태가 0인 경우 경고를 발생시킴 이러한 경고는 구성된 부하 분산 규칙에 대한 데이터 경로 가용성이 구성된 상태 프로브에 의해 프로브 다운되는 연결된 백 엔드 풀의 모든 VM으로 인해 트래픽을 제공하지 않는지 여부를 확인하는 데 도움이 됩니다. 부하 분산 장치 문제 해결 가이드를 검토하여 잠재적인 근본 원인을 조사합니다.
VM 가용성이 상당히 낮음 백 엔드 IP와 백 엔드 포트별로 분할된 상태 프로브 상태가 총 풀 크기의 사용자 정의 프로브 업 비율(즉, 25%가 프로브 업됨)과 같으면 경고를 발생시킴 이 경고는 트래픽을 제공하는 데 사용할 수 있는 VM이 필요한 것보다 적은지 확인합니다.
인터넷 엔드포인트에 대한 아웃바운드 연결 실패 연결 상태 = 실패로 필터링된 SNAT 연결 수가 0보다 큰 경우 경고를 발생시킵니다. 이 경고는 SNAT 포트가 고갈되고 VM이 아웃바운드 연결을 시작하지 못하는 경우에 발생합니다.
SNAT 고갈에 접근 사용된 SNAT 포트가 사용자 정의 수보다 큰 경우 경고를 발생시킵니다. 이 경고에는 항상 동일한 수의 포트가 할당되는 정적 아웃바운드 구성이 필요합니다. 그런 다음, 이 경고는 일정 비율의 할당된 포트가 사용될 때 발생합니다.

다음 단계