Using Device Health to monitor Insider Preview builds

Device Health is a Windows Analytics solution that can be used, free of charge, to identify device, device driver and application issues of PCs running either Windows or Windows Insider Preview. This page explains how to set up Device Health and monitor PCs running Windows 10 Insider Preview builds.

1. Add Device Health to Microsoft Operations Management Suite

Device Health is offered as a free solution in the Microsoft Operations Management Suite (OMS), a collection of cloud-based servicing for monitoring and automating your on-premise and cloud environments. For more information about OMS, see Operations Management Suite overview.

If you are already using OMS, you’ll find Device Health in the Solutions Gallery. Select the Device Health tile in the gallery and then click Add on the solution's details page. Device Health is now visible in your workspace. While you're in the Solutions Gallery, you should consider installing the Upgrade Readiness and Update Compliance solutions as well, if you haven't already.

If you are not yet using OMS, use the following steps to subscribe to OMS Device Health:

  1. Go to Operations Management Suite and click sign in.
  2. Sign in to Operations Management Suite (OMS). You can use either a Microsoft Account or a Work or School account to create a workspace. If your company is already using Azure Active Directory (Azure AD), use a Work or School account when you sign in to OMS. Using a Work or School account allows you to use identities from your Azure AD to manage permissions in OMS.
  3. Create a create new OMS workspace.
  4. Enter a name for the workspace, select the workspace region, and provide the email address that you want associated with this workspace. Click Create.
    Create new OMS workspace screenshot
  5. Link an Azure subscription to your workspace. Note: If your organization already has an Azure subscription, you may need to request access from your organization’s Azure administrator. If your organization does not have an Azure subscription, follow this guide to start free, 30-day Azure trial and link to an OMS workspace.
    Azure subscription link screenshot
  6. To add Device Health to your workspace, go to the Solution Gallery, Select the Device Health tile and then select Add on the solution's detail page.
  7. Click the Device Health tile to configure the solution.

2. Enable devices in Windows Analytics

Microsoft uses a unique commercial ID to map information from user computers to your OMS workspace. This should be generated for you automatically. Copy your commercial ID key in OMS and then deploy it to user computers.

Note: Along with the steps below, you may also need to enable data sharing. For more details, see Enroll Device in Windows Analytics.

  1. Sign into the OMS portal and click on your workspace.
  2. Go to Overview > Connected Sources > Windows Telemetry.
  3. Copy your Commercial ID (which should already be populated).
  4. Add this Commercial ID to the PCs you want to monitor. On the PC, open Registry Editor and navigate to: Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\DataCollection
  5. Create a new String Value and name CommercialId. Click to add Value Data and enter Commercial ID from previous step.
  6. On same page in Registry Editor, set telemetry 2 or higher.

Note: Configuring Commercial ID and Allow Telemetry settings can also be done through Group Policy. (Computer Configuration/Administrative Templates/Windows Components/Data Collection and Preview Builds)

After you have added Device Health and devices have a Commercial ID, you will begin receiving data. It will typically take 24-48 hours for the first data to begin appearing.

3. Gather Insider Preview data using Log Search

Once you’ve enrolled your Insider Preview devices, you can now monitor the performance of these builds by setting up custom queries using Log Search. For more documentation on working with log searches, see Find data using log searches.

  1. Sign into Operations Management Suite and sign in to access your workspace.
  2. Click the magnifier icon on left to navigate to Log Search.
    Log Search screenshot
  3. Enter your query and run. The following scripts queries are examples that can be used to monitor performance of Insider Preview builds.

Device Count by OS build history (filtered to Insider builds)

let OSVersionFilterRegex = "^WI";


| where OSVersion matches regex OSVersionFilterRegex

| extend OSVersionSummary = strcat(OSBuildNumber, " [", OSVersion, "]")

| summarize DeviceCount=dcount(ComputerID) by OSVersionSummary, bin(TimeGenerated, 1d)

| render areachart kind=stacked

Blue screen crash rate by build

// Note: Because this query is designed to compare Insider builds (which may change frequently on insider devices) the default kernel mode crash metric (number for each device/day represents the preceding 14 days) doesn't fit well. Instead we use crashes observed on specific days when devices were on specific builds
// Accordingly the numbers are not comparable to industry averages or other 14-day-trailing numbers seen in device health. These numbers are only comparable within this query, and only where enough machines exist for a build to make the pool meaningful.
// Enrich OSReliability with daily crashes metric

let CrashCountByDeviceDay = DHOSCrashData | summarize KernelModeCrashCountDaily = sum(KernelModeCrashCount) by ComputerID,TimeGenerated;

let EnrichedOSReliability = DHOSReliability | where OSVersion != "Preview" | project TimeGenerated,ComputerID,OSBuildNumber,OSVersion,KernelModeCrashCount, KernelModeCrashFreePercentForIndustry

| join kind= leftouter (CrashCountByDeviceDay) on ComputerID,TimeGenerated

| extend KernelModeCrashCountDaily = iff(isnotnull(KernelModeCrashCountDaily), KernelModeCrashCountDaily, 0);

// for each bucket (build number) calculate unique devices seen vs unique devices with crashes

EnrichedOSReliability | summarize DevicesWithCrashes=dcountif(ComputerID, KernelModeCrashCountDaily > 0), Devices=dcount(ComputerID) by OSBuildNumber,OSVersion

| extend PercentCrashFree = round((1 - todouble(DevicesWithCrashes) / Devices) * 100, 1)

| order by OSBuildNumber des

Build History for Device

let MyComputerName = "DESKTOP-7LG2UAN";


| where Computer == MyComputerName

| project TimeGenerated,OSBuildNumber

| render timechart

App crash rate by OS build

let MyAppFileDisplayName = "microsoft outlook";

let OSVersionFilterRegex = "^WI";

// for each bucket (build number) calculate unique devices seen vs unique devices with crashes

DHAppReliability | where AppFileDisplayName == MyAppFileDisplayName

| where OSVersion matches regex OSVersionFilterRegex

| summarize DevicesWithCrashes=dcountif(ComputerID, HasIncidentsDaily > 0), Devices=dcount(ComputerID) by AppFileDisplayName,OSBuildNumber,OSVersion

| extend PercentCrashFree = round((1 - todouble(DevicesWithCrashes) / Devices) * 100, 1)

| order by OSBuildNumber desc

Was this guidance helpful? We’d love to hear your feedback. Post your comments to this section of the Feedback Hub.