Skip to content

v0.8.0

Choose a tag to compare

@github-actions github-actions released this 24 Aug 19:09
· 47 commits to main since this release
v0.8.0
4f14980

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.