有效负载格式

目前,Firefox 健康报告以压缩的 JSON 文档形式提交。根 JSON 元素是一个对象。一个版本字段定义了有效负载的版本,进而定义了对象预期包含的内容。

截至 2013 年 7 月 3 日,桌面版提交版本 2,而 Firefox for Android 提交版本 3 的有效负载。

版本 3

版本 3 完全重构了文档格式。事件在“环境”中跟踪。环境是从大量本地数据(例如,附加组件、CPU 数量、版本)计算出来的,当其中一个属性发生变化时,就会产生一个新的环境。

因此,客户端文档将包含许多环境的描述,并且测量将归因于一个特定环境。

环境映射位于文档的顶层,当前环境在映射中命名为“current”。每个环境都有一个哈希标识符和一组属性。当前环境被完整地描述,并且其哈希值存在于“hash”属性中。所有其他环境都表示为与当前环境的树差异,其哈希值作为“environments”对象中的键。

已删除的附加组件的值为“null”。

目前没有“last”数据。

每日数据是分层的:按日期、按环境,然后按测量,并存在于“data”中,就像 v2 中一样。

举例说明

{
  "lastPingDate": "2013-06-29",
  "thisPingDate": "2013-07-03",
  "version": 3,
  "environments": {
    "current": {
      "org.mozilla.sysinfo.sysinfo": {
        "memoryMB": 1567,
        "cpuCount": 4,
        "architecture": "armeabi-v7a",
        "_v": 1,
        "version": "4.1.2",
        "name": "Android"
      },
      "org.mozilla.profile.age": {
        "_v": 1,
        "profileCreation": 15827
      },
      "org.mozilla.addons.active": {
        "[email protected]": {
          "appDisabled": false,
          "userDisabled": false,
          "scope": 1,
          "updateDay": 15885,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "blocklistState": 0,
          "type": "extension",
          "installDay": 15885,
          "version": "1.18.02"
        },
        "{dbbf9331-b713-6eda-1006-205efead09dc}": {
          "appDisabled": false,
          "userDisabled": "askToActivate",
          "scope": 8,
          "updateDay": 15779,
          "foreignInstall": true,
          "blocklistState": 0,
          "type": "plugin",
          "installDay": 15779,
          "version": "11.1 r115"
        },
        "[email protected]": {
          "appDisabled": false,
          "userDisabled": true,
          "scope": 1,
          "updateDay": 15870,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "blocklistState": 0,
          "type": "extension",
          "installDay": 15870,
          "version": "1.1"
        },
        "{6e092a7f-ba58-4abb-88c1-1a4e50b217e4}": {
          "appDisabled": false,
          "userDisabled": false,
          "scope": 1,
          "updateDay": 15828,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "blocklistState": 0,
          "type": "extension",
          "installDay": 15828,
          "version": "1.1.0"
        },
        "{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}": {
          "appDisabled": false,
          "userDisabled": true,
          "scope": 1,
          "updateDay": 15879,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "blocklistState": 0,
          "type": "extension",
          "installDay": 15879,
          "version": "1.3.2"
        },
        "_v": 1
      },
      "org.mozilla.appInfo.appinfo": {
        "_v": 3,
        "appLocale": "en_us",
        "osLocale": "en_us",
        "distribution": "",
        "acceptLangIsUserSet": 0,
        "isTelemetryEnabled": 1,
        "isBlocklistEnabled": 1
      },
      "geckoAppInfo": {
        "updateChannel": "nightly",
        "id": "{aa3c5121-dab2-40e2-81ca-7ea25febc110}",
        "os": "Android",
        "platformBuildID": "20130703031323",
        "platformVersion": "25.0a1",
        "vendor": "Mozilla",
        "name": "fennec",
        "xpcomabi": "arm-eabi-gcc3",
        "appBuildID": "20130703031323",
        "_v": 1,
        "version": "25.0a1"
      },
      "hash": "tB4Pnnep9yTxnMDymc3dAB2RRB0=",
      "org.mozilla.addons.counts": {
        "extension": 4,
        "plugin": 1,
        "_v": 1,
        "theme": 0
      }
    },
    "k2O3hlreMeS7L1qtxeMsYWxgWWQ=": {
      "geckoAppInfo": {
        "platformBuildID": "20130630031138",
        "appBuildID": "20130630031138",
        "_v": 1
      },
      "org.mozilla.appInfo.appinfo": {
        "_v": 2,
      }
    },
    "1+KN9TutMpzdl4TJEl+aCxK+xcw=": {
      "geckoAppInfo": {
        "platformBuildID": "20130626031100",
        "appBuildID": "20130626031100",
        "_v": 1
      },
      "org.mozilla.addons.active": {
        "[email protected]": null,
        "{dbbf9331-b713-6eda-1006-205efead09dc}": null,
        "[email protected]": null,
        "{6e092a7f-ba58-4abb-88c1-1a4e50b217e4}": null,
        "{46551EC9-40F0-4e47-8E18-8E5CF550CFB8}": null,
        "_v": 1
      },
      "org.mozilla.addons.counts": {
        "extension": 0,
        "plugin": 0,
        "_v": 1
      }
    }
  },
  "data": {
    "last": {},
    "days": {
      "2013-07-03": {
        "tB4Pnnep9yTxnMDymc3dAB2RRB0=": {
          "org.mozilla.appSessions": {
            "normal": [
              {
                "r": "P",
                "d": 2,
                "sj": 653
              },
              {
                "r": "P",
                "d": 22
              },
              {
                "r": "P",
                "d": 5
              },
              {
                "r": "P",
                "d": 0
              },
              {
                "r": "P",
                "sg": 3560,
                "d": 171,
                "sj": 518
              },
              {
                "r": "P",
                "d": 16
              },
              {
                "r": "P",
                "d": 1079
              }
            ],
            "_v": "4"
          }
        },
        "k2O3hlreMeS7L1qtxeMsYWxgWWQ=": {
          "org.mozilla.appSessions": {
            "normal": [
              {
                "r": "P",
                "d": 27
              },
              {
                "r": "P",
                "d": 19
              },
              {
                "r": "P",
                "d": 55
              }
            ],
            "_v": "4"
          },
          "org.mozilla.searches.counts": {
            "bartext": {
              "google": 1
            },
            "_v": "4"
          },
          "org.mozilla.experiment": {
            "lastActive": "some.experiment.id"
            "_v": "1"
          }
        }
      }
    }
  }
}

