Wysyłanie dzienników diagnostycznych usługi Azure Stack Hub przy użyciu uprzywilejowanego punktu końcowego (PEP)

Aby uruchomić Get-AzureStackLog w zintegrowanym systemie, musisz mieć dostęp do uprzywilejowanego punktu końcowego (PEP). Oto przykładowy skrypt, który można uruchomić przy użyciu pep do zbierania dzienników. Jeśli anulujesz uruchomioną kolekcję dzienników, aby rozpocząć nową, odczekaj 5 minut przed rozpoczęciem nowej kolekcji dzienników i wprowadź polecenie 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
}

Przykłady

  • Zbierz wszystkie dzienniki dla wszystkich ról:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred
    
  • Zbieranie dzienników z ról VirtualMachines i BareMetal:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal
    
  • Zbierz dzienniki z ról VirtualMachines i BareMetal z filtrowaniem dat dla plików dziennika w ciągu ostatnich 8 godzin:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • Zbierz dzienniki z ról VirtualMachines i BareMetal z filtrowaniem dat dla plików dziennika w okresie od 8 godzin temu do 2 godzin temu:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8) -ToDate (Get-Date).AddHours(-2)
    
  • Zbierz dzienniki z wdrożeń dzierżawy z uruchomionymi samodzielnie zarządzanymi klastrami Kubernetes (aparatem AKS) w usłudze Azure Stack. Dzienniki platformy Kubernetes powinny być przechowywane na koncie magazynu dzierżawy w formacie umożliwiającym zastosowanie do nich również zakresu czasu kolekcji.

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

    Na przykład:

    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) 
    
  • Zbierz dzienniki dla dostawców RPs dodających wartość. Ogólna składnia to:

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

    Aby zebrać dzienniki dla dostawcy usługi SQL:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Aby zebrać dzienniki dla dostawcy usługi MySQL:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    Aby zbierać dzienniki dla usługi Event Hubs:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    Aby zebrać dzienniki dla usługi Azure Stack Edge:

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • Zbierz dzienniki i zapisz je w określonym kontenerze obiektów blob usługi Azure Storage. Ogólna składnia dla tej operacji jest następująca:

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

    Na przykład:

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

    Uwaga

    Ta procedura jest przydatna do przekazywania dzienników. Nawet jeśli nie masz dostępnego udziału SMB lub dostępu do Internetu, możesz utworzyć konto magazynu obiektów blob w usłudze Azure Stack Hub, aby przenieść dzienniki, a następnie użyć klienta do pobrania tych dzienników.

    Aby wygenerować token SAS dla konta magazynu, wymagane są następujące uprawnienia:

    • Dostęp do usługi Blob Storage.
    • Dostęp do typu zasobu kontenera.

    Aby wygenerować wartość identyfikatora URI sygnatury dostępu współdzielonego do użycia dla parametru -OutputSasUri , wykonaj następujące kroki:

    1. Utwórz konto magazynu, wykonując kroki opisane w tym artykule.
    2. Otwórz wystąpienie Eksplorator usługi Azure Storage.
    3. Połącz się z kontem magazynu utworzonym w kroku 1.
    4. Przejdź do obszaru Kontenery obiektów blob w usługach magazynu.
    5. Wybierz pozycję Utwórz nowy kontener.
    6. Kliknij prawym przyciskiem myszy nowy kontener, a następnie kliknij polecenie Pobierz sygnaturę dostępu współdzielonego.
    7. Wybierz prawidłowy czas rozpoczęcia i godzinę zakończenia, w zależności od wymagań.
    8. W przypadku wymaganych uprawnień wybierz pozycję Odczyt, Zapis i Lista.
    9. Wybierz przycisk Utwórz.
    10. Otrzymasz sygnaturę dostępu współdzielonego. Skopiuj część adresu URL i podaj ją do parametru -OutputSasUri .

