80 lines
3.7 KiB
ReStructuredText
80 lines
3.7 KiB
ReStructuredText
|
|
"main" ping
|
|
===========
|
|
|
|
This is the "main" Telemetry ping type, whose payload contains most of the measurements that are used to track the performance and health of Firefox in the wild.
|
|
It includes the histograms and other performance and diagnostic data.
|
|
|
|
This ping is triggered by different scenarios, which is documented by the ``reason`` field:
|
|
|
|
* ``aborted-session`` - this ping is regularly saved to disk (every 5 minutes), overwriting itself, and deleted at shutdown. If a previous aborted session ping is found at startup, it gets sent to the server. The first aborted-session ping is generated as soon as Telemetry starts
|
|
* ``environment-change`` - the :doc:`environment` changed, so the session measurements got reset and a new subsession starts
|
|
* ``shutdown`` - triggered when the browser session ends
|
|
* ``daily`` - a session split triggered in 24h hour intervals at local midnight. If an ``environment-change`` ping is generated by the time it should be sent, the daily ping is rescheduled for the next midnight
|
|
* ``saved-session`` - the *"classic"* Telemetry payload with measurements covering the whole browser session (only submitted for a transition period)
|
|
|
|
Most reasons lead to a session split, initiating a new *subsession*. We reset important measurements for those subsessions.
|
|
|
|
*Note:* ``saved-session`` is sent with a different ping type (``saved-session``, not ``main``), but otherwise has the same format as discussed here.
|
|
|
|
Structure::
|
|
|
|
{
|
|
version: 4,
|
|
|
|
info: {
|
|
reason: <string>, // what triggered this ping: "saved-session", "environment-change", "shutdown", ...
|
|
revision: <string>, // the Histograms.json revision
|
|
timezoneOffset: <number>, // time-zone offset from UTC, in minutes, for the current locale
|
|
previousBuildId: <string>, // null if this is the first run, or the previous build ID is unknown
|
|
|
|
sessionId: <uuid>, // random session id, shared by subsessions
|
|
subsessionId: <uuid>, // random subsession id
|
|
previousSessionId: <uuid>, // session id of the previous session, null on first run.
|
|
previousSubsessionId: <uuid>, // subsession id of the previous subsession (even if it was in a different session),
|
|
// null on first run.
|
|
|
|
subsessionCounter: <number>, // the running no. of this subsession since the start of the browser session
|
|
profileSubsessionCounter: <number>, // the running no. of all subsessions for the whole profile life time
|
|
|
|
sessionStartDate: <ISO date>, // daily precision
|
|
subsessionStartDate: <ISO date>, // daily precision, ISO date in local time
|
|
sessionLength: <number>, // the session length until now in seconds, monotonic
|
|
subsessionLength: <number>, // the subsession length in seconds, monotonic
|
|
},
|
|
|
|
childPayloads: {...}, // only present with e10s; a reduced payload from content processes
|
|
|
|
simpleMeasurements: { ... },
|
|
histograms: {},
|
|
keyedHistograms: {},
|
|
chromeHangs: {},
|
|
threadHangStats: {},
|
|
log: [],
|
|
fileIOReports: {...},
|
|
lateWrites: {...},
|
|
addonDetails: { ... },
|
|
addonHistograms: {...},
|
|
UIMeasurements: {...},
|
|
slowSQL: {...},
|
|
slowSQLstartup: {...},
|
|
}
|
|
|
|
info
|
|
----
|
|
|
|
sessionLength
|
|
~~~~~~~~~~~~~
|
|
The length of the current session so far in seconds.
|
|
This uses a monotonic clock, so this may mismatch with other measurements that
|
|
are not monotonic like calculations based on ``Date.now()``.
|
|
|
|
If the monotonic clock failed, this will be ``-1``.
|
|
|
|
subsessionLength
|
|
~~~~~~~~~~~~~~~~
|
|
The length of this subsession in seconds.
|
|
This uses a monotonic clock, so this may mismatch with other measurements that are not monotonic (e.g. based on Date.now()).
|
|
|
|
If ``sessionLength`` is ``-1``, the monotonic clock is not working.
|