github robintra/perf-sentinel chart-v0.25.2
perf-sentinel chart v0.25.2

6 hours ago

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 upgrade replaces them because appVersion and image.tag move together.
  • Acknowledgments on a Micrometer-traced service can stop matching. A finding on a call that is not a GET now names its real verb in its template, so its signature changes, and an ack recorded against the old GET signature, through /api/findings/{sig}/ack or the CI TOML baseline, no longer applies to it. A GET call keeps its signature.
  • perf_sentinel_findings_total can move for those services. A POST and a GET to 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. The Findings rate by type panel and its neighbours on the example overview dashboard show it from the upgrade on.
  • checksum/config moves too, and not because your configuration changed. The rendered perf-sentinel.toml is identical, but the ConfigMap carries helm.sh/chart and app.kubernetes.io/version labels that bump with the chart, so the checksum over it differs on every version bump.
  • No values.yaml key is added or removed, no template changes, and the shipped PrometheusRule is 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.2

Upgrade an existing release:

helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.25.2

Read 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

Don't miss a new perf-sentinel release

NewReleases is sending notifications on new releases.