Skip to content

feat: Tempo 3, Access-gated Grafana, and a logs dashboard#7

Merged
simonvanlierde merged 11 commits into
mainfrom
feat/tempo3-access-dashboards
Jul 5, 2026
Merged

feat: Tempo 3, Access-gated Grafana, and a logs dashboard#7
simonvanlierde merged 11 commits into
mainfrom
feat/tempo3-access-dashboards

Conversation

@simonvanlierde

Copy link
Copy Markdown
Contributor

Builds on the reliability work: completes the one deferred upgrade, closes the last open door on the public edge, and adds the dashboard the stack was missing.

  • Tempo upgraded to 3.0. The earlier routine bump crash-looped because 3.0 is a re-architecture; this migrates the config properly (removed ingester/compactor blocks, retention moved under overrides) following the official monolithic guide. Verified in place: existing trace data read fine, traces stayed queryable, RED metrics kept flowing.
  • Cloudflare Access in front of Grafana. The public Grafana hostname now sits behind an email one-time-PIN at the edge, managed in infra/ alongside the tunnel and DNS. The OTLP endpoint stays outside Access, machines authenticate with the bearer token instead.
  • Logs Overview dashboard: log volume by service and level, an error feed, and a live tail for everything arriving over OTLP. Stack Health also gains an Active Alerts table and becomes Grafana's home page, so operators land on stack state instead of a blank welcome screen.
  • Added infra/terraform.tfvars.example so the infra inputs are as discoverable as .env.example.
  • Demo housekeeping — switched to uv + Python 3.14 with a pyproject.toml (Dependabot watches it), image verified to build and boot.

Everything was checked against the running stack, not just in config. just check and just infra-validate pass.

Per the official monolithic migration: ingester and compactor blocks
removed (live-store/backend-worker handle both), local-blocks processor
dropped, traces_storage removed; block retention (7d) moves under
overrides.defaults.compaction. Boot-tested standalone, then verified in
place against the live stack: existing 2.x blocks readable, traces
queryable, span metrics regenerating. Dependabot's Tempo major-version
ignore is removed now the migration is done.
Email one-time-PIN at the edge for the public Grafana hostname, allowed
addresses via the grafana_allowed_emails variable. The OTLP hostname
stays outside Access — machines authenticate with the bearer token.
Validated against the provider v5 schema.
Logs Overview covers the OTLP log path (volume by service and level,
error tail, live tail — verified against live data); Stack Health gains
an Active Alerts table (Watchdog excluded, it fires by design) and
becomes Grafana's home dashboard so operators land on stack state
instead of the welcome page.
The .env.example equivalent for infra/: the four input variables
(account_id, zone_id, domain, grafana_allowed_emails) with a note that
the API token comes from CLOUDFLARE_API_TOKEN, not tfvars. Un-ignore
*.tfvars.example so it's tracked while real tfvars stay ignored.
Defines jargon on first use (OTLP, RED, exemplars, cardinality, dead
man's switch), breaks up dense sentences, and keeps the technical detail.
No factual changes.
pyproject.toml replaces requirements.txt (Dependabot's pip ecosystem
reads it too), the image builds on the uv base, and the container was
verified to build and start. CHANGELOG's Unreleased section becomes
0.2.0 ahead of tagging.
@simonvanlierde
simonvanlierde merged commit d0ccf7a into main Jul 5, 2026
4 checks passed
@simonvanlierde
simonvanlierde deleted the feat/tempo3-access-dashboards branch July 5, 2026 17:33
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant