共用方式為


使用具特殊許可權的端點傳送 Azure Stack Hub 診斷記錄 (PEP)

若要在整合式系統上執行 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) 
    
  • 收集加值 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 參數。

參數考慮

  • OutputSharePath OutputShareCredential 參數 用於將記錄儲存在使用者指定的位置。

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

  • 使用 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 switch 參數。

  • 目前,您可以使用 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

玻璃纖維強化塑料

閘道

健康監測

HintingServiceV2 (提示服務V2)

HRP

IBC

InfraServiceController

KeyVaultAdminResourceProvider

KeyVaultControlPlane

KeyVaultDataPlane

KeyVaultInternalControlPlane(密鑰庫內部控制平面)

KeyVaultInternalDataPlane

金鑰庫命名服務

MDM

MetricsAdminRP

MetricsRP

MetricsServer

MetricsStoreService

MonAdminRP

MonRP

數控

非特權應用程式閘道器

NRP

OboService

OEM(原廠設備製造商)

OnboardRP

PXE

查詢服務協調員

QueryServiceWorker

SeedRing

SeedRingServices

SLB

SQL

SRP

存儲

儲存控制器

URP

SupportBridgeController

SupportRing

SupportRingServices

SupportBridgeRP

UsageBridge

VirtualMachines

WASPUBLIC

診斷紀錄的進一步考慮

  • 此命令根據記錄正在收集的角色,可能需要一些時間才能完成執行。 參與因素還包括為記錄收集指定的時間持續時間,以及 Azure Stack Hub 環境中的節點數目。

  • 當記錄收集執行時,請檢查命令中指定的 OutputSharePath 參數中所建立的新資料夾。

  • 每個角色在其個別 zip 檔案內都有其記錄。 視收集的記錄大小而定,角色可能會將其記錄分割成多個 zip 檔案。 針對這類角色,如果您想要將所有記錄檔解壓縮到單一資料夾,請使用可大量解壓縮的工具。 選取角色的所有壓縮檔案,然後選取 [解壓縮到此處]。 該角色的所有記錄檔將被解壓縮到一個合併後的資料夾。

  • 也會在包含壓縮記錄檔的資料夾中建立名為 Get-AzureStackLog_Output.log 的檔案。 此檔案是命令輸出的記錄,可用於針對記錄收集期間的問題進行疑難解答。 有時記錄檔包含 PS>TerminatingError 項目,可以安全地忽略,除非在執行記錄收集程序後,預期的記錄檔遺漏不見。

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

    • 系統會收集所有基礎結構 VM 的系統和事件記錄檔,以 VirtualMachines 角色。
    • 系統在 BareMetal 角色中收集所有主機的系統和事件記錄檔。
    • 故障轉移叢集和 Hyper-V 事件記錄檔會收集於 儲存體 角色中。
    • ACS 記錄會收集於 儲存ACS 角色中。

注意

收集的日誌受到大小和年齡限制的管控,以確保有效利用儲存空間,並避免被大量日誌淹沒。 不過,診斷問題時,您有時需要因為這些限制而不再存在的記錄。 因此,強烈建議 將記錄卸除至外部儲存空間(Azure 中的記憶體帳戶、8 到 12 小時的額外內部部署記憶體裝置等),並根據您的需求將其保留 1-3 個月。 您也應該確定此儲存位置已加密。

Invoke-AzureStackOnDemandLog

您可以使用 Invoke-AzureStackOnDemandLog Cmdlet 來產生特定角色的隨選記錄(請參閱本節結尾的清單)。 當您執行 Get-AzureStackLog Cmdlet 時,您收到的記錄組合預設不會顯示此 Cmdlet 所產生的記錄。 此外,建議您只在Microsoft支援小組要求時收集這些記錄。

目前,您可以使用 -FilterByRole 參數,依下列角色篩選記錄收集:

  • 原始設備製造商 (OEM)
  • 數控
  • 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 事件記錄檔
  • 黑豹記錄
  • 叢集記錄
  • 記憶體診斷記錄
  • ETW 記錄

這些檔案會由追蹤收集器收集,並儲存在共享資料夾中。 然後,Get-AzureStackLog 可用來在必要時收集它們。