Zagadnienia dotyczące parametrów

  • Parametry OutputSharePath i OutputShareCredential są używane do przechowywania dzienników w określonej lokalizacji użytkownika.

  • Parametry FromDate i ToDate mogą służyć do zbierania dzienników w określonym przedziale czasu. Jeśli te parametry nie są określone, dzienniki są zbierane domyślnie przez ostatnie cztery godziny.

  • Użyj parametru FilterByNode , aby filtrować dzienniki według nazwy komputera. Na przykład:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • Użyj parametru FilterByLogType , aby filtrować dzienniki według typu. Możesz filtrować według plików, udziałów lub windowsEvent. Na przykład:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • Możesz użyć parametru TimeOutInMinutes , aby ustawić limit czasu dla zbierania dzienników. Jest ona domyślnie ustawiona na 150 (2,5 godziny).

  • Zbieranie dzienników plików zrzutu jest domyślnie wyłączone. Aby ją włączyć, użyj parametru switch IncludeDumpFile .

  • Obecnie można użyć parametru FilterByRole do filtrowania kolekcji dzienników według następujących ról:

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

Domena

ECE

EventAdminRP

EventRP

ExternalDNS

Sieć szkieletowa

FabricRingServices

FirstTierAggregationService

FrP

Brama

Healthmonitoring

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

ZARZĄDZANIE URZĄDZENIAMI PRZENOŚNYMI

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NieuprzywilejowanyAppGateway

NRP

OboService

OEM

Dołączanie

Opcja PXE

QueryServiceCoordinator

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

Storage

Kontroler magazynu

Adres URL

SupportBridgeController

Obsługa

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

ZOSTAŁ

WASPUBLIC

Dodatkowe zagadnienia dotyczące dzienników diagnostycznych

  • Uruchomienie polecenia zajmuje trochę czasu na podstawie ról zbieranych przez dzienniki. Czynniki współtworzenia obejmują również czas trwania określony dla zbierania dzienników oraz liczbę węzłów w środowisku usługi Azure Stack Hub.

  • Po uruchomieniu zbierania dzienników sprawdź nowy folder utworzony w parametrze OutputSharePath określonym w poleceniu .

  • Każda rola ma swoje dzienniki wewnątrz poszczególnych plików zip. W zależności od rozmiaru zebranych dzienników rola może mieć dzienniki podzielone na wiele plików zip. W przypadku takiej roli, jeśli chcesz, aby wszystkie pliki dziennika zostały rozpakowane w jednym folderze, użyj narzędzia, które może rozpakować zbiorczo. Wybierz wszystkie spakowane pliki dla roli i wybierz pozycję wyodrębnij tutaj. Wszystkie pliki dziennika dla tej roli zostaną rozpakowane w jednym scalanym folderze.

  • Plik o nazwie Get-AzureStackLog_Output.log jest również tworzony w folderze zawierającym spakowane pliki dziennika. Ten plik jest dziennikiem danych wyjściowych polecenia, których można użyć do rozwiązywania problemów podczas zbierania dzienników. Czasami plik dziennika zawiera PS>TerminatingError wpisy, które można bezpiecznie zignorować, chyba że po uruchomieniu zbierania dzienników brakuje oczekiwanych plików dziennika.

  • Aby zbadać określony błąd, dzienniki mogą być potrzebne z więcej niż jednego składnika.

    • Dzienniki systemu i zdarzeń dla wszystkich maszyn wirtualnych infrastruktury są zbierane w roli VirtualMachines .
    • Dzienniki systemu i zdarzeń dla wszystkich hostów są zbierane w roli BareMetal .
    • Dzienniki zdarzeń klastra trybu failover i funkcji Hyper-V są zbierane w roli magazynu .
    • Dzienniki usług ACS są zbierane w rolach Usługi Storage i ACS .

Uwaga