版本 3 中的应用会话

会话分为“正常”和“异常”。会话对象存储为离散的 JSON

"org.mozilla.appSessions": {
  _v: 4,
  "normal": [
    {"r":"P", "d": 123},
  ],
  "abnormal": [
    {"r":"A", "oom": true, "stopped": false}
  ]
}

键是

“r”

原因。值为“P”(活动暂停),“A”(异常终止)。

“d”

持续时间。以秒为单位的值。

“sg”

Gecko 启动时间(毫秒)。如果这是干净启动,则存在。这对应于遥测计时器FENNEC_STARTUP_TIME_GECKOREADY

“sj”

Java 活动初始化时间(毫秒)。如果这是干净启动,则存在。这对应于遥测计时器FENNEC_STARTUP_TIME_JAVAUI,并且包括超出初始onWindowFocusChanged的初始化任务。

异常终止将缺少持续时间,并将包含以下键

“oom”

会话是否被 OOM 异常终止?

“stopped”

会话是否被平滑地停止?

版本 3.2

从 Firefox 35 开始,搜索计数测量现已提升至 v6,包括搜索活动的activity位置。

版本 3.1

从 Firefox 27 开始,appinfo现已提升至 v3,包括osLocaleappLocale(目前始终与osLocale相同)、distribution(包含发行版 ID 和版本,用冒号分隔的字符串)和acceptLangIsUserSet,一个整数布尔值,描述用户是否设置了intl.accept_languages首选项。

搜索计数测量现在处于版本 5,这表示记录了非合作伙伴搜索。您将看到类似“other-Foo Bar”而不是“other”的标识符。

版本 3.2

在 Firefox 32 中,Firefox for Android 在环境描述中包含一个设备配置部分

"org.mozilla.device.config": {
  "hasHardwareKeyboard": false,
  "screenXInMM": 58,
  "screenLayout": 2,
  "uiType": "default",
  "screenYInMM": 103,
  "_v": 1,
  "uiMode": 1
}

其中,唯一需要解释的键是

uiType

“default”、“smalltablet”、“largetablet”之一。

uiMode

Android Configuration.uiMode 值的掩码,例如,UI_MODE_TYPE_CAR

screenLayout

Android Configuration.screenLayout 值的掩码。SCREENLAYOUT_SIZE_ 常量之一。

请注意,由于设备精度和平台限制,屏幕尺寸可能不准确。

与版本 2 的其他显著差异

  • Android 上没有默认浏览器指示器。

  • 附加组件包括一个blocklistState属性,由 AddonManager 返回。

  • 搜索现在是版本 4,并且是分层的:搜索的启动方式(bartext、barkeyword、barsuggest),然后是每个提供程序的计数。

版本 2

版本 2 与版本 1 相同,不同之处在于它有一个额外的顶层字段geckoAppInfo,其中包含基本的应用程序信息。

geckoAppInfo

此字段是一个对象,是一个简单的字符串键和值映射,描述基本的应用程序元数据。它与last部分中的appinfo测量非常相似。区别在于此字段几乎可以肯定保证存在,而有效负载数据部分中的字段在某些情况下(例如灾难性的客户端错误)可能会被省略。

它的键如下

appBuildID

应用程序的构建 ID/日期。例如“20130314113542”。

version

nsXREAppData.version 的值。这是应用程序的版本。例如“21.0.0”。

vendor

nsXREAppData.vendor 的值。可以是空字符串。对于官方的 Mozilla 构建,这将是“Mozilla”。

name

nsXREAppData.name 的值。对于官方的 Firefox 构建,这将是“Firefox”。

id

nsXREAppData.ID 的值。

platformVersion

Gecko 平台的版本(而不是应用程序版本)。对于 Firefox,这几乎可以肯定等效于version字段。

platformBuildID

Gecko 平台的构建 ID/日期(而不是应用程序版本)。这通常等效于appBuildID

os

应用程序正在运行的操作系统的名称。

xpcomabi

构建的二进制体系结构。

updateChannel

用于应用程序更新的通道名称。官方的 Mozilla 构建具有以下值之一:{release、beta、aurora、nightly}。本地和测试构建将default作为通道。

版本 1

顶层属性

主 JSON 对象包含以下属性

lastPingDate

上次上传的 UTC 日期。如果这是来自此客户端的第一次上传,则此属性不存在。

thisPingDate

构建此有效负载时的 UTC 日期。

version

此有效负载格式的整数版本。目前仅定义了 1。

clientID

标识正在提交数据的客户端的标识符。

此属性可能在旧版客户端中不存在。

有关标识符的更多信息,请参阅标识符

clientIDVersion

clientID的生成语义相关的整数版本。

如果值为1,则clientID是随机生成的 UUID。

此属性可能在旧版客户端中不存在。

data

保存构成健康报告的数据的对象。

数据属性

健康报告的大部分内容包含在data对象中。此对象具有以下键

days

将 UTC 日期映射到该日期测量的对象。键采用YYYY-MM-DD格式。例如“2013-03-14”

last

将测量名称映射到其值的映射。

dayslast的值是将测量名称映射到该测量的值的映射。值始终是对象。每个对象都包含一个_v属性。此属性定义此测量的版本。其他非下划线前缀的属性由测量本身定义(请参阅下面的部分)。

示例

以下是版本 1 的 JSON 文档示例

{
  "version": 1,
  "thisPingDate": "2013-03-11",
  "lastPingDate": "2013-03-10",
  "data": {
    "last": {
      "org.mozilla.addons.active": {
        "[email protected]": {
          "userDisabled": false,
          "appDisabled": false,
          "version": "1.05",
          "type": "extension",
          "scope": 1,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "installDay": 14973,
          "updateDay": 15317
        },
        "[email protected]": {
          "userDisabled": false,
          "appDisabled": false,
          "version": "1.3",
          "type": "extension",
          "scope": 1,
          "foreignInstall": false,
          "hasBinaryComponents": false,
          "installDay": 15268,
          "updateDay": 15379
        },
        "_v": 1
      },
      "org.mozilla.appInfo.appinfo": {
        "_v": 1,
        "appBuildID": "20130309030841",
        "distributionID": "",
        "distributionVersion": "",
        "hotfixVersion": "",
        "id": "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
        "locale": "en-US",
        "name": "Firefox",
        "os": "Darwin",
        "platformBuildID": "20130309030841",
        "platformVersion": "22.0a1",
        "updateChannel": "nightly",
        "vendor": "Mozilla",
        "version": "22.0a1",
        "xpcomabi": "x86_64-gcc3"
      },
      "org.mozilla.profile.age": {
        "_v": 1,
        "profileCreation": 12444
      },
      "org.mozilla.appSessions.current": {
        "_v": 3,
        "startDay": 15773,
        "activeTicks": 522,
        "totalTime": 70858,
        "main": 1245,
        "firstPaint": 2695,
        "sessionRestored": 3436
      },
      "org.mozilla.sysinfo.sysinfo": {
        "_v": 1,
        "cpuCount": 8,
        "memoryMB": 16384,
        "architecture": "x86-64",
        "name": "Darwin",
        "version": "12.2.1"
      }
    },
    "days": {
      "2013-03-11": {
        "org.mozilla.addons.counts": {
          "_v": 1,
          "extension": 15,
          "plugin": 12,
          "theme": 1
        },
        "org.mozilla.places.places": {
          "_v": 1,
          "bookmarks": 757,
          "pages": 104858
        },
        "org.mozilla.appInfo.appinfo": {
          "_v": 1,
          "isDefaultBrowser": 1
        }
      },
      "2013-03-10": {
        "org.mozilla.addons.counts": {
          "_v": 1,
          "extension": 15,
          "plugin": 12,
          "theme": 1
        },
        "org.mozilla.places.places": {
          "_v": 1,
          "bookmarks": 757,
          "pages": 104857
        },
        "org.mozilla.searches.counts": {
          "_v": 1,
          "google.urlbar": 4
        },
        "org.mozilla.appInfo.appinfo": {
          "_v": 1,
          "isDefaultBrowser": 1
        }
      }
    }
  }
}

测量

有效负载的大部分内容由测量数据组成。单个测量仅仅是相关值的集合,例如Places 数据库的统计信息系统信息

每个测量都附带一个整数版本号。当测量中的字段或该测量中数据的语义发生变化时,版本号会递增。

所有测量都在下面的部分中按字母顺序定义。

org.mozilla.addons.addons

此测量包含有关当前已安装的附加组件的信息。

版本 2

此版本添加了人类可读的字段namedescription,两者都直接来自 Addon 实例,就像版本 1 中的大多数属性一样。此外,所有插件详细信息现在都在 org.mozilla.addons.plugins 中。

版本 1

测量对象是附加组件 ID 到包含附加组件元数据对象的映射。

每个附加组件包含以下属性

  • userDisabled

  • appDisabled

  • version

  • type

  • scope

  • foreignInstall

  • hasBinaryComponents

  • installDay

  • updateDay

除了installDayupdateDay之外,所有这些属性都直接来自 Addon 实例。请参阅https://mdn.org.cn/en-US/docs/Addons/Add-on_Manager/AddoninstallDayupdateDay分别是附加组件的installDateupdateDate属性自 UNIX 纪元以来的天数。

注释

通过extensions._id_.getAddons.cache.enabled首选项选择退出 AMO 更新的附加组件,从Bug 868306(Firefox 24)开始,包含在提交的附加组件列表中。

示例

"org.mozilla.addons.addons": {
  "_v": 2,
  "{d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}": {
    "userDisabled": false,
    "appDisabled": false,
    "name": "Adblock Plus",
    "version": "2.4.1",
    "type": "extension",
    "scope": 1,
    "description": "Ads were yesterday!",
    "foreignInstall": false,
    "hasBinaryComponents": false,
    "installDay": 16093,
    "updateDay": 16093
  },
  "{e4a8a97b-f2ed-450b-b12d-ee082ba24781}": {
    "userDisabled": true,
    "appDisabled": false,
    "name": "Greasemonkey",
    "version": "1.14",
    "type": "extension",
    "scope": 1,
    "description": "A User Script Manager for Firefox",
    "foreignInstall": false,
    "hasBinaryComponents": false,
    "installDay": 16093,
    "updateDay": 16093
  }
}

org.mozilla.addons.plugins

此测量包含有关当前已安装的插件的信息。

版本 1

测量对象是插件 ID 到包含插件元数据对象的映射。

插件 ID 由插件的文件名、名称、版本和描述构成。每个插件至少具有文件名和名称。

每个插件包含以下属性

  • name

  • version

  • description

  • blocklisted

  • disabled

  • clicktoplay

  • mimeTypes

  • updateDay

除了updateDaymimeTypes之外,所有这些属性都直接来自nsIPluginTag通过nsIPluginHostupdateDay是插件上次修改时间自 UNIX 纪元以来的天数。mimeTypes是插件支持的 MIME 类型列表,请参阅nsIPluginTag.getMimeTypes()

示例

