使用具有特殊權限的端點 (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
    
  • 從 VirtualMachines 和 BareMetal 角色收集記錄,且記錄日期篩選為過去 8 小時:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByRole VirtualMachines,BareMetal -FromDate (Get-Date).AddHours(-8)
    
  • 從 VirtualMachines 和 BareMetal 角色收集記錄,以日期篩選 8 小時前到 2 小時前時段的記錄:

    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) 
    
  • 收集 value-add RP (資源提供者) 的記錄。 一般語法是:

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

    收集 SQL RP 的記錄:

    Get-AzureStackLog -FilterByResourceProvider SQLAdapter
    

    收集 MySQL RP 的記錄:

    Get-AzureStackLog -FilterByResourceProvider MySQLAdapter
    

    收集事件中樞的記錄:

    Get-AzureStackLog -FilterByResourceProvider eventhub
    

    收集 Azure Stack Edge 的記錄:

    Get-AzureStackLog -FilterByResourceProvide databoxedge
    
  • 收集記錄,並將其儲存在指定的 Azure 儲存體 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 儲存體帳戶以傳輸記錄,然後使用用戶端來擷取這些記錄。

    若要產生儲存體帳戶的 SAS 權杖,需要下列權限:

    • Blob 儲存體服務的存取權。
    • 容器資源類型的存取權。

    若要產生要用於 -OutputSasUri 參數的 SAS URI 值,請執行下列步驟:

    1. 若要建立儲存體帳戶,請遵循本文中的步驟。
    2. 開啟 Azure 儲存體總管的執行個體。
    3. 連線到步驟 1 建立的儲存體帳戶。
    4. 瀏覽至 [儲存體服務] 中的 [Blob 容器]
    5. 選取 [建立新的容器]
    6. 以滑鼠右鍵按一下新容器,然後按一下 [取得共用存取簽章]
    7. 根據您的需求,選取有效的 [開始時間] 和 [結束時間]
    8. 針對必要權限,請選取 [讀取]、[寫入] 和 [列出清單]
    9. 選取 [建立]。
    10. 您會取得共用存取簽章。 複製 URL 並提供給 -OutputSasUri 參數。

參數考量

  • OutputSharePathOutputShareCredential 參數可用來將記錄儲存到使用者指定的位置。

  • FromDateToDate 參數可以用來收集特定時段的記錄。 如果未指定這些參數,預設將會收集過去 4 小時的記錄。

  • 使用 FilterByNode 參數依電腦名稱篩選記錄。 例如:

    Get-AzureStackLog -OutputSharePath "<path>" -OutputShareCredential $cred -FilterByNode azs-xrp01
    
  • 使用 FilterByLogType 參數依類型篩選記錄。 您可以選擇依檔案、共用或 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

計算

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

OnboardRP

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 項目,除非在執行記錄收集後遺漏了預期的記錄檔,否則可放心忽略此項目。

  • 若要調查特定失敗原因,則可能需要多個元件的記錄。

    • 所有基礎結構虛擬機器的系統和事件記錄,皆會收集在「VirtualMachines」角色中。
    • 所有主機的系統和事件記錄,皆會收集在「BareMetal」角色中。
    • 容錯移轉叢集和 Hyper-V 事件記錄,皆會收集在「Storage」角色中。
    • ACS 記錄則會收集在「Storage」和「ACS」角色中。

注意

我們會強制執行容量大小和時間限制,以便確保您能有效率地利用儲存空間,並避免塞滿記錄。 不過,因為這些限制,在診斷問題時,有時需要的記錄可能不再存在。 因此,強烈建議您每隔 8 到 12 個小時將記錄卸載到外部儲存體空間 (Azure 中的儲存體帳戶、額外的內部部署儲存體裝置等),並視需求將它們存放在該處 1-3 個月。 您還要確定此儲存位置已加密。

Invoke-AzureStackOnDemandLog

您可以使用 Invoke-AzureStackOnDemandLog Cmdlet 產生特定角色的隨選記錄 (請參閱此節結尾處的清單)。 當您執行 Get-AzureStackLog Cmdlet 時,此 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 元件服務收集所有的 Windows 事件追蹤 (ETW) 記錄。 ETW 記錄會儲存在通用的本機共用內並保留五天。 一旦達到此限制,建立新檔案時將會同時刪除最舊的檔案。 每個檔案預設的允許大小上限為 200 MB。 每隔 2 分鐘執行一次大小檢查,如果目前的檔案 >= 200 MB,則會儲存該檔案並產生新檔案。 每個事件工作階段所產生的總檔案大小也有 8 GB 的限制。

Get-AzureStackLog

PowerShell Cmdlet Get-AzureStackLog 可用來收集 Azure Stack Hub 環境中所有元件的記錄。 它會將它們以 ZIP 檔案儲存在使用者定義的位置。 若 Azure Stack Hub 技術支援小組需要您的記錄,以便針對問題進行疑難排解,小組可能會要求您執行 Get-AzureStackLog。

警告

這些記錄檔可能包含個人識別資訊 (PII)。 在您公開公佈任何記錄檔之前,請先將這點納入考量。

以下是收集到的一些範例記錄類型:

  • Azure Stack Hub 部署記錄
  • Windows 事件記錄
  • Panther 記錄
  • 叢集記錄
  • 儲存體診斷記錄
  • ETW 記錄

追蹤收集器會收集這些檔案並儲存在共用內。 然後,可於必要時使用 Get-AzureStackLog 來收集這些檔案。