“health” ping

此 ping 用于提供有关提交其他 ping 时出现的问题的数据。此 ping 最多每小时提交一次。在关闭时,会提交一个额外的 ping 以避免丢失已收集的数据。

此 ping 旨在非常小。客户端 ID 和配置文件组 ID 与此 ping 一起提交。

{
  "type": "health", // type
  ... common ping data
  "clientId": <UUID>, // client id, e.g.
                        // "c641eacf-c30c-4171-b403-f077724e848a"
  "profileGroupId": <UUID>,
  "payload": {
    "os": {
        "name": <string>, // OS name
        "version": <string> // OS version
    },
    "reason": <string>, // When ping was triggered, e.g. "immediate" or "shutdown".
    "pingDiscardedForSize": {
        "main": <number>, // Amount of occurrences for a specific ping type.
        "core": <number>
        ...
    },
    "sendFailure": {
        "timeout": <number>, // Amount of occurrences for a specific failure.
        "abort": <number>
        ...
    }
  }
}

发送行为

HealthPing.sys.mjs 跟踪几个问题

  • 其他组装的 ping 的大小超过了 ping 限制。

  • 发送其他 ping 时的故障。

记录数据后,将发送健康 ping

  • 立即,原因是 immediate,如果它是会话中的第一个 ping 或自上次提交以来已过去至少一小时。

  • 在 1 小时减去自上次提交以来经过的时间之后,原因是 delayed,如果自上次提交以来不到一小时。

  • 在关闭时,原因是 shutdown,使用 Ping 发送器,如果记录的数据不为空。

字段详细信息

reason

reason 字段包含有关提交“health” ping 的原因的信息。它目前支持三个原因

  • immediate:健康 ping 在记录故障后立即提交。

  • delayed:健康 ping 在延迟后提交。

  • shutdown:健康 ping 在关闭时提交。

pingDiscardedForSize

pingDiscardedForSize 字段包含有关大小超过 ping 大小限制 (1 MB) 的前十个 ping 的信息。此字段列出了每个 ping 类型丢弃的 ping 数量。

ping 类型“<unknown>”用于指示挂起的 ping 大小超过了限制。这是因为我们目前无法轻松获取挂起的 ping 类型。

此字段是可选的。

sendFailure

sendFailure 字段包含有关 ping 的信息,这些 ping 在发送时出现故障。此字段列出了每个 ping 发送失败类型失败的 ping 数量。

记录的故障类型为

  • “eOK” - 无错误。

  • “eRequest” - 在我们开始服务之前,请求中出现了一些错误。

  • “eUnreachable” - 远程服务器无法访问。

  • “eChannelOpen” - 当我们尝试打开通道时,连接失败。

  • “eRedirect” - 重定向时连接失败。

  • “abort” - XMLHttpRequest 所谓的“abort”(请参阅 MDN

  • “timeout” - XMLHttpRequest 所谓的“timeout”(请参阅 MDN

此字段是可选的。

注意

尽管 pingDiscardedForSizesendFailure 字段都是可选的,但只有在其中一个字段不为空时才会提交健康 ping。