Skip to content

The dashboard

One tab each for health, live charts, run history, traces, meters, properties, migrations, loggers and schedules.

Open the dashboard

Open /peekaboot under your servlet context path, for example http://localhost:8080/peekaboot. It redirects to /peekaboot/ui/dashboard/index.html. The landing tab is Overview.

The dashboard exists when all of these hold:

You do not need to expose anything on /actuator/**. The dashboard works with no management.endpoints.web.exposure setting, and management.endpoint.health.show-details does not hide health components from it.

The dashboard shows your configuration and environment. Read Security and Do I want this in production? before you turn it on anywhere but your own machine.

The header

The strip above the tabs is the same on every tab.

Timezone, language and theme are remembered per browser. The Environment and Config tabs’ Show secrets toggle is not: a reload always starts masked.

The URL hash holds the tab, the open trace and the filters. Copy the address bar to share a view.

Filters travel as a query string:

View Query string
Traces bucket, type, op (#traces?bucket=errors). Without type the list shows every type except Connection Pool; selecting that chip writes type=CONNECTION_POOL
Meters, Environment, Config q, the text filter (#config?q=datasource)
Loggers q plus the configured-only checkbox (#loggers?q=peekaboot&configured=1)
Insights level, the percentiles and restarts toggles, and panels for per-panel level overrides
Lifecycle page
An open trace’s Logs page q, level and span (#traces/<traceId>/logs?level=WARN&q=timeout)

An invalid bucket, level or page in a link falls back to the default. Theme, language and timezone are never part of a link.

Overview

The Overview tab, showing Build, Git, Spring, Java, System, JVM Defaults and Datasource cards, plus memory meters and a health banner

Overview shows the application’s health and what is running. It holds the health banner with its per-component breakdown, build and Git metadata, Spring Boot and Java versions, OS and JVM defaults, datasource status, and memory and storage meters. A composite health contributor, such as Spring’s db with two DataSources, shows as one row with its aggregate status, followed by its children as db/<name>.

The Machine card shows the logical CPU count (with the CPU model on Linux), total physical memory, the JVM’s max heap, the machine’s IPv4 and IPv6 addresses with their hostnames where these resolve, and the container runtime: docker, podman, kubernetes, container or none. Inside a container, CPU and memory show the container’s limits.

Stat tiles

The row at the top shows Started at, Startup, Ready after and Uptime. Each tile shows a current value only, with no history. Uptime updates on every refresh. The other three keep their first value.

The tiles are defined in the Insights panel file, so you can replace them or add your own there. See Insights, tile fields. The row is hidden when Insights is off or has no MeterRegistry.

Insights

The Insights tab, live line charts of CPU usage and system load with an aggregation level switch and toggles for percentiles and restart markers

Insights shows live charts of CPU, memory, threads, HTTP, the connection pool and more, over the last minutes, hours or days. Insights covers the default panels, adding your own, the memory cost and the limits of the percentiles.

Lifecycle

The Lifecycle tab, a table of application runs newest first with start, duration, stop, downtime and build columns, showing Running, Unclean exit and Deployment badges

Lifecycle lists every run of the application, newest first, 20 to a page.

Column What it shows
Started When the application became ready. The current run carries a Running badge
Ran for How long it ran, with a still counting badge on the current run
Stopped When it shut down. A kill -9, a crash or a power loss records no stop, so the cell shows a dash and an Unclean exit badge
Down before The gap between the previous run’s stop and this run’s start
Build The version, with branch @ commit beneath it and the build time on hover. A Deployment badge names which of the three changed since the previous run

A dash means the value is unknown. A run with no recorded stop has no duration, and a run after an unclean exit has no downtime.

History across restarts needs peekaboot.storage.enabled, on by default for a local run. Without it the tab shows the current run only. With peekaboot.lifecycle.enabled: false the tab shows “Lifecycle history is unavailable”.

Traces

The Traces tab, a bucketed list of recent traces with duration, status and query count, filterable by root action type

Traces lists recent requests, jobs and messages in three buckets: All, Errors and Slow. You can filter by root action type and root operation. The list shows the 50 newest matches, so a bucket’s count can be higher than the rows under it.

Click a row to open the trace detail with its spans, queries, logs and the HTTP exchange. Background work started from a trace gets its own row. When the trace it ran under is still stored, the row has a View the trace this ran under link. Traces explains buckets, badges, root action types and background work.

Meters

The Meters tab, a filterable list of Micrometer meters, each with its type, unit and measurement count

Meters lists every meter in the Micrometer MeterRegistry with its current measurements, filterable by name or tag. A meter name from this list is what you put in a panel file series to chart it on Insights.

Environment

The Environment tab with a property source expanded, its values shown in full except spring.datasource.password, rendered as ******, with a Show secrets toggle above the list
Masked by default.

Environment lists every property source Spring resolved, in resolution order, with its raw keys and values. Command-line arguments, OS environment, system properties, application.yml and Peekaboot’s own defaults all appear here. The active profiles are shown above the list. Use it to find which source wins for a key.

The same property source after clicking Show secrets: spring.datasource.password now rendered as sample_app_db_pwd instead of ******
Revealed, after peekaboot.enable-unmasking is on and Show secrets is clicked. See Security: masking for the two opt-ins and why this particular value is safe to publish.

Flyway

The Flyway tab, one row per migration: version, description, script, type, duration, installed time and status

Flyway shows one row per migration: version, description, script, type, duration, install time and status.

Loggers

The Loggers tab, packages grouped and expandable, each logger showing its effective level, with a filter for configured-only loggers

Loggers shows each logger’s effective and configured level, grouped by package. You can filter by name and show only loggers with an explicit level. The tab is read-only. It cannot change a level.

Config

The Config tab with the spring.datasource group expanded, its password rendered as ****** alongside real values for the other properties, with a Show secrets toggle above the list

Config shows the values bound to @ConfigurationProperties beans, grouped by prefix. Nested values get one row each under their full dotted key, such as registration.google.client-secret, and list entries are indexed as servers[0]. The filter matches these keys and their values.

Environment vs Config

A property in application.yml that feeds a @ConfigurationProperties bean appears in both. Code defaults appear only under Config. Unused or overridden values appear only under Environment. @Value injections are not in Config; look them up under Environment.

Both tabs mask sensitive values by key name and by value shape. Your management.endpoint.*.show-values settings do not affect this. The rules are under what gets masked and how.

The Show secrets toggle appears on both tabs when peekaboot.enable-unmasking is on. It reveals real values on both tabs at once and resets on reload.

Masking is not exhaustive. See Security, masking for what is covered and what is not.

Scheduled Tasks

The Scheduled Tasks tab, grouped into Cron Tasks, Fixed Delay Tasks and Fixed Rate Tasks, each expandable, with summary counts above

Scheduled Tasks lists @Scheduled methods grouped by type: cron, fixed delay and fixed rate. Each group expands to its tasks. Cron expressions come with a description in the dashboard’s language.

Which tabs appear

Overview, Lifecycle and Environment always appear. The others depend on your application:

Tab Shown when Property
Insights A Micrometer MeterRegistry bean exists peekaboot.insights.enabled
Traces The trace store exists. It stays empty without the OpenTelemetry SDK on the classpath peekaboot.tracing.enabled
Meters A Micrometer MeterRegistry bean exists none
Flyway At least one Flyway migration exists none
Loggers Logger data is available none
Config At least one @ConfigurationProperties group exists none
Scheduled Tasks At least one scheduled task exists none

Spring Boot Actuator provides the MeterRegistry. See Quick start for the dependencies.

Settings

Property Default Effect
peekaboot.enabled on for a local run Turns the dashboard and its API on. Every other switch needs it
peekaboot.insights.enabled true The Insights tab and the Overview stat tiles
peekaboot.tracing.enabled true The Traces tab
peekaboot.lifecycle.enabled true The run history on the Lifecycle tab
peekaboot.storage.enabled on for a local run Lifecycle and Insights history across restarts
peekaboot.enable-unmasking false The Show secrets toggle on Environment and Config
peekaboot.ui.tracing.* 100, 500, 50 ms The thresholds for the SLOW, VERY_SLOW and SLOW_QUERY badges on Traces

All properties are listed under Configuration.