"org.mozilla.addons.plugins": {
  "_v": 1,
  "Flash Player.plugin:Shockwave Flash:12.0.0.38:Shockwave Flash 12.0 r0": {
    "mimeTypes": [
      "application/x-shockwave-flash",
      "application/futuresplash"
    ],
    "name": "Shockwave Flash",
    "version": "12.0.0.38",
    "description": "Shockwave Flash 12.0 r0",
    "blocklisted": false,
    "disabled": false,
    "clicktoplay": false
  },
  "Default Browser.plugin:Default Browser Helper:537:Provides information about the default web browser": {
    "mimeTypes": [
      "application/apple-default-browser"
    ],
    "name": "Default Browser Helper",
    "version": "537",
    "description": "Provides information about the default web browser",
    "blocklisted": false,
    "disabled": true,
    "clicktoplay": false
  }
}

org.mozilla.addons.counts

此测量包含有关附加组件历史计数的信息。

版本 1

测量对象由不同附加组件类型的计数组成。属性是

extension

已安装扩展的整数计数。

plugin

已安装插件的整数计数。

主题

已安装主题的整数计数。

轻量级主题

已安装轻量级主题的整数计数。

备注

已选择退出 AMO 更新的附加组件包含在计数中。这与活动附加组件测量的行为不同。

如果未安装特定类型的任何附加组件,则该类型的属性将不存在(而不是具有值为 0 的显式属性)。

示例

"2013-03-14": {
  "org.mozilla.addons.counts": {
    "_v": 1,
    "extension": 21,
    "plugin": 4,
    "theme": 1
  }
}

org.mozilla.appInfo.appinfo

此测量包含基本的 XUL 应用程序和 Gecko 平台信息。它在最后一部分中报告。

版本 2

除了版本 1 中存在的字段外,此版本还具有出现在天数部分中的以下字段

isBlocklistEnabled

阻止列表 ping 是否启用。这是一个整数,0 或 1。这并不表示是否发送了阻止列表 ping,而仅仅表示应用程序是否会尝试发送阻止列表 ping。

isTelemetryEnabled

遥测是否启用。这是一个整数,0 或 1。

版本 1

测量对象主要包含描述当前应用程序和构建的字符串值。属性为

  • vendor

  • name

  • id

  • version

  • appBuildID

  • platformVersion

  • platformBuildID

  • os

  • xpcomabi

  • updateChannel

  • distributionID

  • distributionVersion

  • hotfixVersion

  • locale

  • isDefaultBrowser

备注

所有属性都出现在最后一部分,除了isDefaultBrowser,它出现在天数下。

示例

此示例来自 macOS 正式版 Nightly 构建

"org.mozilla.appInfo.appinfo": {
  "_v": 1,
  "appBuildID": "20130311030946",
  "distributionID": "",
  "distributionVersion": "",
  "hotfixVersion": "",
  "id": "{ec8030f7-c20a-464f-9b0e-13a3a9e97384}",
  "locale": "en-US",
  "name": "Firefox",
  "os": "Darwin",
  "platformBuildID": "20130311030946",
  "platformVersion": "22.0a1",
  "updateChannel": "nightly",
  "vendor": "Mozilla",
  "version": "22.0a1",
  "xpcomabi": "x86_64-gcc3"
},

org.mozilla.appInfo.update

此测量包含有关应用程序中应用程序更新机制的信息。

版本 1

报告以下每日值

enabled

是否启用了自动应用程序更新检查。1 表示是,0 表示否。

autoDownload

是否启用了自动下载可用更新。

备注

此测量已于 2013 年 7 月 15 日合并到 mozilla-central 以用于 JS FHR。

示例

"2013-07-15": {
  "org.mozilla.appInfo.update": {
    "_v": 1,
    "enabled": 1,
    "autoDownload": 1,
  }
}

org.mozilla.appInfo.versions

此测量包含应用程序版本号的历史记录。

版本 2

版本 2 报告的字段比版本 1 多,并且不向后兼容。版本 2 中存在以下字段

appVersion

应用程序版本字符串数组。

appBuildID

应用程序构建 ID 字符串数组。

platformVersion

平台版本字符串数组。

platformBuildID

平台构建 ID 字符串数组。

升级应用程序时,新的版本和/或构建 ID 将附加到其相应的字段。

版本 1

当应用程序版本(来自org.mozilla.appinfo.appinfoversion)更改时,我们会在看到更改的那天记录新版本。一天的新版本记录在version属性下的数组中。

备注

如果未升级应用程序,则此测量将不存在。这意味着如果用户使用发布渠道,则此测量在大多数日子里都不会存在(因为更新通常每 6 周发布一次)。但是,Nightly 和 Aurora 通道的用户可能会有很多此类条目,因为这些构建每天都会更新。

在执行每日收集时收集此测量的值(通常在上传时发生)。因此,实际的升级日期可能不会归因于正确的日期 - 报告的日期可能会滞后。

对于大多数客户端,应用程序和平台版本以及构建 ID 应该相同。如果它们不同,我们可能正在查看Frankenfox

示例

"2013-03-27": {
  "org.mozilla.appInfo.versions": {
    "_v": 2,
    "appVersion": [
       "22.0.0"
    ],
    "appBuildID": [
      "20130325031100"
    ],
    "platformVersion": [
      "22.0.0"
    ],
    "platformBuildID": [
      "20130325031100"
    ]
  }
}

org.mozilla.appSessions.current

此测量包含有关当前正在运行的 XUL 应用程序会话的信息。

版本 3

此测量具有以下属性

startDay

自 UNIX 纪元以来的整数天数,表示此会话开始的时间。

activeTicks

会话处于活动状态的刻度整数计数。Gecko 定期在会话处于活动状态时发送信号。会话活动包括与应用程序的键盘或鼠标交互。每个刻度表示一个 5 秒的窗口,在此窗口期间存在交互。

totalTime

会话存活的整数秒数。

main

Gecko 进程启动所需的时间(以毫秒为单位)。

firstPaint

从进程启动到首次绘制的时间(以毫秒为单位)。

sessionRestored

从进程启动到会话恢复的时间(以毫秒为单位)。

示例

"org.mozilla.appSessions.current": {
  "_v": 3,
  "startDay": 15775,
  "activeTicks": 4282,
  "totalTime": 249422,
  "main": 851,
  "firstPaint": 3271,
  "sessionRestored": 5998
}

