v0.8.0
The map grows up. The service map has been the product's front page since
v0.1, and a graph of circles for just as long. It drew what sends telemetry —
which left out the databases, caches and brokers most of your latency actually
lives in, and threw away the edges pointing at workloads nobody has
instrumented.
v0.8 fixes both without collecting anything new. Every node and every edge added
here comes from telemetry that was already arriving, derived in the database the
way error tracking always has been: no new agent, no new table, nothing to
switch on. On a zero-code install the eBPF sensor reads the SQL and Redis wire
protocols in the kernel, so the database is on the map inside the wedge's five
minutes.
The rest of the release is about reading it: boundaries so an estate can be
grouped the way you think about it, edge volume for when the question is which
path carries the traffic, a legend that explains every channel in use, and a
sidebar grouped by the question each screen answers instead of one ever-growing
list. Two layout defects fell out of proving it on a real cluster, and one older
one came with them — the browser suite covering these screens had never run as a
gate, and three of its tests had quietly rotted. It runs on every change now.
Added
- The database is on the map. A service that spends most of its latency in
PostgreSQL used to be drawn as a lonely circle with no explanation, because
the map only drew what sends telemetry — and a database, cache or message
broker sends none. They are now first-class nodes, derived from the exit spans
of the services calling them: no new agent, no new table, nothing to turn on.
On a zero-code install the eBPF sensor reads the SQL and Redis wire protocols
in the kernel, so the database appears in the first five minutes with nothing
configured. Each edge carries call volume, error rate and the latency the
CALLER experienced, which is the number that answers "where is the time
going?" — and four services drawn against one cache is a blast radius that was
previously invisible. A broker is drawn from both ends, so a queue is never a
dead end. Databases, caches and brokers only: an unmatched HTTP call is usually
a third-party API, and admitting every one of them would make the map less
readable, not more — see the
AEP. - Boundaries on the map. Group the graph by namespace or by service group
and each one is drawn as a labelled container, so an estate of forty services
can be read the way you actually think about it instead of scanned as a
hairball. Namespaces come from the same resolution the health board's
auto-grouping uses, so a box on the map and a group on the board cannot
disagree about where a service lives; a service that declares neither is drawn
outside every box rather than swept into an invented one. Off by default and
held in the URL, like every other map control — see the
AEP. - The map's zoom controls now have a number to move: a live zoom percentage
beside them. - Every edge, labelled with its volume, on demand. The hover has always
answered "what is this one edge"; the toggle answers the other question —
which of these paths carries the traffic — for the whole graph at once. A
connection with no traced calls behind it shows bytes, because it has no calls
to count.
Fixed
- The golden screens are now checked on every change. The Playwright suite
covering the map, traces, logs, flame graphs and settings could only be run by
hand, against a stack started with authentication weakened — so it was never a
CI gate, and three of its specs had quietly rotted across two releases without
anyone noticing. It now runs against a real authenticated hub, unattended, on
every pull request. - The clone-free quickstart was still running v0.2 images. The README tells
you to download one compose file and run it; that file's image default was
pinned by hand in July and never moved, so the fastest path to trying Avuru
Obs has been evaluating a five-release-old build. It now follows the newest
release, stamped at release time so it cannot go stale again. - The map was deleting the connections it could least afford to lose. An
edge whose far end never sent telemetry — an eBPF flow to a workload nobody
has instrumented — was dropped outright, because a graph edge needs two nodes
and only one existed. Those endpoints are now drawn as undetected peers:
hollow outlines, counted apart from services, carrying no metrics because we
have none. It is usually the most interesting thing on the screen, since it is
the part of the estate nothing else can see.
Changed
- The sidebar is grouped by the question each screen answers, not by one
ever-growing "Observe" list: Topology (what is out there, and is it well),
Signals (what happened), Operations (what needs me), Infrastructure (what it
runs on, and what that costs). Nine of thirteen entries used to sit under a
single heading, which grew with every module and said nothing about how the
screens relate. The first-five-minutes path is unchanged — the service map is
still one click from the landing screen — and a layer whose every screen
belongs to a module you don't run disappears entirely rather than labelling a
gap. - The map's first layout no longer lines disconnected parts of an estate up on
a diagonal. Its deterministic seeding placed them that way, which wasted most
of the canvas and stacked service names on top of each other — so the first
thing anyone did was press Re-layout. It now lays out the same way a
re-layout does, and unconnected services inside a boundary get room for their
labels.