Udostępnij przez


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ą, zaczekaj 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
    
  • Zbierz logi 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 pliki dziennika z ról VirtualMachines i BareMetal, stosując filtrowanie według dat dla okresu od 8 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 (aparat AKS) w usłudze Azure Stack. Dzienniki platformy Kubernetes powinny być przechowywane na koncie magazynu dzierżawy w formacie umożliwiającym również zastosowanie zakresu czasu kolekcji.

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

    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 adresów RPs dodawania wartości. Ogólna składnia to:

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

    Aby zebrać dzienniki dla dostawcy usług SQL:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    Aby zebrać dzienniki dla MySQL RP:

    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>"
    

    Przykład:

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

    Uwaga / Notatka

    Ta procedura jest przydatna do przekazywania logów. Nawet jeśli nie masz dostępnego udziału SMB lub dostępu do Internetu, możesz utworzyć konto usługi Blob Storage w usłudze Azure Stack Hub, aby przenieść dzienniki, a następnie skorzystać z klienta, aby pobrać te dzienniki.

    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 (SAS) do użycia dla parametru -OutputSasUri, wykonaj następujące kroki:

    1. Utwórz konto magazynowe, wykonując kroki opisane w tym artykule.
    2. Otwórz wystąpienie Eksploratora usługi Azure Storage.
    3. Połącz się z kontem magazynu utworzonym w kroku 1.
    4. Przejdź do Kontenerów obiektów BLOB w Usługach magazynowania.
    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łową godzinę rozpoczęcia i godzinę zakończenia w zależności od wymagań.
    8. Aby uzyskać wymagane uprawnienia, wybierz pozycję Odczyt, Zapis i Lista.
    9. Wybierz 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 przez określony okres. 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. 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 pozycji Plik, Udział lub WindowsEvent. Przykład:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByLogType File
    
  • Możesz użyć parametru TimeOutInMinutes , aby ustawić limit czasu dla zbierania dzienników. Domyślnie jest ustawiona wartość 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

Usługa Migracji ACS

ACSMonitoringService

ACSSettingsService

ACSTableMaster

ACSTableServer

ACSWac

Usługi ADFS

ApplicationController

ASAppGateway

AzureBridge

AzureMonitor

BareMetal

BRP

CA

CacheService

Obliczyć

CPI

CRP

Maszyna wdrożeniowa

DiskRP

Domena

ECE

EventAdminRP

EventRP

ExternalDNS

Sieć szkieletowa

FabricRingServices

Usługa Agregacji Pierwszego Poziomu (FirstTierAggregationService)

FRP

Brama sieciowa

Monitorowanie kondycji

HintingServiceV2

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane

KeyVaultInternalDataPlane

KeyVaultNamingService

MDM (Zarządzanie Urządzeniami Mobilnymi)

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

NC

NonPrivilegedAppGateway

NRP

OboService

producent oryginalnego wyposażenia (OEM)

OnboardRP

PXE

KoordynatorUsługiZapytania

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

Przechowywanie danych

Kontroler pamięci masowej

URP

SupportBridgeController

Pierścień Wsparcia

SupportRingServices

SupportBridgeRP

UsageBridge

Maszyny wirtualne

BYŁ

WASPUBLIC

Dodatkowe zagadnienia dotyczące dzienników diagnostycznych

  • Uruchomienie polecenia na podstawie ról zbieranych przez dzienniki zajmuje trochę czasu. Czynniki przyczyniające się obejmują również określony czas na zbieranie dzienników oraz liczbę węzłów w środowisku Azure Stack Hub.

  • W miarę uruchamiania 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ć swoje dzienniki podzielone na wiele plików zip. W przypadku takiej roli, jeśli chcesz, aby wszystkie pliki dziennika zostały wypakowane do jednego folderu, użyj narzędzia, które może wypakowywać zbiorczo. Wybierz wszystkie spakowane pliki związane z rolą i wybierz Wyodrębnij tutaj. Wszystkie pliki dziennika dla tej roli zostaną rozpakowane do jednego scalonego folderu.

  • Plik o nazwie Get-AzureStackLog_Output.log jest również tworzony w folderze zawierającym spakowane pliki dziennika. Ten plik jest logiem wyników poleceń, który może służyć do rozwiązywania problemów podczas gromadzenia logó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 systemowe i dzienniki zdarzeń dla wszystkich hostów są zbierane w ramach roli BareMetal.
    • Klaster przełączania awaryjnego i logi zdarzeń Hyper-V są zbierane przy użyciu roli Storage.
    • Dzienniki ACS są zbierane w rolach Storage i ACS.

Uwaga / Notatka

Limity rozmiaru i wieku są stosowane do dzienników, które zostały zebrane, ponieważ niezbędne jest zapewnienie efektywnego wykorzystania miejsca do magazynowania, aby uniknąć zalania dużą ilością dzienników. Jednak podczas diagnozowania problemu czasami potrzebne są dzienniki, które już nie istnieją ze względu na te limity. 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 w tym miejscu 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 tego zespół pomocy technicznej firmy Microsoft.

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

  • producent oryginalnego wyposażenia (OEM)
  • NC
  • SLB
  • Brama sieciowa

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 za pomocą PEP

Narzędzia diagnostyczne usługi Azure Stack Hub ułatwiają efektywne 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

Zbieracz śladów

Moduł zbierający ślad jest domyślnie włączony i działa w tle w sposób ciągły w celu zbierania wszystkich dzienników śledzenia zdarzeń dla systemu Windows (ETW) z usług składników usługi Azure Stack Hub. Dzienniki ETW są przechowywane we wspólnej lokalnej przestrzeni z pięciodniowym limitem wieku. Po osiągnięciu tego limitu najstarsze pliki zostaną usunięte w miarę tworzenia nowych plików. Domyślny maksymalny rozmiar dla każdego pliku to 200 MB. Sprawdzanie rozmiaru odbywa się co 2 minuty, a jeśli bieżący plik to >= 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

Cmdlet programu PowerShell Get-AzureStackLog może być używany do zbierania dzienników ze wszystkich komponentów w środowisku 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, aby rozwiązać problem, może poprosić Cię o uruchomienie polecenia Get-AzureStackLog.

Ostrzeżenie

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

Poniżej przedstawiono kilka przykładowych typów dzienników, które są zbierane:

  • Dzienniki wdrażania usługi Azure Stack Hub
  • Dzienniki zdarzeń systemu Windows
  • Dzienniki pantera
  • Dzienniki klastra
  • Dzienniki diagnostyczne magazynu
  • Dzienniki ETW

Te pliki są zbierane i zapisywane w udostępnionym folderze przez moduł zbierający ślady. Get-AzureStackLog można następnie używać do ich zbierania, gdy jest to potrzebne.