Skip to main content

Live Tail

The dashboard streams new entries as they happen. Trigger a request in your application and it appears in the list immediately — no refresh, no polling delay.

This is on by default. There is nothing to configure.

How it works​

NestLens exposes a Server-Sent Events endpoint that the dashboard subscribes to:

GET /nestlens/__nestlens__/stream

Whenever the collector records an entry, it is pushed to every connected dashboard. SSE was chosen over WebSockets deliberately: it is plain HTTP, works through proxies without extra configuration, and the browser reconnects on its own if the connection drops.

The stream follows your configured path and any global prefix, exactly like the rest of NestLens:

SetupStream endpoint
default/nestlens/__nestlens__/stream
path: '/admin/monitoring'/admin/monitoring/__nestlens__/stream
app.setGlobalPrefix('api')/api/nestlens/__nestlens__/stream

Connection status​

List pages show a Live indicator. When it is lit, the stream is connected and entries arrive as they are collected. If the connection drops — a server restart, a proxy timeout — the browser reconnects automatically and the indicator returns.

Entries that arrived while you were disconnected are not lost: they were still recorded, and a refresh brings them in.

Pausing​

Recording can be paused from the dashboard toolbar. While paused, no new entries are collected, so nothing is streamed. Resume to start receiving again.

This is useful when you want to reproduce a specific flow without the list moving under you.

Notes for reverse proxies​

SSE needs the connection to stay open and unbuffered. Most setups work out of the box, but nginx buffers proxied responses by default:

location /nestlens/ {
proxy_pass http://localhost:3000;
proxy_http_version 1.1;
proxy_set_header Connection '';
proxy_buffering off;
}

Without proxy_buffering off, entries arrive in bursts rather than in real time. NestLens already sends X-Accel-Buffering: no, which nginx honours in most configurations — the directive above is the explicit fallback.