Limity rozmiaru i wieku są wymuszane w dziennikach zebranych, ponieważ niezbędne jest zapewnienie wydajnego wykorzystania miejsca do magazynowania i uniknięcie zalewania dzienników. Jednak podczas diagnozowania problemu czasami potrzebne są dzienniki, które już nie istnieją z powodu tych limitów. W związku z tym zdecydowanie zaleca się odciążanie dzienników do zewnętrznego miejsca do magazynowania (konto magazynu na platformie Azure, dodatkowe lokalne urządzenie magazynujące itp.) co 8 do 12 godzin i przechowywanie ich tam przez 1–3 miesiące, w zależności od wymagań. Należy również upewnić się, że ta lokalizacja magazynu jest zaszyfrowana.

Invoke-AzureStackOnDemandLog

Możesz użyć polecenia cmdlet Invoke-AzureStackOnDemandLog , aby wygenerować dzienniki na żądanie dla niektórych ról (zobacz listę na końcu tej sekcji). Dzienniki generowane przez to polecenie cmdlet nie są domyślnie obecne w pakiecie dzienników, który otrzymujesz podczas wykonywania polecenia cmdlet Get-AzureStackLog . Ponadto zaleca się zbieranie tych dzienników tylko wtedy, gdy zażąda ich zespół pomocy technicznej firmy Microsoft.

Obecnie można użyć parametru do filtrowania -FilterByRole zbierania dzienników według następujących ról:

  • OEM
  • NC
  • SLB
  • Brama

Przykład zbierania dzienników diagnostycznych na żądanie

$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
}

Jak działa zbieranie dzienników diagnostycznych przy użyciu pep

Narzędzia diagnostyczne usługi Azure Stack Hub ułatwiają i wydajne zbieranie dzienników. Na poniższym diagramie przedstawiono sposób działania narzędzi diagnostycznych:

Diagram przepływu pracy narzędzi diagnostycznych usługi Azure Stack Hub

Moduł zbierający ślady

Moduł zbierający śledzenie jest domyślnie włączony i działa w tle w celu zbierania wszystkich dzienników śledzenia zdarzeń systemu Windows (ETW) z usług składników usługi Azure Stack Hub. Dzienniki ETW są przechowywane we wspólnym udziale lokalnym z pięciodniowym limitem wieku. Po osiągnięciu tego limitu najstarsze pliki są usuwane podczas tworzenia nowych plików. Domyślny maksymalny rozmiar każdego pliku to 200 MB. Sprawdzanie rozmiaru odbywa się co 2 minuty, a jeśli bieżący plik wynosi >= 200 MB, zostanie zapisany i zostanie wygenerowany nowy plik. Istnieje również limit 8 GB całkowitego rozmiaru pliku wygenerowanego na sesję zdarzenia.

Get-AzureStackLog

Polecenie cmdlet programu PowerShell Get-AzureStackLog może służyć do zbierania dzienników ze wszystkich składników w środowisku usługi Azure Stack Hub. Zapisuje je w plikach zip w lokalizacji zdefiniowanej przez użytkownika. Jeśli zespół pomocy technicznej usługi Azure Stack Hub potrzebuje Twoich dzienników w celu rozwiązania problemu, może poprosić Cię o uruchomienie polecenia Get-AzureStackLog.

Przestroga

Te pliki dziennika mogą zawierać dane osobowe. Przed publicznym opublikowaniem wszystkich plików dziennika należy wziąć to pod uwagę.

Poniżej przedstawiono przykładowe typy dzienników, które są zbierane:

  • Dzienniki wdrażania usługi Azure Stack Hub
  • Dzienniki zdarzeń systemu Windows
  • Dzienniki Pantera
  • Dzienniki klastrów
  • Dzienniki diagnostyczne magazynu
  • Dzienniki ETW

Te pliki są zbierane i zapisywane w udziale przez moduł zbierający dane śledzenia. Get-AzureStackLog następnie można ich użyć do zbierania ich w razie potrzeby.