A Step Closer to the Cloud
The cloud now keeps your networks, so no node has to, and the workbench is in your User Dashboard, so every node can run headless. Nodes update themselves and keep a backup of the version they replace, and they can install as a service that starts at boot. Every node keeps its KPIs for 24 hours, so you can look back at what happened and when. This major release also adds a REST API with client libraries for Go, Python and TypeScript.
How to upgrade
- Hub / Upgrade every node on a hub together. Nodes on 12.0.0 and nodes on older versions can't read each other's KPIs or live values.
- Raft / Upgrade both ends of a Raft link together.
- Packet size / UDP now sends packets of up to 1200 bytes by default, down from 1452, and Raft splits larger payloads itself. Your pipelines are updated when you upgrade: fragmentizers and defragmentizers are removed, along with the variables and KPIs that read them. A pipeline without Raft that sends packets larger than 1200 bytes over UDP needs its UDP
mtuset again. - Cloud hub / A node on the cloud hub with
networks:in its config file no longer starts. Removenetworks:, or keep the node off the cloud hub. The networks and blueprints it kept stay in its database, but you need to create them again on the cloud hub. Read more here - KPI recordings /
np kpis recordandnp kpis getare removed. Export a run's KPIs as CSV withnp kpis export <pipeline>instead. Recordings you already made stay in the folder of their run until you delete the run. - Headless builds / Headless builds no longer open an HTTP port, unless they run a hub server. Reach them through another node instead, at
/node/<id>/on its address.
For API users
- KPIs / Changing the ids, types, expressions or variables of a running pipeline's KPIs now restarts it.
updatePipelineneedsforce_restartfor these changes. Labels, order and units still change without a restart. - Go / The generated Go code of the gRPC API moves from
nanoping/nanopinggrpctonanoping/grpc. Update your imports, or switch to the new Go client library.
Your networks live on the cloud hub
The cloud hub now keeps the networks and blueprints of every node in your organization, and runs them all the time, whichever nodes are online. You no longer need a networks: section on any node.
Join the cloud hub from the command line with np cloud join, leave it with np cloud leave, and see where a node stands with np cloud status.
The workbench in your User Dashboard
Open the workbench from your User Dashboard on user.nanoping.com and reach every node connected to the cloub hub of your organization from there. No node needs a dashboard of its own any more, so every node can run headless. Start one without a dashboard port with np up --no-http.
Nodes update themselves
A node looks for a new release every six hours. Settings has a new Updates page for every node on the hub, where you install a release, or go back to an older version. Turn on Install Updates Automatically and the node installs new releases by itself.
Every install keeps the version it replaces as a backup, with a copy of the node's data, which you can restore from Backups. If a new release doesn't start, the node goes back to the version it ran before. An install that would leave less than 1000 MB free on the disk is refused before anything is downloaded.
The same is on the command line with np update, which also works while the node is stopped, so you can put back a node that doesn't start.
See what happened, and when with the new KPI timeline
A node now keeps the KPIs of its running pipelines for 24 hours, whether a dashboard is open or not. The KPI graphs start with that history instead of empty, and the new timeline view lays every KPI out over time, so a loss spike or a restart is easy to find afterwards. Keep more or less history with pipelines.kpiHistoryRetentionMinutes.
Export the KPIs of a run as CSV from the KPIs panel or the KPI page, with Ctrl+Shift+G, or with np kpis export <pipeline>.
Run np as a service
np service install installs the node as a service that starts at boot and comes back if it fails, so no more np up. It takes the same options as np up, and np service uninstall removes it again.
A node also stops cleanly on Ctrl+C and SIGTERM, so a service manager or container stopping it no longer cuts its pipelines off.
No root needed
A node no longer has to run as root. Give np the network permissions it needs once with setcap, and run it as a regular user.
A REST API, with clients for Go, Python and TypeScript
Turn on the REST API with --rest-api to manage nodes with JSON over HTTP. It serves the same as the gRPC API.
Client libraries for Go, Python and TypeScript come with every release, with helpers for things like joining a hub: nanoping-api-go, nanoping-api on PyPI and @nanoping/api on npm.
Improvements
- Settings / Settings is split into pages, with a menu on the left.
- Nodes / The Nodes page shows the version each online node runs, and why the hub turned a node away, such as "Needs update" for a node on an older version.
- Nodes / A node takes on the name its hub gives it. A node whose config file sets its name can't be renamed from the hub.
- CLI /
np downwaits for the node to stop, sonp downfollowed bynp upworks. - TUN and TAP / TCP segments are kept small enough to get through without being split. TUN also sends more efficiently.
Fixes
- Hub / Fixed a node staying off its hub after its connection dropped a dozen or so times.
- Networks / Fixed a new network sometimes missing nodes already on the hub.
- Dashboard / Fixed the hub status in the footer staying offline after the node restarted.
- Dashboard / Fixed the Pipelines and KPI pages reloading every few seconds while a node keeps reconnecting.
- Dashboard / Fixed another node's Settings, System and Log pages not loading again when the hub comes back.
- KPIs / Fixed Data Rate KPIs of type TOTAL showing a thousandth of the rate.
- CLI / Fixed
np upfailing with "timeout waiting for signal from process" when a node is slow to start. - CLI / Fixed
np downwaiting forever on a node that doesn't answer. - CLI / Fixed commands run without
-cgiving the node a new ID when its config file sets one. - Node / Fixed a node never finishing stopping when one of its pipelines doesn't stop. On Linux, pipelines now also end with the node.
- Licensing / Fixed a node locked over its license staying locked until it was claimed again.
- Templates / Fixed the Stream Timeout variable of the UDP video streaming templates showing Invalid.
- API / Fixed the node list sometime showing every node as offline.