org.mozilla.appSessions.previous

此测量包含有关以前 XUL 应用程序会话的信息。

版本 3

此测量包含当天开始的所有会话的每日列表。可能存在以下属性

cleanActiveTicks

已正确关闭的会话的活动刻度。

cleanTotalTime

已正确关闭的会话的总秒数。

abortedActiveTicks

未正确关闭的会话的活动刻度。

abortedTotalTime

未正确关闭的会话的总秒数。

main

从进程启动到主进程初始化的时间(以毫秒为单位)。

firstPaint

从进程启动到首次绘制的时间(以毫秒为单位)。

sessionRestored

从进程启动到会话恢复的时间(以毫秒为单位)。

备注

会话记录在其开始的日期。

如果会话被中止/崩溃,则总时间可能小于实际总时间。这是因为我们并不总是在非活动期间更新总时间,并且中止/崩溃可能在长时间空闲后发生,在我们更新总时间之前。

{cleanActiveTicks, cleanTotalTime}、{abortedActiveTicks, abortedTotalTime} 和 {main, firstPaint, sessionRestored} 的数组长度应完全相同。

干净会话的长度加上中止会话的长度应等于 {main, firstPaint, sessionRestored} 属性的长度。

无法区分干净与中止会话的 main、firstPaint 和 sessionRestored 值:它们都被合并在一起。

对于跨越多个 UTC 天的会话,无法知道会话在哪些天处于活动状态。一个持续一周的会话可能只在两天内有活动,我们无法知道是哪几天。

示例

"org.mozilla.appSessions.previous": {
  "_v": 3,
  "cleanActiveTicks": [
    78,
    1785
  ],
  "cleanTotalTime": [
    4472,
    88908
  ],
  "main": [
    32,
    952
  ],
  "firstPaint": [
    2755,
    3497
  ],
  "sessionRestored": [
    5149,
    5520
  ]
}

org.mozilla.crashes.crashes

此测量包含应用程序崩溃的历史记录。

版本 6

此版本增加了对主进程中内存不足 (OOM) 崩溃的跟踪。OOM 崩溃将同时计为 main-crash 和 main-crash-oom。

每天发生崩溃或崩溃提交时,都会报告此测量。记录可能包含以下字段,其值表示在给定日期发生的崩溃、挂起或提交次数

  • content-crash

  • content-crash-submission-succeeded

  • content-crash-submission-failed

  • content-hang

  • content-hang-submission-succeeded

  • content-hang-submission-failed

  • gmplugin-crash

  • gmplugin-crash-submission-succeeded

  • gmplugin-crash-submission-failed

  • main-crash

  • main-crash-oom

  • main-crash-submission-succeeded

  • main-crash-submission-failed

  • main-hang

  • main-hang-submission-succeeded

  • main-hang-submission-failed

  • plugin-crash

  • plugin-crash-submission-succeeded

  • plugin-crash-submission-failed

  • plugin-hang

  • plugin-hang-submission-succeeded

  • plugin-hang-submission-failed

版本 5

此版本添加了对 Gecko 媒体插件 (GMP) 崩溃的支持。

每天发生崩溃或崩溃提交时,都会报告此测量。记录可能包含以下字段,其值表示在给定日期发生的崩溃、挂起或提交次数

  • content-crash

  • content-crash-submission-succeeded

  • content-crash-submission-failed

  • content-hang

  • content-hang-submission-succeeded

  • content-hang-submission-failed

  • gmplugin-crash

  • gmplugin-crash-submission-succeeded

  • gmplugin-crash-submission-failed

  • main-crash

  • main-crash-submission-succeeded

  • main-crash-submission-failed

  • main-hang

  • main-hang-submission-succeeded

  • main-hang-submission-failed

  • plugin-crash

  • plugin-crash-submission-succeeded

  • plugin-crash-submission-failed

  • plugin-hang

  • plugin-hang-submission-succeeded

  • plugin-hang-submission-failed

版本 4

此版本紧随版本 3,添加了现在由崩溃管理器跟踪的提交。

每天发生崩溃或崩溃提交时,都会报告此测量。记录可能包含以下字段,其值表示在给定日期发生的崩溃、挂起或提交次数

  • main-crash

  • main-crash-submission-succeeded

  • main-crash-submission-failed

  • main-hang

  • main-hang-submission-succeeded

  • main-hang-submission-failed

  • content-crash

  • content-crash-submission-succeeded

  • content-crash-submission-failed

  • content-hang

  • content-hang-submission-succeeded

  • content-hang-submission-failed

  • plugin-crash

  • plugin-crash-submission-succeeded

  • plugin-crash-submission-failed

  • plugin-hang

  • plugin-hang-submission-succeeded

  • plugin-hang-submission-failed

版本 3

此版本紧随版本 2,基于对崩溃管理器的改进。

每天发生崩溃时,都会报告此测量。记录可能包含以下字段,其值表示在给定日期发生的崩溃或挂起的次数

  • main-crash

  • main-hang

  • content-crash

  • content-hang

  • plugin-crash

  • plugin-hang

版本 2

切换到版本 2 与引入崩溃管理器相吻合,后者提供了更强大的崩溃数据来源。

每天发生崩溃时,都会报告此测量。每个记录中可能存在以下字段

mainCrash

在给定日期发生的进程崩溃次数。

是的,版本 2 不会像版本 1 那样跟踪提交。很可能以后会重新添加提交。

版本 2 中也缺少插件崩溃和挂起。这些将被重新添加,可能在版本 3 中。

版本 1

每天发生崩溃时,都会报告此测量。报告以下属性

pending

尚未提交的崩溃报告数量。

submitted

已提交的崩溃报告数量。

备注

主进程崩溃通常在发生后立即提交(通过在崩溃报告程序中选中一个复选框,该复选框应该在崩溃后自动出现)。如果崩溃报告程序成功提交了崩溃,我们就会收到已提交的崩溃。否则,我们将其保留为挂起。

