v0.1.0
The first tagged release: the wedge. A fresh Kubernetes cluster reaches a
live service map in under five minutes with zero app changes — and that
promise is enforced as a CI gate. All four v0.1 signal tiers ship: traces
(Full), logs (Basic), continuous profiling (Lite) and infra metrics
(Supporting), plus the OTLP drop-in migration path.
Added
- Sensor DaemonSet (
sensor.enabled=true): per-node zero-code collection —
OBI (otel/ebpf-instrument, eBPF traces + RED for every HTTP/gRPC service),
a node collector (zero-config stdout/stderr logs with workload-derived
service names; kubeletstats node/pod metrics), and an opt-in OTel eBPF
profiler container (continuous CPU profiles at ~20 Hz). Kernel preflight
(≥5.8 + BTF) warns
loudly but never blocks; every container has its own switch. - Trace explorer: search with tag/order/duration/status filters, latency ×
time heatmap, per-operation RED overview, split workspace, span panel, six
trace views (timeline, spans, flamegraph, statistics, graph, JSON) and
structural trace diff; service map with call edges derived from spans. - Trace inspect, SkyWalking-style: resizable/expandable span detail with
copyable attributes, per-span tree view, derived span status and component
detection, service perspective from inside a trace (focus dimming,
participant-filtered drill-down), span-id lookup, service/operation filter
autocomplete, and a trace list groupable by service. - Services inventory: sortable RED table with drill-down to traces.
- RED metrics dashboard: bucketed rate/errors/latency charts per service
(GET /api/v1/metrics/red). - Node & pod health: latest utilization + trend sparklines and busiest
pods (GET /api/v1/infra/nodes,GET /api/v1/infra/pods), backed by the
five frozenotel_metrics_*ClickHouse tables (migration0003). - Continuous profiling (experimental, opt-in via
sensor.profiler.enabled=true— the upstream alpha loader hard-fails on
some kernels): Coroot-style stack-dedup schema (migration0004), OTLP
profiles ingest atPOST /v1development/profilesisolated behind
hub/internal/storage/profilesadapter(the alpha wire format never leaks
past it), flame-graph API (GET /api/v1/profiles/*) and a click-to-zoom
icicle UI. - Logs explorer: full-text search, severity/service filters,
trace_id
correlation. - System Status: component health, per-signal storage/retention/freshness
(now including metrics and profiles), disk usage. - Gateway distro: minimal OTel Collector built with OCB from
gateway/ocb-manifest.yaml(published asavuru-obs-gateway); the stock
contrib image remains a drop-in override. - The wedge gate:
make e2e-helmruns kind + Helm + a deliberately
uninstrumented demo app and asserts the zero-code service map (edges
included) within 300 seconds, plus infra metrics on the same clock — wired
into CI. - Per-signal retention knobs applied as ClickHouse TTLs by
hub migrate:
retention.{traces,logs,metrics,profiles}. - Per-project model (Coroot-style): config-defined projects
(projectschart value /AVURUOPS_PROJECTS) merged with tenants
auto-discovered from data (GET /api/v1/projects); per-environment ingest
tagging viagateway.tenant(stampsavuru.tenant, plus the profiler's
ingest header); UI project switcher in the sidebar with shareable
?project=links and project-scoped caches. - Collection controls: deactivate collection per signal, per namespace
(sensor.collection.excludeNamespaces), per pod (label
avuru.obs/instrument=false), or per node (label
avuru.obs/collect=false, instant — no upgrade). Full matrix in
deploy/helm/README.md. - Agent inventory:
GET /api/v1/agents+ Settings → Collection show
per-node sensor freshness per signal ("N nodes reporting"). - Sensor "do no harm" hardening: CPU limits on all sensor containers,
opt-in negativePriorityClass(on by default in the prod/staging
overlays), and a diagnostics runbook + evidence script
(docs/runbooks/app-probe-failures.md,tools/diagnose/sensor-impact.sh)
for app pods failing probes after install. - Settings screen restructured into General / Collection / Status tabs with
shareable?tab=state. - Chart render test suite (
make helm-check) and an e2e-helm regression gate
asserting pre-existing app pods stay healthy after the chart installs. - Open-source governance layer:
GOVERNANCE.md,CODE_OF_CONDUCT.md,
MAINTAINERS.md, and.github/CODEOWNERS. - Release process:
RELEASING.md,RELEASE-CHECKLIST.md, this changelog,
ROADMAP.md, a rootVERSIONfile, and arelease.ymlworkflow. - Contributor onboarding: expanded
README.md, per-component READMEs
(agent/,hub/,ui/), Avuru Enhancement Proposal (AEP) process in
design/, issue templates, andCOMMIT-SIGNING-SETUP.md.
Changed
- The Helm chart deploys the full stack: hub (API) + UI (nginx) deployables,
gateway, ClickHouse (or BYO), the migrate hook — and now the sensor
DaemonSet. - Default collection scope:
kube-system,kube-node-lease, and
kube-publicare no longer collected by default (traces, logs, pod
metrics). Setsensor.collection.excludeNamespaces: []to restore the old
behavior; node-level metrics are unaffected. - Adopted a Kiali-style trunk branch model:
mainis the single development
trunk, withvX.Yrelease branches andvX.Y.Ztags (retireddevelop). - Commit signing is now required (see
COMMIT-SIGNING-SETUP.md).
Deferred to v0.2
- The custom Rust eBPF L4 flow tracer and its flows schema (
0005), the
hub's OpAMP server + configuration UI, auth/OIDC (the enterprise seam —
tenant column, provider interface, retention objects — ships in v0.1), and
proto/buf codegen.