PEP(권한 있는 엔드포인트)를 사용하여 Azure Stack Hub 진단 로그 보내기

통합 시스템에서 Get-AzureStackLog를 실행하려면 PEP(권한 있는 엔드포인트) 액세스 권한이 있어야 합니다. 다음은 실행하면 PEP를 사용하여 로그를 수집하는 예제 스크립트입니다. 실행 중인 로그 컬렉션을 취소하여 새 로그 컬렉션을 시작하는 경우 새 로그 수집을 시작하기 전에 5분 정도 기다렸다가 를 입력 Remove-PSSession -Session $session합니다.

$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.

$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)

$shareCred = Get-Credential

$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue

Invoke-Command -Session $session { Get-AzureStackLog -OutputSharePath "<EXTERNAL SHARE ADDRESS>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate}

if ($session) {
    Remove-PSSession -Session $session
}

예제

  • 모든 역할의 모든 로그를 수집합니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
    
  • VirtualMachines 및 BareMetal 역할에서 로그를 수집합니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
    
  • 지난 8시간 동안의 로그 파일에 대한 날짜 필터링을 사용하여 VirtualMachines 및 BareMetal 역할에서 진단 로그를 수집합니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • 8~2시간 전의 로그 파일에 대한 날짜 필터링을 사용하여 VirtualMachines 및 BareMetal 역할에서 진단 로그를 수집합니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
    
  • Azure Stack에서 자체 관리 Kubernetes 클러스터(AKS 엔진)을 실행하는 테넌트 배포에서 로그를 수집합니다. Kubernetes 로그는 수집 시간 범위도 적용할 수 있는 형식으로 테넌트 스토리지 계정에 저장되어야 합니다.

    Get-AzureStackLog -OutputPath <Path> -InputSasUri "<Blob Service Sas URI>" -FromDate "<Beginning of the time range>" -ToDate "<End of the time range>"
    

    예를 들면 다음과 같습니다.

    Get-AzureStackLog -OutputPath C:\KubernetesLogs -InputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>" -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2) 
    
  • 고가치 RP에 대한 로그를 수집합니다. 일반 구문은 다음과 같습니다.

    Get-AzureStackLog -FilterByResourceProvider <<value-add RP name>>
    

    SQL RP에 대한 로그를 수집하려면 다음을 수행합니다.

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    MySQL RP에 대한 로그를 수집하려면 다음을 수행합니다.

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Event Hubs에 대한 로그를 수집하려면 다음을 수행합니다.

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Azure Stack Edge에 대한 로그를 수집하려면 다음을 수행합니다.

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • 로그를 수집하고 지정된 Azure Storage Blob 컨테이너에 저장합니다. 이 작업의 일반적인 구문은 다음과 같습니다.

    Get-AzureStackLog -OutputSasUri "<Blob service SAS Uri>"
    

    예를 들면 다음과 같습니다.

    Get-AzureStackLog -OutputSasUri "https://<storageAccountName>.blob.core.windows.net/<ContainerName><SAS token>"
    

    참고

    이 절차는 로그를 업로드하는 데 유용합니다. 액세스 가능하거나 인터넷에 액세스할 수 있는 SMB 공유가 없더라도 Azure Stack Hub에 Blob Storage 계정을 만들어 로그를 전송한 다음 클라이언트를 사용하여 해당 로그를 검색할 수 있습니다.

    스토리지 계정에 대한 SAS 토큰을 생성하려면 다음 권한이 필요합니다.

    • Blob Storage 서비스에 대한 액세스.
    • 컨테이너 리소스 종류에 대한 액세스.

    매개 변수에 사용할 -OutputSasUri SAS Uri 값을 생성하려면 다음 단계를 수행합니다.

    1. 이 문서의 단계에 따라 스토리지 계정을 만듭니다.
    2. Azure Storage Explorer instance 엽니다.
    3. 1단계에서 만든 스토리지 계정에 연결합니다.
    4. Storage Services에서 Blob 컨테이너로 이동합니다.
    5. 새 컨테이너 만들기를 선택합니다.
    6. 새 컨테이너를 마우스 오른쪽 단추로 클릭한 다음 공유 액세스 서명 가져오기를 클릭합니다.
    7. 요구 사항에 따라 유효한 시작 시간종료 시간을 선택합니다.
    8. 필요한 권한에 대해 읽기, 쓰기목록을 선택합니다.
    9. 만들기를 선택합니다.
    10. 공유 액세스 서명을 받게 됩니다. URL 부분을 복사하여 매개 변수에 -OutputSasUri 제공합니다.

매개 변수 고려 사항

  • OutputSharePathOutputShareCredential 매개 변수는 사용자가 지정한 위치에 로그를 저장하는 데 사용됩니다.

  • FromDateToDate 매개 변수를 사용하면 특정 기간 동안 로그를 수집할 수 있습니다. 이러한 매개 변수를 지정하지 않으면 기본적으로 지난 4시간 동안의 로그가 수집됩니다.

  • 컴퓨터 이름을 기준으로 로그를 필터링하려면 FilterByNode 매개 변수를 사용합니다. 예를 들면 다음과 같습니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • FilterByLogType 매개 변수를 사용하여 형식별로 로그를 필터링합니다. File, Share 또는 WindowsEvent를 기준으로 필터링할 수 있습니다. 예를 들면 다음과 같습니다.

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • TimeOutInMinutes 매개 변수를 사용하여 로그 수집에 대한 시간 제한을 설정할 수 있습니다. 기본적으로 150(2.5시간)으로 설정됩니다.

  • 덤프 파일 로그 컬렉션은 기본적으로 사용하지 않도록 설정됩니다. 사용하도록 설정하려면 IncludeDumpFile 스위치 매개 변수를 사용합니다.

  • 현재 FilterByRole 매개 변수를 사용하여 다음 역할로 로그 수집을 필터링할 수 있습니다.

ACS

ACSBlob

ACSDownloadService

ACSFabric

ACSFrontEnd

ACSMetrics

ACSMigrationService

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

CacheService

Compute

Cpi

Crp

DeploymentMachine

DiskRP

도메인

Ece

EventAdminRP

EventRP

ExternalDNS

FabricRing

FabricRingServices

FirstTierAggregationService

Frp

게이트웨이

HealthMonitoring

HintingServiceV2

Hrp

Ibc

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NonPrivilegedAppGateway

NRP

OboService

OEM

온보딩RP

PXE

QueryServiceCoordinator

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

스토리지

StorageController

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

WAS

WASPUBLIC

진단 로그에 대한 추가 고려 사항

  • 이 명령은 로그가 수집하는 역할에 따라 실행하는 데 다소 시간이 걸립니다. 기여 요인에는 로그 수집에 지정된 시간 기간과 Azure Stack Hub 환경의 노드 수도 포함됩니다.

  • 로그 컬렉션이 실행되면 명령에 지정된 OutputSharePath 매개 변수에서 만든 새 폴더를 검사.

  • 각 역할에는 개별 zip 파일 내에 로그가 있습니다. 수집된 로그의 크기에 따라 역할에는 해당 로그가 여러 zip 파일로 분할될 수 있습니다. 이러한 역할의 경우 모든 로그 파일을 단일 폴더로 압축 해제하려면 대량으로 압축을 풀 수 있는 도구를 사용합니다. 역할에 대해 압축된 파일을 모두 선택하고 여기에서 추출을 선택합니다. 해당 역할에 대한 모든 로그 파일은 병합된 단일 폴더로 압축 해제됩니다.

  • Get-AzureStackLog_Output.log라는 파일도 압축된 로그 파일이 포함된 폴더에 만들어집니다. 이 파일은 로그 수집 중에 문제를 해결하는 데 사용할 수 있는 명령 출력의 로그입니다. 로그 컬렉션이 실행된 후 예상되는 로그 파일이 누락되지 않는 한 로그 파일에 안전하게 무시될 수 있는 항목이 포함된 PS>TerminatingError 경우가 있습니다.

  • 특정 오류를 조사하려면 둘 이상의 구성 요소에서 로그가 필요할 수 있습니다.

    • 모든 인프라 VM에 대한 시스템 및 이벤트 로그는 VirtualMachines 역할에서 수집됩니다.
    • 모든 호스트에 대한 시스템 및 이벤트 로그는 BareMetal 역할에서 수집됩니다.
    • 장애 조치(failover) 클러스터 및 Hyper-V 이벤트 로그는 스토리지 역할에서 수집됩니다.
    • ACS 로그는 스토리지ACS 역할에서 수집됩니다.

참고

스토리지 공간을 효율적으로 활용하고 로그가 넘쳐나지 않도록 하는 것이 중요하기 때문에 수집된 로그에 크기 및 연령 제한이 적용됩니다. 그러나 문제를 진단할 때 이러한 제한으로 인해 더 이상 존재하지 않는 로그가 필요한 경우가 있습니다. 따라서 8~12시간마다 외부 스토리지 공간(Azure의 스토리지 계정, 추가 온-프레미스 스토리지 디바이스 등)에 로그를 오프로드하고 요구 사항에 따라 1~3개월 동안 로그를 유지하는 것이 좋습니다 . 또한 이 스토리지 위치가 암호화되었는지 확인해야 합니다.

Invoke-AzureStackOnDemandLog

Invoke-AzureStackOnDemandLog cmdlet을 사용하여 특정 역할에 대한 주문형 로그를 생성할 수 있습니다(이 섹션의 끝에 있는 목록 참조). 이 cmdlet에서 생성된 로그는 Get-AzureStackLog cmdlet을 실행할 때 수신하는 로그 번들에 기본적으로 존재하지 않습니다. 또한 Microsoft 지원 팀이 요청한 경우에만 이러한 로그를 수집하는 것이 좋습니다.

현재 매개 변수를 -FilterByRole 사용하여 다음 역할로 로그 수집을 필터링할 수 있습니다.

  • OEM
  • NC
  • SLB
  • 게이트웨이

주문형 진단 로그 수집 예제

$ipAddress = "<IP ADDRESS OF THE PEP VM>" # You can also use the machine name instead of IP here.

$password = ConvertTo-SecureString "<CLOUD ADMIN PASSWORD>" -AsPlainText -Force
$cred = New-Object -TypeName System.Management.Automation.PSCredential ("<DOMAIN NAME>\CloudAdmin", $password)

$shareCred = Get-Credential

$session = New-PSSession -ComputerName $ipAddress -ConfigurationName PrivilegedEndpoint -Credential $cred -SessionOption (New-PSSessionOption -Culture en-US -UICulture en-US)

$fromDate = (Get-Date).AddHours(-8)
$toDate = (Get-Date).AddHours(-2) # Provide the time that includes the period for your issue

Invoke-Command -Session $session {
   Invoke-AzureStackOnDemandLog -Generate -FilterByRole "<on-demand role name>" # Provide the supported on-demand role name e.g. OEM, NC, SLB, Gateway
   Get-AzureStackLog -OutputSharePath "<external share address>" -OutputShareCredential $using:shareCred -FilterByRole Storage -FromDate $using:fromDate -ToDate $using:toDate
}

if ($session) {
   Remove-PSSession -Session $session
}

PEP를 사용한 진단 로그 수집의 작동 방식

Azure Stack Hub 진단 도구는 로그 수집을 쉽고 효율적으로 만드는 데 도움이 될 수 있습니다. 다음 다이어그램은 진단 도구의 작동 방식을 보여줍니다.

Azure Stack Hub 진단 도구 워크플로 다이어그램

추적 수집기

추적 수집기는 기본적으로 사용하도록 설정되며 백그라운드에서 지속적으로 실행되어 Azure Stack Hub 구성 요소 서비스에서 ETW(Windows용 이벤트 추적) 로그를 모두 수집합니다. ETW 로그는 5일 제한으로 공통 로컬 공유에 저장됩니다. 이 제한에 도달하면 새 파일이 만들어지면 가장 오래된 파일이 삭제됩니다. 각 파일에 허용되는 기본 최대 크기는 200MB입니다. 크기 검사 2분마다 발생하고 현재 파일이 >= 200MB이면 저장되고 새 파일이 생성됩니다. 이벤트 세션당 생성된 총 파일 크기에 대한 8GB 제한도 있습니다.

Get-AzureStackLog

PowerShell cmdlet Get-AzureStackLog 사용하여 Azure Stack Hub 환경의 모든 구성 요소에서 로그를 수집할 수 있습니다. 사용자 정의 위치의 zip 파일에 저장합니다. Azure Stack Hub 기술 지원 팀에서 문제를 해결하는 데 도움이 되는 로그가 필요한 경우 Get-AzureStackLog를 실행하도록 요청할 수 있습니다.

주의

이러한 로그 파일에는 PII(개인 식별 정보)가 포함될 수 있습니다. 로그 파일을 공개적으로 게시하기 전에 이 사항을 고려합니다.

다음은 수집되는 몇 가지 예제 로그 형식입니다.

  • Azure Stack Hub 배포 로그
  • Windows 이벤트 로그
  • 팬더 로그
  • 클러스터 로그
  • 스토리지 진단 로그
  • ETW 로그

이러한 파일은 추적 수집기에서 수집하고 공유에 저장합니다. 그런 다음 Get-AzureStackLog 사용하여 필요할 때 수집할 수 있습니다.