挂起的崩溃并不意味着它最终会被提交。

可以通过转到about:crashes在崩溃后提交挂起的崩溃报告。

如果通过about:crashes提交了挂起的崩溃,则已提交计数会递增,但挂起计数不会递减。这是因为 FHR 不知道刚刚提交了哪个挂起的崩溃,因此它不知道要递减哪一天的挂起崩溃。

示例

"org.mozilla.crashes.crashes": {
  "_v": 1,
  "pending": 1,
  "submitted": 2
},
"org.mozilla.crashes.crashes": {
  "_v": 2,
  "mainCrash": 2
}
"org.mozilla.crashes.crashes": {
  "_v": 4,
  "main-crash": 2,
  "main-crash-submission-succeeded": 1,
  "main-crash-submission-failed": 1,
  "main-hang": 1,
  "plugin-crash": 2
}

org.mozilla.healthreport.submissions

此测量包含 FHR 自身数据提交活动的历史记录。它于 2013 年 5 月初在 Firefox 23 中添加。

版本 2

这与版本 1 相同,除了添加了一个额外的字段。

uploadAlreadyInProgress

在另一个上传正在进行时发起了上传请求。这在行为良好的客户端中不应该发生。它(以及阻止同时上传的锁)被添加以确保这种情况永远不会发生。

版本 1

记录每日上传事件计数。

firstDocumentUploadAttempt

尝试将客户端的第一个文档上传到服务器。这些是客户端不知道服务器上先前文档 ID 的上传。除非客户端禁用了上传,否则客户端的历史记录中最多应该只有一个。

continuationUploadAttempt

尝试上传替换服务器上现有文档的文档。大多数上传尝试应归因于此,而不是firstDocumentUploadAttempt

uploadSuccess

firstDocumentUploadAttemptcontinuationUploadAttempt记录的上传尝试成功。

uploadTransportFailure

上传尝试由于传输失败(网络不可用等)而失败。

uploadServerFailure

上传尝试由于服务器报告的失败而失败。理想情况下,这些是 FHR 服务器本身报告的失败。但是,根据配置方式,中间代理、防火墙等可能会触发此操作。

uploadClientFailure

上传尝试由于客户端中的错误/异常而失败。这几乎肯定指出了客户端中的错误。

上传尝试的结果始终归因于与尝试相同的日期,即使结果发生在与尝试不同的日期。因此,结果计数的总和应等于尝试计数的结果。

org.mozilla.hotfix.update

此测量包含 Firefox 更新修补程序的结果。

Firefox 更新修补程序绕过内置的应用程序更新机制并安装现代 Firefox。

版本 1

此测量中的字段是根据磁盘上找到的更新修补程序状态文件的哪些版本动态创建的。

字段的通用格式为<version>.<thing>,其中version是修补程序版本,例如v20140527,而thing是修补程序状态文件中的键,例如upgradedFrom。以下是一些可以定义的things

upgradedFrom

标识修补程序从其升级的 Firefox 版本的字符串。例如16.017.0.1

uninstallReason

包含枚举值的字符串,用于标识卸载修补程序的原因。如果修补程序仍已安装,则值为STILL_INSTALLED

downloadAttempts

修补程序开始下载安装程序的次数(整数)。下载恢复是此计数的一部分。

downloadFailures

下载据称已完成但无法验证的次数(整数计数)。这可能表示网络连接出现问题。这与downloadAttempts的比率应该很低。

installAttempts

修复程序尝试运行安装程序的整数次数。理想情况下,此值应为 1。仅当 UAC 提升被取消或不允许时,此值才会大于 1。

安装失败次数

此客户端遇到的安装总失败次数的整数计数。可以为 0。 installAttempts - installFailures 表示安装成功次数。

显示的通知次数

向用户显示通知的次数,告知他们正在运行旧版本的 Firefox 的整数计数。

org.mozilla.places.places

此测量包含有关书签数据库(Firefox 存储其历史记录和书签的位置)的信息。

版本 1

以下属性报告数据库中项目的每日计数

书签

存在的书签的整数计数。

页面

历史记录数据库中页面的整数计数。

示例

"org.mozilla.places.places": {
  "_v": 1,
  "bookmarks": 388,
  "pages": 94870
}

org.mozilla.profile.age

此测量包含有关当前配置文件年龄的信息(在版本 2 中,还包含配置文件最近的重置日期)。

版本 2

存在profileCreationprofileReset 属性。两者都定义了自 Unix 纪元以来当前配置文件创建或重置的整数天数。

版本 1

存在单个profileCreation 属性。它定义了自 Unix 纪元以来当前配置文件创建的整数天数。

备注

由于许多因素,获得可靠的配置文件出生日期 比较困难,但从版本 2 开始,已经做出了改进 - 在“配置文件重置”时,我们从旧配置文件复制 profileCreation 日期,并在 profileReset 中记录重置时间。

示例

"org.mozilla.profile.age": {
  "_v": 2,
  "profileCreation": 15176
  "profileReset": 15576
}

org.mozilla.searches.counts

此测量包含有关在应用程序中执行的搜索的信息。

版本 6(移动版)

这添加了两个新的搜索位置:widgetactivity,分别对应于搜索小部件和搜索活动。

版本 2

此版本的行为类似于版本 1,除了我们添加了 Mozilla 与之签订合作伙伴协议的所有搜索引擎。与版本 1 一样,我们将搜索引擎 ID 与搜索来源连接起来。

版本 2 的另一个区别是,如果搜索引擎名称已本地化,我们不应该再将搜索错误地归因于其他 桶。

