Skip to content

Latency Visualisation (LatencyMON)

LatencyMON is a client-side tool that visualises and compares latency trends using stacked, interactive charts. It is built with Vue 3 and Quasar, consistent with the rest of the RIPE Atlas UI.

Highlights

  • Available for ping, traceroute, DNS, TLS (SSL) and HTTP measurements.
  • Designed to make comparison easy: values are preprocessed and the axes are auto-tuned so multiple trends can be read side by side.
  • New results are fetched automatically as they are collected — polling is timed to each measurement's sampling interval — and you can navigate back through historical results.
  • Probes are grouped automatically (by target or country), and any group can be split into individual per-probe charts.
  • Shows min, a middle value (avg/med) and max, with a toggle to show only the minimum.
  • Both absolute (milliseconds) and relative (percentage) value representations are available.
  • Charts are stacked and can be reordered, drag-resized and expanded to fullscreen.

Reading the charts

Each chart plots latency over time for a single probe or a group of probes. Three values are available per sample:

  • min — the lowest of the round-trip times collected.
  • max — the highest.
  • the middle value — shown as avg for ping measurements (the average RTT) or med for traceroute, DNS, TLS and HTTP measurements (the median).

By default all three lines are drawn (the min line in green); use the Min / All toggle to switch to showing only the minimum. Each dot marks a collected sample, and values that the axis optimisation has clipped (so extreme outliers don't distort the chart) are shown with distinct dot styling. Hover near a sample — the popup snaps to the nearest one, so you only need to get close — to see its min, middle value (avg/med) and max in milliseconds, plus packet loss; these are always shown as the original millisecond values, even in the relative view.

When several probes are grouped into one chart, their results are aggregated into a single min, middle and max band, and the member probes are listed beneath the chart; split the group (see below) to see each probe on its own. An empty spot means no data was collected for that period. Packet loss is drawn as a shaded area whose opacity scales with the amount of loss, making heavier loss more visible. When the view is aggregated rather than at full resolution, the popup for a sample with partial packet loss adds a "Zoom in for per-sample detail" hint.

Axis: milliseconds vs relative

The x-axis always shows time on a linear scale. The y-axis can show absolute or relative values — switch between them with the ms / Relative toggle.

Milliseconds (absolute)

Shows the real latency values in milliseconds on a linear scale. The y-axis starts at the minimum latency collected in the time range for that chart, and extreme outliers are clipped so they don't distort the scale.

Relative

Shows each value as a percentage above the minimum baseline, with the baseline sitting at 0%. For example, if the latencies collected oscillate between 30 ms and 90 ms, 30 ms is the baseline (0%) and 90 ms appears as +200%.

Using the tool

When a measurement is first loaded, LatencyMON applies a default grouping — by target where that applies, otherwise by country, falling back to grouping the first probes. The probes belonging to each group are listed with its chart.

The toolbar's controls, in order from left to right:

ControlWhat it does
Add measurementAdd another measurement to the view.
Add probesAdd specific probes from the loaded measurements (enabled once a measurement is present).
Time windowPick a preset window (last hour, 2 days, 2 weeks or month) or choose Custom for an exact range.
◀ Shift earlierMove the window back by a quarter of its width.
Zoom in / outNarrow or widen the time range (10× per step); zooming in loads higher-resolution data.
▶ Shift laterMove the window forward by a quarter of its width.
Jump to nowMove the window to the current time.
FullscreenExpand the visualisation to fill the screen.
Relative / msSwitch the axis between relative (% above the minimum) and absolute (milliseconds).
Min / AllShow only the minimum line, or min + middle + max.
Size / DistanceWhen grouping by country, choose which five countries to show: those with the most probes (Size) or those closest to the target (Distance).
Auto refreshJump to the current time and keep refreshing periodically (shown while a measurement is still running).
Share (🔗)Copy a link to the current view — measurements, time range and settings — or embed code (a ready-to-paste <iframe>) for the same view.
About (ⓘ)Open the LatencyMON info panel. Shown only in fullscreen view.

Group, split and reorder

In addition to the automatic grouping, you can build your own groups and rearrange the view:

  • Split a group into individual per-probe charts with a single button on the group, to inspect each probe on its own.
  • Reorder charts by dragging them, and resize a chart by dragging.

While a particular time frame is shown, use the time bar beneath the charts to move through the measurement's lifetime. The selected window can be widened or narrowed with the time bar or the toolbar controls, and you can zoom in or out by selecting a portion of a chart. When the selected time frame is recent enough, live updating activates: LatencyMON polls for new results in step with the measurement's sampling interval (it does not use a streaming feed). An indicator shows when live updating is active.

Open the measurement

LatencyMON links out to the underlying RIPE Atlas measurement by ID, so you can jump from a trend to the measurement's own page. The probes in a group are also listed as links beneath its chart.

High-resolution data beyond routequake limits

LatencyMON normally reads from the aggregated results API (routequake). For ranges that fall outside the routequake limits, it can load the underlying non-aggregated (per-sample) results directly — currently capped at 10,000 samples for performance.

Embed LatencyMON in your page

LatencyMON captures the whole view — measurements, time window, value mode, grouping, Min/All, and so on — in the page URL, so the tool can generate a ready-to-paste embed for the exact view you are looking at:

  1. Open LatencyMON for your measurement(s) at https://atlas.ripe.net/latencymon/<measurementIds> and set up the view you want (time range, Relative/ms, Min/All, grouping, …).
  2. Open the Share (🔗) menu in the toolbar and choose Copy embed code. This copies a complete <iframe> snippet pointing at the /embed route for that exact view — paste it straight into your page.

The copied snippet looks like this:

html
<iframe
  src="https://atlas.ripe.net/latencymon/1791207/embed#…"
  width="100%"
  height="600"
  style="border: 0"
></iframe>

A few details:

  • The whole view is carried in the URL's #… fragment, so the embed reproduces your exact view inside the iframe — there is no need to hand-build parameters or edit the path yourself. (If you prefer a plain link to the full-page view, choose Copy link from the same menu.)
  • <measurementIds> in the path is one or more measurement IDs joined by a hyphen (-); providing exactly two pairs them as an IPv4/IPv6 comparison (first IPv4, second IPv6).
  • Adjust width and height on the <iframe> to suit your layout.
  • External embedding is only permitted on the /embed route. The embed view drops the page header and the fullscreen control, and embed pages are not indexed by search engines.