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

5 hours ago

What's new in chart-v0.18.0

No template changes and no values.yaml key is added or removed. appVersion moves to 0.18.0, so the image moves and pods roll, and the daemon that comes with it starts labelling two metrics by service. That is breaking for alerts written against them, and none of the alerts this chart ships is affected.

The daemon labels two metrics by service

perf_sentinel_findings_total gains a service label, and perf_sentinel_slow_duration_seconds gains one next to its existing type. A query that returned one series now returns one per service:

before   perf_sentinel_findings_total{severity="critical"}   1 series
after                                                        1 per service

Wrap it in sum() to keep the old shape, or set per_service_labels = false under [daemon] in config.toml, which leaves the label declared but empty on every series and PromQL treats that as absent.

Cardinality is capped per daemon run, 128 services on findings and 64 on the histogram, and a service past a cap folds into service="_other" rather than being dropped, so a sum over the label still equals the old unlabeled series.

serviceMonitor.honorLabels: true, shipped in 0.17.1, is what carries these labels through the operator's target relabeling. Without it Prometheus renames them to exported_service, the same collision that release fixed for perf_sentinel_service_io_ops_total.

What it moves, and what it leaves alone

  • No shipped alert changes. The PrometheusRule matches neither labeled metric, and none of the five rules selects on service.
  • New counters, no alert on them. The daemon exposes perf_sentinel_service_avoidable_io_ops_total{service} and perf_sentinel_service_analyzed_io_ops_total{service}, the per-service numerator and denominator of the I/O waste ratio, plus perf_sentinel_analysis_service_overflow_total and perf_sentinel_slow_duration_service_overflow_total, which count attributions folded into _other. None ships as an alert, for the same reason PerfSentinelServiceCardinalityOverflow was removed in chart-v0.17.0. All four ignore per_service_labels, per-service being their only shape.
  • The default config.toml gains six comment lines, naming sanitizer_aware_classification and the new sanitizer_aware_min_cv, both left commented out on their defaults. A jittery runtime such as PHP-FPM spreads repeats of one cached query past the 0.5 variance bar, which reports them as N+1 with a join hint where the fix is to memoize. The knob that settles it was reachable only from docs/CONFIGURATION.md.

Upgrade impact

  • Breaking for your own alerts and recording rules on the two labeled metrics if they do not aggregate. An unaggregated alert on perf_sentinel_findings_total now fires per service. Grep your rules before upgrading.
  • Pods roll. image.tag is empty by default and falls back to .Chart.AppVersion, now 0.18.0, so the pod spec changes. The checksum/config annotation moves too, since the default config.toml is not byte-identical.
  • An acknowledgment taken on a Zipkin or Jaeger finding with no service name must be re-taken. The daemon now resolves a missing service to unknown on every ingestion path, and the acknowledgment signature is keyed on it. Everything else keeps its signature.
  • Nothing here reaches an install without the operator. serviceMonitor.enabled: false renders no ServiceMonitor, and the label behavior above then depends on your own scrape configuration.

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.18.0

Upgrade an existing release:

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

Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures. The daemon image moves on this release, so the v0.18.0 binary notes describe what changes inside the pod.

If you are upgrading from chart-v0.16.0 or earlier, read the chart-v0.17.0 notes first: that release drops the shipped PrometheusRule from seven alerts to five and is breaking for prometheusRule.enabled: true.

Full Changelog: chart-v0.17.1...chart-v0.18.0

Don't miss a new perf-sentinel release

NewReleases is sending notifications on new releases.