“health” ping

This ping is intended to provide data about problems arise when submitting other pings. The ping is submitted at most once per hour. On shutdown an additional ping is submitted to avoid losing collected data.

This ping is intended to be really small. The client id is submitted with this ping.

{
  "type": "health", // type
  ... common ping data
  "clientId": <UUID>, // client id, e.g.
                        // "c641eacf-c30c-4171-b403-f077724e848a"
  "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>
        ...
    }
  }
}

Send behavior

TelemetryHealthPing.jsm tracks several problems:

  • The size of other assembled pings exceeds the ping limit.
  • Failures while sending other pings.

After recording the data, a health ping will be sent:

  • immediately, with the reason immediate , if it is first ping in the session or it passed at least one hour from the previous submission.
  • after 1 hour minus the time passed from previous submission, with the reason delayed , if less than an hour passed from the previous submission.
  • on shutdown, with the reason shutdown using Ping Sender, if recorded data is not empty.

Field details

reason

The reason field contains the information about why the “health” ping was submitted. It presently supports three reasons:

  • immediate: The health ping was submitted immediately after recording a failure.
  • delayed: The health ping was submitted after a delay.
  • shutdown: The health ping was submitted on shutdown.

pingDiscardedForSize

The pingDiscardedForSize field contains the information about the top ten pings whose size exceeded the ping size limit (1 MB). This field lists the number of discarded pings per ping type.

The ping type “<unknown>” is used to indicate that a pending pings size exceeded the limit. This is because we don’t have the pending pings type available cheaply at the moment.

This field is optional.

sendFailure

The sendFailure field contains the information about pings, which had failures on sending. This field lists the number of failed pings per ping send failure type.

The recorded failure types are:

  • “eOK” - No error.
  • “eRequest” - There was some error in the request before we started to service it.
  • “eUnreachable” - The remote server was unreachable.
  • “eChannelOpen” - The connection failed when we tried to open the channel.
  • “eRedirect” - The connection failed when being redirected.
  • “abort” - What XMLHttpRequest means by “abort” (see MDN)
  • “timeout” - What XMLHttpRequest means by “timeout” (see MDN)

This field is optional.

Note

Although both pingDiscardedForSize and sendFailure fields are optional, the health ping will only be submitted if one of this field not empty.