<!--
Copyright 2020 The Chromium Authors
Use of this source code is governed by a BSD-style license that can be
found in the LICENSE file.
-->
<!--
This file is used to generate a comprehensive list of UpdateEngine histograms
along with a detailed description for each histogram.
For best practices on writing histogram descriptions, see
https://chromium.googlesource.com/chromium/src.git/+/HEAD/tools/metrics/histograms/README.md
Please follow the instructions in the OWNERS file in this directory to find a
reviewer. If no OWNERS file exists, please consider signing up at
go/reviewing-metrics (Googlers only), as all subdirectories are expected to
have an OWNERS file. As a last resort you can send the CL to
[email protected].
-->
<histogram-configuration>
<histograms>
<histogram name="UpdateEngine.Attempt.ConnectionType"
enum="UpdateEngineConnectionType" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The network connection type when the attempt begins. Possible values include
"Unknown", "Ethernet", "Wifi",
"Wimax", "Bluetooth", "Cellular",
"Tethered Ethernet", "Tethered Wifi".
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.DownloadErrorCode"
enum="UpdateEngineDownloadErrorCode" expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A more detailed description of the last Payload transfer error when
downloading the payload.
This is reported when an attempt ends with the "Payload Download
Error" result.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.DownloadSource"
enum="UpdateEngineDownloadSource" expires_after="2024-10-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The download source used, possible values include "HTTPS Server",
"HTTP Server" and "HTTP Peer".
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.DurationMinutes" units="minutes"
expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes the update attempt took including the time the device
spent sleeping.
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.DurationUptimeMinutes" units="minutes"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes the update attempt took excluding the time the device
spent sleeping.
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.InternalErrorCode"
enum="UpdateEngineErrorCode" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
A more detailed description of the last internal error. The possible values
correspond to the ErrorCode enumeration in the update_engine source code.
This is reported when an attempt ends with the InternalError result.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.Number" units="count"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The attempt number which starts at 0 for the initial attempt and keeps
increasing for subsequent attempts.
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.PayloadBytesDownloadedMiB" units="MiB"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of payload mebibytes (1048576 bytes) actually download.
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.PayloadDownloadSpeedKBps" units="KBps"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The payload download speed, in kilobytes per second (1000 bytes/second).
This is calculated as the number of bytes downloaded divided by the duration
of the attempt (excluding time spent sleeping).
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.PayloadSizeMiB" units="MiB"
expires_after="2025-01-26">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The payload size, in mebibytes (1048576 bytes).
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.PayloadType"
enum="UpdateEnginePayloadFormat" expires_after="2025-02-23">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The payload type, possible values include "Delta" (if Omaha
specified to download a delta payload); and "Full" (if Omaha
specified to download a full payload); and "ForcedFull" (if the
client specified that it would only accept a full payload).
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.Result" enum="UpdateEngineAttemptResult"
expires_after="2024-12-08">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The result of the update attempt.
This is reported when an update attempt ends.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.TimeSinceLastAttemptMinutes"
units="minutes" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes since the last attempt including the time the device
spent sleeping.
This is reported when an update attempt ends but only if there was a
previous attempt for the same update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Attempt.TimeSinceLastAttemptUptimeMinutes"
units="minutes" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes since the last attempt excluding the time the device
spent sleeping.
This is reported when an update attempt ends but only if there was a
previous attempt for the same update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.CertificateCheck.Download"
enum="UpdateEngineCertificateCheckStatus" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of the certificate check done when downloading a payload over
HTTPS. Note that most downloads are done over HTTP.
This is reported on every HTTPS connection to the payload download server.
Connection drops on the same payload may report different values.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.CertificateCheck.UpdateCheck"
enum="UpdateEngineCertificateCheckStatus" expires_after="2024-06-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The status of the certificate check done when querying Omaha for a new
version.
This is reported on every update check.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.DownloadErrorCode"
enum="UpdateEngineDownloadErrorCode" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
If unable to download a response from Omaha, a more detailed error code is
reported in this metric.
This is reported on every update check resulting in "Download
error".
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.Reaction" enum="UpdateEngineCheckReaction"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
If there is an update available, this metric will track what the device does
with the information. Possible values include "Applying update",
"Deferring update", "Ignoring update", and "Backing
off".
This is reported on update checks resulting in "Update available".
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.Result" enum="UpdateEngineCheckResult"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The update check results from update_engine. Possible values are in sync
with the enum class CheckResult in the ChromeOS repo:
src/aosp/system/update_engine/common/metrics_constants.h
This is reported on every update check.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.RollbackTargetVersion"
enum="UpdateEngineChromeOsVersionPrefix" expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First section of the ChromeOS target version set by device policy and sent
to Omaha if rollback is also allowed. This is a sparse histogram, since the
possible valid values are stable ChromeOS version prefixes (usually one per
milestone).
Example value: 10323 (meaning M65 stable).
This is reported on every update check if the TargetVersionPrefix device
policy is set and rollback is enabled.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.TargetVersion"
enum="UpdateEngineChromeOsVersionPrefix" expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First section of the Chrome OS target version set by device policy and sent
to Omaha. This is a sparse histogram, since the possible valid values are
stable Chrome OS version prefixes (usually one per milestone).
Example value: 10323 (meaning M65 stable).
This is reported on every update check if the TargetVersionPrefix device
policy is set.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.TimeSinceLastCheckMinutes" units="minutes"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes since the last check including the time the device
spent sleeping.
This is reported on every update check except for the first one.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.Check.TimeSinceLastCheckUptimeMinutes"
units="minutes" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of minutes since the last check excluding the time the device
spent sleeping.
This is reported on every update check except for the first one.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.ConsecutiveUpdate.Count" units="updates"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of times the inactive partition was updated before reboot.
This is reported after every reboot.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.ConsecutiveUpdate.Failed" enum="BooleanHit"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This is reported after every failed consecutive update. The first update is
not included. This metric can be interpreted alongside metrics such as
SuccessfulUpdate.AttemptCount, and Attempt.Result.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.ConsumerAutoUpdate" enum="BooleanOptedOut"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This records if the eligible user has opted out the consumer auto update.
Ineligible user will be skipped.
This is reported each time Chrome metrics logs are created.
</summary>
</histogram>
<histogram name="UpdateEngine.Daily.OSAgeDays" units="days"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The age of the OS in days, defined as the age of the /etc/lsb-release file.
This is reported on every update check but at most once a day.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.EnterpriseRollback.BlockedByFSI"
enum="UpdateEngineChromeOsVersionPrefix" expires_after="2026-01-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First section of the ChromeOS version to which an enterprise rollback
(rollback initiated by the admin of the device) has failed because Omaha
determined the device may not be able to run the rollback image based on
FSI.
This is a sparse histogram, since the possible valid values are stable
ChromeOS version prefixes (usually one per milestone).
Example value: 10323 (meaning M65 stable).
This is reported after an Omaha response with no rollback because of FSI.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.EnterpriseRollback.Failure"
enum="UpdateEngineChromeOsVersionPrefix" expires_after="2024-03-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First section of the ChromeOS version to which an enterprise rollback
(rollback initiated by the admin of the device) has failed. This is a sparse
histogram, since the possible valid values are stable ChromeOS version
prefixes (usually one per milestone).
Example value: 10323 (meaning M65 stable).
This is reported after a rollback image has failed installing.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.EnterpriseRollback.Success"
enum="UpdateEngineChromeOsVersionPrefix" expires_after="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
First section of the ChromeOS version to which an enterprise rollback
(rollback initiated by the admin of the device) has succeeded. This is a
sparse histogram, since the possible valid values are stable ChromeOS
version prefixes (usually one per milestone).
Example value: 10323 (meaning M65 stable).
This is reported after a rollback image has been successfully installed.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.EnterpriseUpdateInvalidatedResult"
enum="BooleanSuccess" expires_after="2025-05-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is reported every time the updates are invalidated due to the
enterprise policy. Reports whether the update was able to be invalidated.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.FailedUpdateCount" units="count"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The number of consecutive times a device has failed to boot an update that
successfully applied.
This is reported every time the firmware fails to boot the slot with the
update and fell back to the slot it originally updated from.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.InstallDateProvisioningSource"
enum="UpdateEngineInstallDateProvisioningSource" expires_after="2024-12-15">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The source used to provision the install-date-days value sent to Omaha with
every request.
This is reported when OOBE (Out Of Box Experience) completes (M34 or later)
or when upgrading to a version with install-date-days support.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.KernelKey.MaxRollforwardSetSuccess"
enum="BooleanSuccess" expires_after="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether setting the MaxKernelKeyRollforward value in the TPM succeeded.
This is reported every time an update check happens. This is a bool value.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.KernelKey.MaxRollforwardVersion" units="units"
expires_after="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Maximum value the device can roll forward the minimum kernel key version
value in the TPM during the next boot.
This value is set to infinity (0xfffffffe) for devices which doesn't allow
rollback.
Otherwise, the value is the kernel key version of the earliest image to
which the device is allowed to roll back.
This is reported every time an update check happens. This is a sparse value.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.KernelKey.MinVersion" units="units"
expires_after="2024-06-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Minimum kernel key version already set in the TPM. This value specifies
which images can be booted up with verified boot.
This is reported every time an update check happens. This is a sparse value.
This metric is specific to ChromeOS.
</summary>
</histogram>
<histogram name="UpdateEngine.Rollback.Result" enum="BooleanSuccess"
expires_after="2024-12-30">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
Whether rollback worked.
This is reported every time there's a rollback request.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.AttemptCount" units="count"
expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of update attempts required to update the device.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.BytesDownloadedMiB" units="MiB"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of bytes downloaded in mebibytes (1048576 bytes) using all
available sources (e.g. HTTP, HTTPS, HTTP Peer).
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.BytesDownloadedMiBHttpPeer"
units="MiB" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of bytes downloaded in mebibytes (1048576 bytes) using HTTP
from a local peer.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.BytesDownloadedMiBHttpServer"
units="MiB" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of bytes downloaded in mebibytes (1048576 bytes) using
HTTP.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.BytesDownloadedMiBHttpsServer"
units="MiB" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of bytes downloaded in mebibytes (1048576 bytes) using
HTTPS.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.DownloadOverheadPercentage"
units="%" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The ratio between bytes downloaded and payload size minus 100.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.DownloadSourcesUsed"
enum="UpdateEngineDownloadSources" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The various download sources used - this is a combination of the values
"HTTPS Server", "HTTP Server" and "HTTP Peer".
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.PayloadSizeMiB" units="MiB"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The size of the payload, in mebibytes (1048576 bytes).
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.PayloadType"
enum="UpdateEnginePayloadFormat" expires_after="2024-10-06">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The payload type ("Delta", "Full",
"ForcedFull") used.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.RebootCount" units="count"
expires_after="2025-02-16">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of reboots during the update.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.TotalDurationMinutes"
units="minutes" expires_after="2025-02-10">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of minutes from when an update was detected until an update
(possibly another update) was applied. This includes the time waiting for
update checks and time the device spent sleeping.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.TotalDurationUptimeMinutes"
units="minutes" expires_after="2024-06-02">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of minutes from when an update was detected until an update
(possibly another update) was applied. This does not include the time
waiting for update checks and time the device spent sleeping.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.UpdatesAbandonedCount"
units="count" expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of updates that were abandoned since the last successful
update.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.SuccessfulUpdate.UrlSwitchCount" units="count"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The total number of times the URL was switched (from e.g. HTTPS to HTTP)
because of failures.
This is reported on every successful update.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.TimeToRebootMinutes" units="minutes"
expires_after="2024-07-21">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
The duration between when an update has successfully completed and the user
is presented with the "reboot arrow" and when the system has
booted into the new update.
This is reported every time the device is rebooted after an update has been
applied.
This metric is specific to Chrome OS.
</summary>
</histogram>
<histogram name="UpdateEngine.UpdateInvalidated" enum="BooleanSuccess"
expires_after="2024-04-01">
<owner>[email protected]</owner>
<owner>[email protected]</owner>
<summary>
This metric is reported every time the `invalidate_last_update` tag is sent
from Omaha. Reports whether the update was able to be fully invalidated.
This metric is specific to Chrome OS.
</summary>
</histogram>
</histograms>
</histogram-configuration>