perf-sentinel chart v0.18.0
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
PrometheusRulematches neither labeled metric, and none of the five rules selects onservice. - New counters, no alert on them. The daemon exposes
perf_sentinel_service_avoidable_io_ops_total{service}andperf_sentinel_service_analyzed_io_ops_total{service}, the per-service numerator and denominator of the I/O waste ratio, plusperf_sentinel_analysis_service_overflow_totalandperf_sentinel_slow_duration_service_overflow_total, which count attributions folded into_other. None ships as an alert, for the same reasonPerfSentinelServiceCardinalityOverflowwas removed inchart-v0.17.0. All four ignoreper_service_labels, per-service being their only shape. - The default
config.tomlgains six comment lines, namingsanitizer_aware_classificationand the newsanitizer_aware_min_cv, both left commented out on their defaults. A jittery runtime such as PHP-FPM spreads repeats of one cached query past the0.5variance 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 fromdocs/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_totalnow fires per service. Grep your rules before upgrading. - Pods roll.
image.tagis empty by default and falls back to.Chart.AppVersion, now0.18.0, so the pod spec changes. Thechecksum/configannotation moves too, since the defaultconfig.tomlis 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
unknownon 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: falserenders 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.0Upgrade an existing release:
helm upgrade perf-sentinel oci://ghcr.io/robintra/charts/perf-sentinel --version 0.18.0Read 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