搜索引擎提供商的集合是

  • amazon-co-uk

  • amazon-de

  • amazon-en-GB

  • amazon-france

  • amazon-it

  • amazon-jp

  • amazondotcn

  • amazondotcom

  • amazondotcom-de

  • aol-en-GB

  • aol-web-search

  • bing

  • eBay

  • eBay-de

  • eBay-en-GB

  • eBay-es

  • eBay-fi

  • eBay-france

  • eBay-hu

  • eBay-in

  • eBay-it

  • google

  • google-jp

  • google-ku

  • google-maps-zh-TW

  • mailru

  • mercadolibre-ar

  • mercadolibre-cl

  • mercadolibre-mx

  • seznam-cz

  • twitter

  • twitter-de

  • twitter-ja

  • yahoo

  • yahoo-NO

  • yahoo-answer-zh-TW

  • yahoo-ar

  • yahoo-bid-zh-TW

  • yahoo-br

  • yahoo-ch

  • yahoo-cl

  • yahoo-de

  • yahoo-en-GB

  • yahoo-es

  • yahoo-fi

  • yahoo-france

  • yahoo-fy-NL

  • yahoo-id

  • yahoo-in

  • yahoo-it

  • yahoo-jp

  • yahoo-jp-auctions

  • yahoo-mx

  • yahoo-sv-SE

  • yahoo-zh-TW

  • yandex

  • yandex-ru

  • yandex-slovari

  • yandex-tr

  • yandex.by

  • yandex.ru-be

当然,还有其他

搜索来源保持不变

  • abouthome

  • contextmenu

  • searchbar

  • urlbar

测量结果只会填充当天发生的提供商和来源。

如果用户切换语言环境,则仍将支持旧语言环境中默认提供商的搜索。但是,如果用户在新的版本中添加了同一个搜索引擎,并且不是默认搜索引擎提供商,则其搜索将归因于其他 桶。

版本 1

我们记录按搜索引擎和搜索来源分组的已执行搜索的次数。仅明确计算 Mozilla 与之存在业务关系的搜索引擎。所有其他搜索引擎都分组到其他 桶中。

以下搜索引擎被明确计算

  • Amazon.com

  • Bing

  • Google

  • Yahoo

  • 其他

区分以下搜索来源

about:home

about:home 上的搜索文本框启动的搜索。

上下文菜单

从上下文菜单启动的搜索(突出显示文本,右键单击,然后选择“搜索…”)。

搜索栏

从搜索栏(Awesomebar 旁边的文本字段)启动的搜索。

网址栏

从 Awesomebar/网址栏启动的搜索。

由于搜索引擎名称的本地化,非 en-US 语言环境可能会错误地将搜索归因于其他 桶。这在版本 2 中已修复。

示例

"org.mozilla.searches.counts": {
  "_v": 1,
  "google.searchbar": 3,
  "google.urlbar": 7
},

org.mozilla.searches.engines

此测量包含有关搜索引擎的信息。

版本 1

此版本首次出现在桌面版 Firefox 31 中。它包含以下属性

默认

默认搜索引擎提供商的每日字符串标识符或名称。

仅在启用遥测时才会收集此字段。如果启用了遥测,然后又将其禁用,则此字段可能会从有效负载的未来日期中消失。

如果不存在默认搜索引擎,则可能会出现特殊值 NONE

如果存在默认搜索引擎但无法确定其标识符,则可能会出现特殊值 UNDEFINED

此字段的内容为 Services.search.defaultEngine.identifier(如果已定义)或 "other-" + Services.search.defaultEngine.name(如果未定义)。换句话说,没有 .identifier 的搜索引擎以 other- 为前缀。

版本 2

从 Firefox 40 开始,还有一个可选值

队列

每日队列字符串标识符,如果用户是搜索默认值 A/B 测试的一部分,则会记录此标识符。

org.mozilla.sync.sync

此每日测量包含有关同步服务的信息。

应为发生 FHR 测量的每一天记录值。

版本 1

此版本首次出现在桌面版 Firefox 30 中。它包含以下属性

enabled

每日数字,指示同步是否已配置和启用。如果已启用,则为 1,否则为 0。

首选协议

客户端支持的最大同步协议版本的字符串版本。对于旧版同步,此值为 1.1,对于使用 Firefox 帐户协议的客户端,此值为 1.5

实际协议

客户端配置为使用的实际同步协议版本。

如果客户端配置了旧版同步服务或仅支持 1.1,则此值为 1.1

如果客户端支持 1.5 并且 a) 客户端未配置 b) 客户端正在使用 Firefox 帐户同步,则此值为 1.5

同步开始

执行的同步操作次数。

同步成功

成功完成的同步操作次数。

同步错误

未成功完成的同步操作次数。

这是同步总体成功的衡量标准。这反映同步过程中可能发生的恢复性错误(例如记录冲突)。因此,这只是同步服务是否在没有错误的情况下运行的粗略指标。

org.mozilla.sync.devices

此每日测量包含有关已配置同步帐户的设备类型组成信息。

版本 1

版本 1 引入于 Firefox 30。

字段名称根据客户端从同步记录报告的设备类型动态变化。所有字段都是每日最后一次看到的整数,对应于该类型设备的数量。

常见值包括

桌面

对应于 Firefox 桌面客户端。

移动

对应于 Fennec 客户端。

org.mozilla.sync.migration

此每日测量包含有关同步迁移的信息(即,将旧版同步帐户迁移到 FxA 帐户的半自动化过程)。

在同步服务器提供迁移后开始记录测量,并在迁移完成或用户选择“取消链接”其同步帐户后停止记录。换句话说,预计已为 FxA 设置同步或未配置同步的用户不会收集数据,并且对于收集数据的用户,收集时间仅为相对较短的时期。

版本 1

版本 1 引入于 Firefox 37,并包含以下属性

状态

对应于 FxaMigration.sys.mjs 中的 STATE_USER_* 字符串或 STATE_INTERNAL_* 字符串。这反映了一种状态,在这种状态下,我们正在等待用户,或者正在等待某些内部流程在完成迁移的途中完成。

已拒绝

对应于用户关闭迁移信息栏的次数。

已取消链接

如果用户拒绝迁移而是从浏览器“取消链接”同步,则设置此值。

已接受

