What's new in chart-v0.23.0
A metadata-only bump. No template changes, no values.yaml key added or removed, and the rendered perf-sentinel.toml is byte-for-byte what chart-v0.22.2 rendered, same 5047 bytes and the same digest. appVersion moves to 0.23.0 and image.tag follows it to :0.23.0, which is the whole of this release: everything it ships is inside the daemon image.
What moves inside the pod
The daemon now counts slow templates across analysis batches. A template slow in slow_query_min_occurrences separate episodes within [detection] slow_query_window_minutes, 15 by default, yields a slow_* finding with the same signature a batch run would give it, where it used to stay in the duration histogram because no single batch held three of its spans. The chart does not set the key, so the window is on in every release that upgrades. A new counter, perf_sentinel_slow_window_keys_refused_total, counts the slow spans refused past the cap of 1024 tracked templates.
Cross-trace correlation pairs findings on their own timestamps instead of the analysis tick that produced them, so median_lag_ms is no longer always 0 and the earlier finding is the source. Confidence is no longer inflated by a source that has left the window, and pairing memory no longer grows with window_minutes. GET /api/correlations gains source_sample_trace_id, the trace of the source side of a pair.
Terminal output shows times in the local time zone. Under Helm that only shows when you run the binary through kubectl exec, and there the FROM scratch image, which ships no time zone database, now resolves a named TZ against a database embedded in the binary instead of printing UTC. The daemon API and every machine format stay in UTC.
The v0.23.0 binary notes describe all of it.
Upgrade impact
- Pods roll on the image.
helm upgradereplaces them becauseappVersionandimage.tagmove together. - Expect new
slow_*findings, and the alerts built on them. The window is on by default and nothing invalues.yamlturns it off. Addslow_query_window_minutes = 0to the[detection]section ofconfig.tomlin your values to keep the 0.22.2 behavior. - Correlation stays off unless you turned it on. The
[daemon.correlation]block ofvalues.yamlis still commented out. Where you enabled it, fewer pairs clearmin_confidence, a pair can swap itssourceandtarget, and awindow_minutesoutside 1 to 10080 now stops the daemon at config load and leaves the pod inCrashLoopBackOff. The commented example,window_minutes = 10, is inside that range. checksum/configmoves too, and not because your configuration changed. The renderedperf-sentinel.tomlis identical, but the ConfigMap carrieshelm.sh/chartandapp.kubernetes.io/versionlabels that bump with the chart, so the checksum over it differs on every version bump. Nothing in the daemon's configuration is re-read differently.- No
values.yamlkey is added or removed, no template changes, and the shippedPrometheusRuleis untouched. - The two example Grafana dashboards moved, and they do not ship here. The overview goes to
version10 and the findings one toversion9: times in the viewer's browser time zone, aFinding typevariable on the findings table, andSource traceandTarget tracecolumns on theCorrelationstable. Re-import them wherever you provision them.
Install
The chart is published as an OCI artifact on GHCR, install it directly with no helm repo add step:
helm install perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.23.0Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.23.0Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures.
If you are upgrading from chart-v0.18.0 or earlier, read the chart-v0.19.0 notes first: that release adds a grouping label to five metrics and is breaking for an unaggregated alert on any of them. From chart-v0.16.0 or earlier, read the chart-v0.17.0 notes as well, which change the shipped PrometheusRule.
Full Changelog: chart-v0.22.2...chart-v0.23.0