在适用于 Windows 和 Horizon 的 Omnissa Workspace ONE Experience Management 环境中使用增强的操作系统崩溃分析功能,可帮助捕获根本原因事件,而不是捕获内核级别的事件。此功能默认已激活。
收集的设备数据
适用于 Windows 和 Horizon 的体验管理代理使用 ExternalDumpAnalyzer 进程(包含在代理中)收集所列的操作系统崩溃分析功能属性。
| 列 | 属性 | 数据类别 | 数据说明 | 相关事件 |
|---|---|---|---|---|
| 完整堆栈跟踪 | complete_stack_trace | 设备诊断/崩溃诊断数据 | 从操作系统崩溃转储分析捕获的完整堆栈跟踪。 这是一个文本字段,可能包含多个用于诊断系统崩溃的堆栈帧。 | 来自 DeviceEventTracker 的系统崩溃 |
| 归因模块 | caused_by_module | 设备诊断/崩溃诊断数据 | 由转储分析标识为与崩溃原因关联的模块或驱动程序,例如,.dll、.sys 或模块名称。 这是一个字符串字段。 | 来自 DeviceEventTracker 的系统崩溃 |
| 关联进程 | process_associated_with | 设备诊断/崩溃诊断数据 | 根据转储分析确定的与系统崩溃关联的进程名称。 这是一个字符串字段。 | 来自 DeviceEventTracker 的系统崩溃 |
要求
在将增强的操作系统崩溃分析功能部署到 Windows 设备之前,请确保您已满足所列的要求。
- 使用适用于 Windows 的体验管理和 Horizon 代理 26.07 或更高版本。
- 确保设备的符号缓存目录可供
Workspace ONE Endpoint Telemetry服务帐户写入。 - 确保设备可以直接或通过配置的代理访问位于
http://msdl.microsoft.com/download/symbols的 Microsoft 公用符号服务器。 - 在设备上安装并使用 WinDbg。
- 对服务方案使用系统级别的环境变量。
- 重新启动
Workspace ONE Endpoint Telemetry服务,或在更改系统级别的环境变量后重新启动系统。
此功能的工作原理是什么?
当体验管理检测到 Windows 操作系统崩溃转储时,DeviceEventTracker 会启动 ExternalDumpAnalyzer 进程 (ws1dumpa.exe)。有两种操作系统崩溃分析模式:IPC(进程间通信)模式和独立模式。
IPC 模式
- 当 Windows 操作系统崩溃发生且系统检测到操作系统崩溃转储时,DeviceEventTracker 会从
C:\Program Files\WorkspaceONE\Endpoint Telemetry\Tools\ws1dumpa.exe启动 ExternalDumpAnalyzer 进程。 - 崩溃转储路径将作为参数传递到该进程。
- 开始分析之前,ws1dumpa.exe 会执行以下验证。
- 该请求正在以 SYSTEM 或管理员特权运行。
- 转储文件存在。
- 调试器工具可用。
- 网络连接可用。
- 如果任何验证失败,系统将记录相应的警告或错误消息。
- 验证后,ExternalDumpAnalyzer 进程将执行下列步骤。
- 使用安装的调试器分析转储。
- 生成崩溃分析结果。
- 将结果报告回遥测服务。
- 分析器输出包括以下扩充的崩溃字段。
process_associated_withcaused_by_modulecomplete_stack_trace
调试器回退
如果调试器工具不可用,分析器将回退到内置调试器。它会将内置的 Windows 调试助手与崩溃转储详细信息、最小进程、模块信息和 complete_stack_trace 的符号选项搭配使用。complete_stack_trace 符号选项有助于进行分析。
符号解析
- 如果网络连接可用,则系统可以 从符号服务器下载匹配的符号。WinDbg 使用这些符号进行准确的分析。
- 如果网络不可用,但所需的符号已存在于本地缓存中,分析器也可以使用它们。
分析回退
如果外部分析由于任何原因而失败,DeviceEventTracker 将回退到内嵌转储分析。它会将内置的 Windows 调试助手与崩溃转储详细信息、最小进程、模块信息和 complete_stack_trace 的符号选项搭配使用。complete_stack_trace 符号选项有助于进行分析。
最后, 系统会生成 system_crash 事件,并将其与这些扩充的属性一起发送到体验管理。
独立模式
您也可以通过提供转储文件作为参数,独立执行 ExternalDumpAnalyzer 进程。
- 以管理员身份打开命令提示符。
- 运行以下命令
C:\Program Files\WorkspaceONE\Endpoint Telemetry\Tools\ws1dumpa.exe "dumpfilepath"。
行为
- 所有验证和分析功能均与 IPC 模式相同。
- 分析结果将直接显示在命令提示符中。
- 结果不会发送到 Intelligence 或体验管理服务。
- 此模式主要用于故障排除和验证目的。
在设备上安装并使用 WinDbg
ExternalDumpAnalyzer 进程使用 Microsoft 调试引擎加载操作系统崩溃转储、解析符号并生成崩溃分析字段,如堆栈跟踪和归因模块。使用 WinDbg 作为调试器,因为它构建在 Microsoft 调试器引擎之上,并提供对操作系统崩溃分析的完全访问权限。
搜索顺序
ExternalDumpAnalyzer 进程按下列顺序搜索 Microsoft 调试引擎组件。
- Windows SDK 调试工具路径,例如
C:\\Program Files (x86)\\Windows Kits\\10\\Debuggers\\x64- 如果找不到任何内容,则会尝试下一个搜索位置。
- Microsoft Store WinDbg 软件包路径
C:\\Program Files\\WindowsApps\\Microsoft.WinDbg_*- 如果找不到任何内容,则会尝试下一个搜索位置。
- 系统
dbgeng.dll
WindDbg 安装方法
您可以使用两种方法安装 WinDbg:Microsoft Store 或 Windows SDK。
在部署系统使用的设备环境中运行安装命令并验证安装路径,然后广泛激活增强的操作系统崩溃分析。
- Microsoft Store 安装
- 您可以管理员身份运行命令行,使用 WinGet 软件包管理器和所列命令安装 WinDbg。
winget install --id Microsoft.WinDbg --source msstore --accept-package-agreements --accept-source-agreements- 使用 Workspace ONE UEM 中的软件分发 (SFD) 功能将该命令推送到设备。
- Windows SDK 安装
- 如果您的组织阻止使用 App Store,请使用 Windows SDK 及其相应的Windows SDK 调试工具。
- 确保 dbgeng.dll 系统文件位于下列路径之一中。
- C:\Program Files (x86)\Windows Kits\10\Debuggers\x64
- C:\Program Files (x86)\Windows Kits\10\Debuggers\arm64
- C:\Program Files (x86)\Windows Kits\10\Debuggers\x86
ExternalDumpAnalyzer 进程在哪里?
ExternalDumpAnalyzer 进程驻留在设备上的下列路径中。
Computer\HKEY_LOCAL_MACHINE\SOFTWARE\WorkspaceONE\Endpoint Telemetry\Service\Config\ExternalDumpAnalyzer\Enabled
您可以将设备注册表中的键值对更改为 false,以停用增强的操作系统崩溃分析功能。
| 键名称 | 值 | 说明 |
|---|---|---|
| 启用 | true | ExternalDumpAnalyzer 已激活。 |
| 启用 | false | ExternalDumpAnalyzer 已停用。 |
用于停用的脚本
如果您不希望手动停用键值对,则可以创建自己的 PowerShell 脚本(例如,将文件命名为 Set-ExternalDumpAnalyzer.ps1)以进行远程或批量停用,而不是手动编辑注册表项。
.\Set-ExternalDumpAnalyzer.ps1— 激活该功能 (Enabled = "true").\Set-ExternalDumpAnalyzer.ps1 -Disable— 停用该功能 (Enabled = "false").\Set-ExternalDumpAnalyzer.ps1 -Remove— 完全移除该键(恢复为默认值)
注意:确保在写入 HKLM 时使用管理员/SYSTEM 特权运行脚本。
#Requires -RunAsAdministrator
<#
.SYNOPSIS
Enables, disables, or removes the DEEM / Endpoint Telemetry
"ExternalDumpAnalyzer" registry setting, for remote/mass deployment.
.DESCRIPTION
Target key:
HKLM\SOFTWARE\WorkspaceONE\Endpoint Telemetry\Service\Config\ExternalDumpAnalyzer
Actions:
(default) Set "Enabled" = "true" -> feature enabled
-Disable Set "Enabled" = "false" -> feature disabled
-Remove Delete the ExternalDumpAnalyzer key entirely
-> agent falls back to its default (disabled)
Notes:
- "Enabled" is a STRING (REG_SZ) "true"/"false", matching the admin guide and
the agent config option ExternalDumpAnalyzer/Enabled (bool, default false).
- Creates the key path if it does not exist (enable/disable).
- Always targets the 64-bit registry view, so it works even if invoked by a
32-bit deployment host (avoids WOW6432Node redirection).
- Intended for Workspace ONE UEM scripts, Intune, GPO startup scripts, or
PowerShell Remoting (Invoke-Command).
.PARAMETER Disable
Disable the feature (sets Enabled = "false"). Omit to enable ("true").
.PARAMETER Remove
Remove the ExternalDumpAnalyzer key from the registry (reverts to default).
.EXAMPLE
.\Set-ExternalDumpAnalyzer.ps1
Enables ExternalDumpAnalyzer (Enabled = "true").
.EXAMPLE
.\Set-ExternalDumpAnalyzer.ps1 -Disable
.EXAMPLE
.\Set-ExternalDumpAnalyzer.ps1 -Remove
.NOTES
Exit codes: 0 success | 1 general failure | 2 verification failed |
5 not elevated
#>
[CmdletBinding(DefaultParameterSetName = 'Set')]
param(
[Parameter(ParameterSetName = 'Set')]
[switch]$Disable,
[Parameter(ParameterSetName = 'Remove')]
[switch]$Remove
)
$ErrorActionPreference = 'Stop'
$subKeyPath = 'SOFTWARE\WorkspaceONE\Endpoint Telemetry\Service\Config\ExternalDumpAnalyzer'
$valueName = 'Enabled'
function Test-IsAdministrator {
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal($identity)
return $principal.IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)
}
try {
if (-not (Test-IsAdministrator)) {
Write-Error 'Must be run as Administrator (writes to HKLM).'
exit 5
}
# Open the 64-bit HKLM view explicitly (robust to 32-bit callers).
$base = [Microsoft.Win32.RegistryKey]::OpenBaseKey(
[Microsoft.Win32.RegistryHive]::LocalMachine,
[Microsoft.Win32.RegistryView]::Registry64)
if ($Remove) {
# ---- Remove the ExternalDumpAnalyzer key entirely ----
$existing = $base.OpenSubKey($subKeyPath)
if ($null -eq $existing) {
Write-Output "ExternalDumpAnalyzer key not present; nothing to remove."
Write-Output "Key: HKLM\$subKeyPath"
$base.Close()
exit 0
}
$existing.Close()
$base.DeleteSubKeyTree($subKeyPath)
# Verify removal.
$check = $base.OpenSubKey($subKeyPath)
$base.Close()
if ($null -ne $check) {
$check.Close()
Write-Error "Verification failed: key still present at HKLM\$subKeyPath"
exit 2
}
Write-Output "ExternalDumpAnalyzer REMOVED from registry (agent reverts to default: disabled)."
Write-Output "Key: HKLM\$subKeyPath"
exit 0
}
# ---- Enable / Disable ----
$desired = if ($Disable) { 'false' } else { 'true' }
$stateText = if ($Disable) { 'DISABLED' } else { 'ENABLED' }
# CreateSubKey creates the full path if missing and opens it writable.
$key = $base.CreateSubKey($subKeyPath)
if ($null -eq $key) {
Write-Error "Failed to open/create registry key: HKLM\$subKeyPath"
exit 1
}
# Value is a REG_SZ string "true"/"false".
$key.SetValue($valueName, $desired, [Microsoft.Win32.RegistryValueKind]::String)
# Verify the written value.
$actual = $key.GetValue($valueName)
$key.Close()
$base.Close()
if ($actual -ne $desired) {
Write-Error "Verification failed: $valueName = '$actual' (expected '$desired')."
exit 2
}
Write-Output "ExternalDumpAnalyzer $stateText ($valueName = `"$actual`")"
Write-Output "Key: HKLM\$subKeyPath"
exit 0
}
catch {
Write-Error "Failed to update ExternalDumpAnalyzer: $($_.Exception.Message)"
exit 1
}
符号相关设置的策略
您可以配置一些策略来定义与符号相关的设置。这些策略位于 Workspace ONE Endpoint Telemetry > DEEM > Symbol Store Settings 下面。
策略使用的注册表项是 Symbol Store Settings 策略(该策略位于
HKLM\Software\Policies\WorkspaceONE\Endpoint Telemetry\DEEM\Symbol Store Settings),并且包含要配置的 5 个符号注册表策略文件。
- 本地符号
- 配置要使用哪些符号变量。
- 这些设置会影响 Microsoft 符号、替代符号和符号代理注册表文件。
- True = 本地符号变量
- 在
Symbol Store Settings策略中,将UseLocalSymbolConfiguration配置为true,以将 ExternalDumpAnalyzer 进程设置为使用本地符号变量。 - 必须在设备上至少配置其中一个本地符号变量。
_NT_SYMBOL_PATH_NT_ALT_SYMBOL_PATH_NT_SYMBOL_PROXY
- 如果未在设备上配置其中任何一个本地符号变量,ExternalDumpAnalyzer 进程可以使用默认受管符号缓存。
- 如果将此策略设置为 true,系统将会忽略 Microsoft 符号、替代符号和符号代理注册表文件。
- 在
- False = 策略值或默认管理的符号变量
- 在
Symbol Store Settings策略中,将UseLocalSymbolConfiguration配置为false,以将 ExternalDumpAnalyzer 进程设置为使用策略值或默认受管符号变量。 - 如果存在策略值,系统首选使用这些值。如果未在设备上设置策略值,则系统将使用受管默认值。
- 在
- Microsoft 符号
- 配置 Microsoft 符号路径和本地缓存位置。
- 注册表值为
MicrosoftSymbols。 - 默认值(如未配置)为
srv*C:\ProgramData\WorkspaceONE\ws1etlm\MSSymbols*http://msdl.microsoft.com/download/symbols。 - 自定义缓存示例为
srv*C:\Symbols*http://msdl.microsoft.com/download/symbols。 - 如果将
UseLocalSymbolConfiguration配置为true,系统将忽略此注册表文件。
- 替代符号
- 配置与路径
_NT_ALT_SYMBOL_PATH等效的其他符号路径。 - 注册表值为
AlternativeSymbols。 - 系统会先搜索此路径,然后再搜索 Microsoft 符号路径。
- 例如,
C:\PrivateSymbols。 - 如果将
UseLocalSymbolConfiguration配置为true, 系统将忽略此注册表文件。
- 配置与路径
- 符号代理
- 配置与
_NT_SYMBOL_PROXY等效的符号代理。 - 注册表值为
SymbolProxy。 - 例如
http://proxy.example.com:8080。 - 如果将
UseLocalSymbolConfiguration配置为true,系统将忽略此注册表文件。
- 配置与
- 删除符号
- 配置受管本地符号缓存在删除之前保留的时长。
- 注册表值为
DeleteSymbolsKeepHours。 - 最好将清理定时器与配置的保留计划相关联。
- 如果设备过去已下载符号,并且清理即将进行或已逾期,请在引导(崩溃后发生)后将此注册表延迟 15 到 25 分钟。
- 如果稍后需要清理设备,请根据该保留期外加 15 到 25 分钟设置定时器。此定时器确保清理不会在启动时立即运行,也不会干扰崩溃转储分析。
- 允许的值包括
Minimum: 1 hour、Maximum: 720 hours和Default: 168 hours。七天内有 168 小时。
配置符号策略
从两种方法中做出选择,以激活和部署增强的操作系统崩溃分析功能。使用 PowerShell 命令或使用组策略对象 (GPO)。
- PowerShell
- 使用注册表策略,直接写入策略注册表项。
- 如果使用软件分发 (SFD) 功能向设备推送命令并且不使用 GPO,则此方法非常有用。
- 此方法需要在设备上使用 WinDbg。
- 组策略对象
- 在组策略管理编辑器中配置符号注册表策略文件。
- 使用 ADMX 和 ADML 模板,在域 GPO 级别从组策略管理控制台部署符号策略。
- GPO 会将相同的注册表支持的策略值写入到目标设备上。
- 如果使用 GPO 管理设备并且不使用 SFD,则此方法非常有用。
PowerShell 方法
如果使用 SFD 功能将命令推送到设备,请根据需要添加必要的符号注册表策略文件并调整相应策略的值。
重要信息:在更改计算机环境变量后重新启动 Workspace ONE Endpoint Telemetry 服务或重新引导设备,因为 Windows 服务会在服务进程启动时读取环境变量。
示例
以下列出了一些符号注册表策略文件的示例。
默认受管符号缓存
定义默认受管符号缓存。
$policyPath = "HKLM:\Software\Policies\WorkspaceONE\Endpoint Telemetry\DEEM\Symbol Store Settings"
New-Item -Path $policyPath -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "UseLocalSymbolConfiguration" -PropertyType String -Value "false" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "MicrosoftSymbols" -PropertyType String -Value "srv*C:\ProgramData\WorkspaceONE\ws1etlm\MSSymbols*http://msdl.microsoft.com/download/symbols" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "DeleteSymbolsKeepHours" -PropertyType DWord -Value 168 -Force | Out-Null
自定义符号缓存
定义自定义符号缓存。
$policyPath = "HKLM:\Software\Policies\WorkspaceONE\Endpoint Telemetry\DEEM\Symbol Store Settings"
New-Item -Path $policyPath -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "UseLocalSymbolConfiguration" -PropertyType String -Value "false" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "MicrosoftSymbols" -PropertyType String -Value "srv*C:\Symbols*http://msdl.microsoft.com/download/symbols" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "AlternativeSymbols" -PropertyType String -Value "C:\PrivateSymbols" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "SymbolProxy" -PropertyType String -Value "http://proxy.example.com:8080" -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "DeleteSymbolsKeepHours" -PropertyType DWord -Value 168 -Force | Out-Null
本地符号环境变量
定义本地符号环境变量。如果您希望 ExternalDumpAnalyzer 进程使用本地符号环境变量而不是策略符号值,请使用此配置。
$policyPath = "HKLM:\Software\Policies\WorkspaceONE\Endpoint Telemetry\DEEM\Symbol Store Settings"
New-Item -Path $policyPath -Force | Out-Null
New-ItemProperty -Path $policyPath -Name "UseLocalSymbolConfiguration" -PropertyType String -Value "true" -Force | Out-Null
[Environment]::SetEnvironmentVariable("_NT_SYMBOL_PATH", "srv*C:\Symbols-check*http://msdl.microsoft.com/download/symbols", "Machine")
[Environment]::SetEnvironmentVariable("_NT_ALT_SYMBOL_PATH", "C:\PrivateSymbols", "Machine")
[Environment]::SetEnvironmentVariable("_NT_SYMBOL_PROXY", "http://proxy.example.com:8080", "Machine")
GPO 方法
在组策略管理编辑器中配置策略并使用 ADMX 和 ADML 模板文件,以便在组策略管理控制台中以域 GPO 级别使用这些策略进行部署。
配置 ADMX 和 ADML 模板
在域 GPO 策略中配置 ADMX 和 ADML 模板,将增强的操作系统崩溃分析设置部署到 Windows 设备群。
必备条件
如果尚未从 Customer Connect 检索到 etlm_extra_bundle,请立即进行检索,因为其中包含了 ADMX 和 ADML 模板,这些模板被捆绑在 Workspace ONE 端点遥测代理 ZIP 文件中。
过程
- 将
wsone_etlm.admx复制到域中央存储。\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\wsone_etlm.admx - 将
wsone_etlm.adml复制到匹配的语言文件夹。\\<domain>\SYSVOL\<domain>\Policies\PolicyDefinitions\en-US\wsone_etlm.adml - 在 Windows 设备上打开组策略管理控制台。
- 编辑目标设备策略。
- 转到计算机配置 > 管理模板 > Workspace ONE 端点遥测 > DEEM > 符号存储设置。
- 根据您的特定需求,从五个可用选项(本地符号、Microsoft 符号、替代符号、符号代理和删除符号)配置相应的符号策略。
- 将策略应用于目标设备。
- 运行
gpupdate /force或等待正常的策略刷新。
将崩溃诊断添加到报告和仪表板
在增强的操作系统崩溃分析功能报告扩充的崩溃诊断字段后,您可以将这些字段作为列添加到任何报告和仪表板小组件中,无需离开已使用的 Intelligence 报告工作流便可分析整个设备群的崩溃根本原因。
报表
- 在 Intelligence 中,转到工作区 > 报告。
- 打开列出系统崩溃事件的报告。
- 选择管理列,从列列表中添加堆栈跟踪、完整堆栈跟踪、归因模块和关联进程 。
- 保存报告。
报告表现在显示为每个崩溃事件选择的诊断列。
。
仪表板小组件
- 在 Intelligence 中,转到工作区 > 仪表板。
- 将小组件添加到现有仪表板或创建自定义仪表板。
- 选择员工体验 > 设备作为数据源。
- 您可以将所有必需条目保留为默认值。
- 在筛选器区域中,选择属性事件名称等于系统崩溃。
- 保存小组件。
- 使用小组件中的管理列菜单选项,添加堆栈跟踪、归因模块和关联进程列。
将信息添加为字段,也可以在满足用例要求时将其添加为分组维度。
此页面对您有帮助吗?