对应于用户明确选择启动或继续迁移的次数 - 它计算用户点击专门为迁移创建的任何 UI 的次数。“理想”的迁移 UX 会将此值设置为 1,一些已知的边缘情况(例如,需要浏览器重新启动才能完成)可能会期望此值为 2,而更多则表示我们做错了什么。

org.mozilla.sysinfo.sysinfo

此测量包含有关应用程序正在运行的系统的一些基本信息。

版本 2

此版本首次出现在桌面版 Firefox 29 中。

引入了一个属性。

isWow64

如果存在,此属性指示机器是否支持 WoW64。此属性可用于识别主机机器是否为 64 位。

此属性仅在 Windows 机器上存在。它是识别该环境中 32 位与 64 位支持的首选方法。

版本 1

以下属性可能可用

cpuCount

机器中 CPU/内核的整数数量。

memoryMB

机器中内存的整数兆字节数。

制造商

设备的制造商。

设备

设备的名称(如型号)。

硬件

未知。

name

操作系统名称。

version

操作系统版本。

体系结构

应用程序构建所用的操作系统体系结构。这并不是实际的系统体系结构。

示例

"org.mozilla.sysinfo.sysinfo": {
  "_v": 1,
  "cpuCount": 8,
  "memoryMB": 8192,
  "architecture": "x86-64",
  "name": "Darwin",
  "version": "12.2.0"
}

org.mozilla.translation.translation

此每日测量包含有关翻译功能使用情况的信息。这是一个特殊的遥测测量,仅在启用遥测时才会在 FHR 中记录。

版本 1

以下属性报告每日计数

translationOpportunityCount

翻译页面的机会次数的整数计数。

missedTranslationOpportunityCount

错过的翻译页面机会次数的整数计数。错过的机会是指翻译提供商不支持页面语言。

pageTranslatedCount

已翻译页面的整数计数。

charactersTranslatedCount

已翻译字符的整数计数。

detectedLanguageChangedBefore

用户在翻译前手动调整检测到的语言的次数的整数计数。

detectedLanguageChangedAfter

用户在首次翻译页面后手动调整检测到的语言的次数的整数计数。

targetLanguageChanged

用户手动调整目标语言的次数的整数计数。

deniedTranslationOffer

用户选择退出提供的页面翻译的次数的整数计数,可以通过“立即不翻译”按钮或“提供”状态下通知的关闭按钮来执行此操作。

autoRejectedTranlationOffer

用户未提供页面翻译的次数的整数计数,因为他们之前点击了“从不翻译此语言”或“从不翻译此网站”。

showOriginalContent

用户激活“显示原文”命令的次数的整数计数。

以下属性报告按语言细分的其他每日计数

translationOpportunityCountsByLanguage

语言到翻译该语言的机会次数的映射。

missedTranslationOpportunityCountsByLanguage

语言到未翻译机会计数的映射。

pageTranslatedCountsByLanguage

语言到从该语言翻译的页面计数的映射。每个语言条目将是一个对象,包含一个“total”成员以及翻译到每个语言的单个计数。

其他属性

detectLanguageEnabled

是否启用自动语言检测。这是一个整数,0 或 1。

showTranslationUI

是否显示翻译功能 UI。这是一个整数,0 或 1。

示例

"org.mozilla.translation.translation": {
  "_v": 1,
  "detectLanguageEnabled": 1,
  "showTranslationUI": 1,
  "translationOpportunityCount": 134,
  "missedTranslationOpportunityCount": 32,
  "pageTranslatedCount": 6,
  "charactersTranslatedCount": "1126",
  "detectedLanguageChangedBefore": 1,
  "detectedLanguageChangedAfter": 2,
  "targetLanguageChanged": 0,
  "deniedTranslationOffer": 3,
  "autoRejectedTranlationOffer": 1,
  "showOriginalContent": 2,
  "translationOpportunityCountsByLanguage": {
    "fr": 100,
    "es": 34
  },
  "missedTranslationOpportunityCountsByLanguage": {
    "it": 20,
    "nl": 10,
    "fi": 2
  },
  "pageTranslatedCountsByLanguage": {
    "fr": {
      "total": 6,
      "es": 5,
      "en": 1
    }
  }
}

org.mozilla.experiments.info

关于遥测实验服务的每日测量报告信息。

版本 1

属性

lastActive

在特定日期(如果有)处于活动状态的最终遥测实验的 ID。

版本 2

添加一个额外的可选属性

lastActiveBranch

如果实验使用分支,则为分支标识符字符串。

示例

"org.mozilla.experiments.info": {
  "_v": 2,
  "lastActive": "some.experiment.id",
  "lastActiveBranch": "control"
}

org.mozilla.uitour.treatment

关于 UITour 模块执行的处理标记的每日测量报告信息。

版本 1

以下属性中的每日文本值

<tag>

对应于 setTreatmentTag(tag, value) 调用的离散字符串数组。

示例

"org.mozilla.uitour.treatment": {
  "_v": 1,
  "treatment": [
    "optin",
    "optin-DNT"
  ],
  "another-tag": [
    "foobar-value"
  ]
}

org.mozilla.passwordmgr.passwordmgr

关于密码管理器的每日测量报告信息

版本 1

属性

numSavedPasswords

在密码管理器中保存的密码数量

enabled

用户是否已在首选项中禁用密码管理器

示例

"org.mozilla.passwordmgr.passwordmgr": {
  "_v": 1,
  "numSavedPasswords": 5,
  "enabled": 0,
}

版本 2

登录表单及其行为的更详细的测量

numNewSavedPasswordsInSession

本会话中保存到密码管理器的密码数量。

numSuccessfulFills

密码管理器在本会话中为用户填充密码字段的次数。

numTotalLoginsEncountered

用户在本会话中遇到登录表单的次数。

示例

"org.mozilla.passwordmgr.passwordmgr": {
  "_v": 2,
  "numSavedPasswords": 32,
  "enabled": 1,
  "numNewSavedPasswords": 5,
  "numSuccessfulFills": 11,
  "numTotalLoginsEncountered": 23,
}