若要在集成系统上运行 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 RPs 的日志。 常规语法为:
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 共享或 Internet 访问权限,也可以在 Azure Stack Hub 上创建 Blob 存储帐户来传输日志,然后使用客户端检索这些日志。
若要为存储帐户生成 SAS 令牌,需要以下权限:
- 访问 Blob 存储服务。
- 对容器资源类型的访问
若要生成要用于参数的
-OutputSasUri
SAS URI 值,请执行以下步骤:- 按照 本文中的步骤创建存储帐户。
- 打开 Azure 存储资源管理器的实例。
- 连接到在步骤 1 中创建的存储帐户。
- 在存储服务中导航到 Blob 容器。
- 选择“ 创建新容器”。
- 右键单击新容器,然后单击“ 获取共享访问签名”。
- 根据要求选择有效的开始时间和结束时间。
- 对于所需的权限,请选择“ 读取”、“ 写入”和 “列表”。
- 选择 创建。
- 你将获得共享访问签名。 复制 URL 部分并将其提供给
-OutputSasUri
参数。
参数注意事项
参数 OutputSharePath 和 OutputShareCredential 用于将日志存储在用户指定的位置。
可以使用 FromDate 和 ToDate 参数来收集特定时间段的日志。 如果未指定这些参数,则默认收集过去四小时的日志。
使用 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
ACS织物
ACSFrontEnd
ACSMetrics
ACSMigrationService
ACS监控服务
ACSSettingsService
ACSTableMaster
ACSTableServer
ACSWac
ADFS
ApplicationController
ASAppGateway
天蓝桥
AzureMonitor
BareMetal
BRP
CA
CacheService
计算
CPI
CRP
DeploymentMachine
DiskRP
域名
ECE
EventAdminRP
EventRP
ExternalDNS
FabricRing
FabricRingServices
FirstTierAggregationService
玻璃纤维增强塑料 (FRP)
网关
健康监测
HintingServiceV2
HRP
国际广播学院
InfraServiceController
KeyVaultAdminResourceProvider
KeyVaultControlPlane
KeyVaultDataPlane
KeyVaultInternalControlPlane
KeyVaultInternalDataPlane
KeyVaultNamingService
MDM
MetricsAdminRP
MetricsRP
MetricsServer
MetricsStoreService
MonAdminRP
MonRP
NC
NonPrivilegedAppGateway
NRP
OboService
OEM
OnboardRP
PXE
查询服务协调员
QueryServiceWorker
SeedRing
SeedRingServices
SLB
SQL
SRP
储存
存储控制器
URP
SupportBridgeController
SupportRing
SupportRingServices
SupportBridgeRP
UsageBridge
VirtualMachines
WAS
WASPUBLIC
有关诊断日志的其他注意事项
此命令需要一些时间来运行,具体取决于日志收集的角色。 贡献因素还包括为日志收集指定的持续时间,以及 Azure Stack Hub 环境中的节点数。
运行日志收集时,请检查在命令中指定的 OutputSharePath 参数中创建的新文件夹。
每个角色在其单个 zip 文件中都有其日志。 根据收集的日志的大小,角色的日志可能拆分为多个 zip 文件。 对于此类角色,如果要将所有日志文件解压缩到单个文件夹中,请使用可以批量解压缩的工具。 选择角色的所有压缩文件,然后选择“解压缩到此处”。 该角色的所有日志文件都将解压缩到单个合并文件夹中。
还会在包含压缩日志文件的文件夹中创建名为 Get-AzureStackLog_Output.log 的文件。 此文件是命令输出的日志,可用于排查日志收集过程中的问题。 有时,日志文件中包含一些可以安全忽略的条目,除非日志收集运行后发现缺少预期的日志文件。
若要调查特定故障,可能需要来自多个组件中的日志。
- 所有基础结构 VM 的系统和事件日志都收集在 VirtualMachines 角色中。
- 所有主机的系统和事件日志收集在 BareMetal 角色中。
- 故障转移群集和 Hyper-V 事件日志收集在“存储”角色中。
- ACS 日志收集在“存储”角色和 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 组件服务收集 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来收集它们。