Changes for version 0.05 - 2026-08-30
- Fixes: a cached panel is no longer partial - the caller's row budget reaches every chunk
- Fixes: a chunk that truncated is never stored, and entries from before this are retired
- Adds: the settled chunks are warmed in the background, off the request path
- Adds: a cold chunk is computed once across the pool, not once per worker
- Adds: punk-observe-warm, one warm pass by hand
- Adds: the log volume, ingest and metrics charts use the chunk cache too
- Adds: the health page reads through the chunk cache - 7.5s to 0.9s over 7d
- Fixes: the arriving, volume and health charts ask for no row ceiling, so a busy chunk is cached instead of rescanned every poll
- Fixes: the chunked path reports degraded and scanned_bytes like the plain one
Modules
an OpenTelemetry observability and logging backend
rule evaluation, and the two states everybody forgets
where the configuration lives
configuration in PostgreSQL
the default configuration store
the settled part of a window, computed once
reading and writing what the screens are configured with
a panel is an OQL string with a title
OTLP protobuf, read as records
the alert evaluation pass, and its delivery
planning and running a query
aggregated self-time across traces
poll the services being observed
the OTLP receiver
ingest keys
three limits, failing three different ways
the log tail, and what it admits losing
compressed log blocks and the trigram filter
laying out the service graph
compressed metric chunks
query results as chart figures
one query language over traces, metrics and logs
compaction, rollups and deletion
grouping, silences, and the outbox key
chart primitives
what a query can decide without reading
one segment carrying all three signals
immutable segments, series ids and the symbol table
sealing, and the read path over what is sealed
where a webhook is allowed to point
the tenant seam, kept honest
spans, trace assembly and the service graph
the screens, and what they are given to render
the write-ahead log
the settled chunks, computed where nobody is waiting
mount Punk::Observe in a Punk application
Examples
- example/README.md
- example/bin/demo
- example/bin/traffic
- example/cards/app.psgi
- example/cards/config/punk.yml
- example/cards/lib/Demo/Cards.pm
- example/cards/lib/Demo/Cards/Controller/Api.pm
- example/cards/root/static/style.css
- example/cards/root/templates/layout.tmpl
- example/observe/app.psgi
- example/observe/config/punk.yml
- example/observe/lib/Demo/DB.pm
- example/observe/lib/Demo/Observe.pm
- example/observe/root/static/style.css
- example/observe/root/templates/layout.tmpl
- example/observe/root/templates/welcome.tmpl
- example/shop/app.psgi
- example/shop/config/punk.yml
- example/shop/lib/Demo/Shop.pm
- example/shop/lib/Demo/Shop/Controller/Web/Shop.pm
- example/shop/root/static/style.css
- example/shop/root/templates/cart.tmpl
- example/shop/root/templates/layout.tmpl
- example/shop/root/templates/product.tmpl
- example/shop/root/templates/welcome.tmpl