What's new in chart-v0.25.2
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.25.1 rendered, same 5047 bytes and the same digest under the default values. appVersion moves to 0.25.2 and image.tag follows it to :0.25.2, which is the whole of this release: everything it ships is inside the daemon image.
What moves inside the pod
Outbound HTTP calls from a Spring Boot service traced through Micrometer Observation keep their method and status. Whether that service exports through spring-boot-starter-opentelemetry or through the Brave bridge of spring-boot-starter-zipkin, Micrometer tags each RestClient, RestTemplate and WebClient span with method and status rather than the OpenTelemetry names, and the daemon read every such call as a GET without a status. It now reads the two tags after both OpenTelemetry conventions, only on a span it already classified as an outbound call through its URL. A service on the OpenTelemetry agent or SDK keeps the values it had.
In the simulation lab, a Spring Boot 4.1.1 service traced through Micrometer alone sent one request fanning out 6 POST and 7 GET to /api/items/{id} straight to the daemon's OTLP receiver. The 0.25.1 daemon reported one n_plus_one_http finding on GET localhost/api/items/{id} with 13 occurrences, and the 0.25.2 daemon reported a POST finding of 6 and a GET finding of 7.
The v0.25.2 binary notes describe it, including the guard that keeps an RPC span's status out of the HTTP status.
Upgrade impact
- Pods roll on the image.
helm upgradereplaces them becauseappVersionandimage.tagmove together. - Acknowledgments on a Micrometer-traced service can stop matching. A finding on a call that is not a
GETnow names its real verb in its template, so its signature changes, and an ack recorded against the oldGETsignature, through/api/findings/{sig}/ackor the CI TOML baseline, no longer applies to it. AGETcall keeps its signature. perf_sentinel_findings_totalcan move for those services. APOSTand aGETto one URL no longer form one finding, so a finding they shared counts as two, or as one when a half falls below its detection threshold. TheFindings rate by typepanel and its neighbours on the example overview dashboard show it from the upgrade on.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.- No
values.yamlkey is added or removed, no template changes, and the shippedPrometheusRuleis untouched.
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.25.2Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.25.2Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures.
If you are upgrading from chart-v0.23.0 or earlier, read the chart-v0.24.0 notes first: that release raises the default workload.statefulset.persistence.size to 2Gi, which an existing StatefulSet does not pick up on its own. From chart-v0.18.0 or earlier, read the chart-v0.19.0 notes as well: 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, the chart-v0.17.0 notes change the shipped PrometheusRule.
Full Changelog: chart-v0.25.1...chart-v0.25.2