TarleyNode 0.3.6
Released 14 October 2026
Added
- Grafana can graph TarleyNode's history with its built-in Prometheus data source: point it at https://<server>/api/prometheus with an API key as a Bearer header. It reads only, a key of someone in an access group sees only their devices, and query results carry device, sensor, site and connected site names for legends. Queries are limited to 400 days, 11,000 points per series and 30 seconds. See docs/grafana.md and the sample dashboard docs/grafana-dashboard.json.
- Applications can send their own metrics with OpenTelemetry (OTLP over HTTP, protobuf or JSON, gzip allowed) to https://<server>/v1/metrics with an Operator API key. Each series becomes an OpenTelemetry metric sensor on the device named by host.name, or on an Application device for the service.name, with history, threshold rules, alerts and Grafana like any other sensor; a key of someone in an access group cannot send. Gauges keep their value, counters their total and a per second rate, histograms their count and sum. Requests are limited to 4 MB, 5,000 points and 300 a minute per key, one person's keys to 30,000 points a minute and a series to one value about every 10 seconds; retried exports are not stored twice, and a key adds at most 20 devices and 200 sensors an hour; rejected points are reported as partial success. See docs/opentelemetry.md.
- On a device page, assigning a login no longer needs a trip to Credential profiles: when no login of that type is saved, or with Create a new login next to the saved ones, the dialog shows the same form as Credential profiles, saves the login and assigns it in one step. Only administrators, who can add credential profiles, see it.
- A high-availability cluster with no active server for over a minute, for example when its servers cannot agree on one, sends one alert to the email, Teams and other configured destinations, and another when a server is active again. A standby sends it from its own copy of the settings, since nothing can write at that time; a server cut off from the rest of the cluster never sends it.
- Settings › Server › SSL certificate shows the certificate's SHA-256 fingerprint (AB:CD:EF:…) with a Copy button, to compare with what TarleyNode Desktop shows when pairing with a server on a self-signed certificate.
- The training manual has a TarleyNode Desktop chapter: pairing, what each role can do, several servers, keyboard shortcuts, notifications and self-signed servers.
- A ready-made Linux server (SNMP) template applies itself to every new Linux server: Ping, SNMP system (uptime), CPU, Memory and Disk space, with alerts when ping fails or CPU, memory or the fullest disk goes over 90%. Its SNMP checks use the server's own SNMP login and are added as soon as one is assigned; with automatic discovery on, its active ports are monitored too.
- A Linux server's page has an SNMP set-up card with the snmpd commands to run on it (Debian or Ubuntu, Red Hat, Rocky or AlmaLinux; SNMP v3 or v2c), filled in with the address of the connected site that polls it, and a Copy button. Passwords stay placeholders.
- Devices now keep their operating system (Linux, Windows or ESXi), from discovery or chosen when adding or editing a device. A template's SNMP checks can leave out the credential to use each device's own SNMP login.
- SNMP server resources checks report the fullest disk, as the SSH and Windows checks already did, so one rule covers every disk.
- Removing a server from a cluster gives its licence seat back, so a rebuilt or new server can take it. If the licence server will not free it, the console says why.
- In a cluster, the licence card says when a server could not get its own licence seat, and lists the seats the cluster holds, so a seat left by a rebuilt server is easy to free.
- After an update, the server tells the licence server its new version straight away instead of at its next daily renewal.
- Installing an update shows each step with a progress bar: downloading, backing up, then installing. In a cluster it also shows sending to the standby servers, how many have installed it, and the handover. While the server restarts or hands over, the page says so and reconnects by itself.
- Graphs have a time range picker with 1 hour, 6 hours, 24 hours, 7 days, 30 days, 90 days and 1 year, or Custom for your own from and to. Drag across a sensor graph to zoom in: it fetches the readings again in more detail. Double-click or Reset zoom goes back. Dashboards have one picker for all their graphs (As saved keeps each graph's own period), and the Traffic page uses the same picker for up to 7 days.
- A port's traffic graph shows a 95th percentile line for traffic in and out, worked out on the server from the readings themselves, as bandwidth is often billed. Over very long periods it uses one reading in every few and is marked approx. Stacked shows in and out on top of each other. The history API returns it with percentile=95.
- Every graph has a PNG button that saves it as a picture in the colours on screen, and graphs on dashboards and the Traffic page have a CSV button for their readings, like a sensor's page.
- Graphs in the phone app have light axes: the time under the graph (dates over more than a day) and values with their unit beside it.
Changed
- The Network map is now a tree from the firewall or router down, with a different shape for firewalls and routers, switches, wireless access points and other devices, and a badge counting failing checks. Devices on one port fold into a +N bubble you can open. Line width shows port speed, colour shows how busy the port is, and a port that is down is dashed red. The map zooms and pans, has a legend, and lists devices without links beside it. Saved maps keep their layout.
- Each dashboard now has its own tab on the Dashboards page instead of a drop-down, so a new or ready-made dashboard opens on a new tab beside the ones you already have.
- Graph hover values and Max/Min labels now use the same colour as their line, so it is clear which value is which.
- Graphs keep short spikes on long periods: each line is the average over a period with a faint band up to its highest reading, and the Max mark shows the highest single reading. Sensor graphs show the alert rule's limits as dashed lines ("Alert above 90%", or "Normal range limit" for a learned threshold), shade steps where only some readings failed in a lighter red, the legend gives each channel's min, max, average and last value, and graphs on a sensor page or a dashboard share one crosshair. Lines are drawn straight between readings so they never go above 100%, and change colour straight away when you switch theme.
- Graph axes and hover values use the same units everywhere: traffic in bit/s, kbit/s and Mbit/s, and sizes in KiB, MiB and GiB (1,024 bytes each), including on the Traffic page, dashboard graphs and disk sizes. Availability on dashboards reads as a share, such as 60% up, and the availability report counts steps rather than samples, with an Up share column in its CSV. Over a day or more, the time axis shows the date.
- A dashboard graph of a measurement is now the full sensor graph: every channel of the check (the chosen one shown, the others a click away in the legend), with min, max, average and last, alert lines, the 95th percentile on ports, and drag to zoom. Availability graphs stay as they were.
Fixed
- Restoring a backup works again. Since 0.3.5 every restore stopped at its safety check with "operator is not unique", before anything was changed, so the server kept running as it was.
- When the active server stopped and the witness was also down, two up-to-date standbys could keep splitting the vote between them, so no server became active until one was restarted. A standby now leaves the takeover to a better or equal standby with a lower ID, and after a split vote waits a random 10 to 20 seconds before trying again. A takeover that cannot win is logged and shown on the High availability card, saying how many voters agreed and which did not answer.
- In a cluster, a server's old licence seat is no longer kept for good when the licence server could not be reached as the server was activated again: the seat is no longer renewed, the licence card lists it as being freed, and it is freed at the next licence check. Removing a server that held more than one seat now frees all of them.
- Security: the SNMP and flow set-up cards only fill in the connected site's address when it is a plain IP address, so a connected site cannot put its own commands into the steps you copy. Builds use Go 1.27.2, which fixes several HTTP/2, HTTP and TLS vulnerabilities in Go 1.27.1. When a template check becomes an SNMP check, it now uses the device's SNMP login instead of keeping a login of another kind.
- When the active server fails, the standby holding the most of its changes takes over, so none of its last changes are lost. Before, a standby with fewer could win, and the other standby then could not follow it.
- A standby that stopped following the active server showed as "up to date". It now shows how far behind it is, and copies the database afresh by itself after three minutes.
- After a rolling update, a server not yet updated no longer takes over ahead of an updated one, and one that does take over installs the release first. Before, it took over and its application could not start against the updated database.
- The cluster agent's log now survives a restart or an update of the agent, so the reason for a failover can still be read afterwards.
- Activating a licence on a cluster server now makes that server the seat the cluster vouches with, so a cluster whose seats were all released can recover by activating again. A seat freed on the licence server is dropped, so its server takes a new one.
- A cluster server waiting for its own licence seat no longer says "Move the license here", which would have taken another server's seat.
- A standby server that has never been active now reports its data disk, so the High availability card checks its size like the others.
- Restoring a cluster's backup onto a server outside that cluster no longer turns the server into the old cluster's active server. Before, it set itself up as that server within a minute.
- In a cluster, a restore or backup is no longer interrupted by the cluster agent starting the application again part way. Before, the restored server could send alerts from the backup before they were paused.
- A busy firewall or router that sees more than 20,000 addresses in a minute no longer stops all flow data from its site.
- A flow summary the server refuses is dropped instead of holding up every summary after it, and very large counters are capped instead of being refused.
- A restore that fails while swapping the database puts the live database back and lets connections in again. A restore that fails after the data was put in place now says so, instead of saying nothing changed.
- A scheduled backup that finds another backup or a restore already running now says it was skipped. Before, the console showed it running for up to six hours.
- Cancelling a restore while the backup is still being checked is refused until the check finishes, so the restore cannot go ahead after the cancel.
- If deploy/.env has no TARLEYNODE_VERSION, starting TarleyNode now stops with a clear message instead of quietly running the 0.1.0 images.