← Back to changelog
v12.0.0

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 mtu set again.
  • Cloud hub / A node on the cloud hub with networks: in its config file no longer starts. Remove networks:, 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 record and np kpis get are removed. Export a run's KPIs as CSV with np 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. updatePipeline needs force_restart for these changes. Labels, order and units still change without a restart.
  • Go / The generated Go code of the gRPC API moves from nanoping/nanopinggrpc to nanoping/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.

Read more here

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.

Read more here

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.

Read more here

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.

Read more here

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 down waits for the node to stop, so np down followed by np up works.
  • 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 up failing with "timeout waiting for signal from process" when a node is slow to start.
  • CLI / Fixed np down waiting forever on a node that doesn't answer.
  • CLI / Fixed commands run without -c giving 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.