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

3 hours ago

What's new in chart-v0.17.1

One template changes and values.yaml gains one key. appVersion stays on 0.17.0, so no image moves and no pod rolls: this is a chart-only release, and it fixes a label collision between the ServiceMonitor and the daemon it scrapes.

The service label was being renamed

Prometheus Operator attaches its own target labels to every ServiceMonitor endpoint, one of them named service and taken from the Service name. With honor_labels off, which is the default, Prometheus renames a colliding label the target exposes:

exposed by the daemon   perf_sentinel_service_io_ops_total{service="checkout"}
stored by Prometheus    {service="<release fullname>", exported_service="checkout"}

The Grafana dashboard this repo ships reads that metric. Its Service variable offered the release name as its only value, and its per-service I/O panel collapsed every analysed service into a single line. Found on an install running the shipped chart, not in a lab.

The endpoint now sets honorLabels: true, through the new serviceMonitor.honorLabels key.

What it moves, and what it leaves alone

  • One metric. perf_sentinel_service_io_ops_total is the only series the daemon exposes carrying a service label of its own. Honor labels settles a collision rather than replacing anything, so every other metric still takes the operator's service from the target, and whatever routes or groups on that label is untouched.
  • There is no second collision. The daemon exposes no job, instance, namespace, pod, endpoint or container label, so the operator's own keep landing as before, and the namespace label comes from the scrape either way.
  • up is produced by the scrape, not by the daemon, so PerfSentinelDown reads exactly what it read in chart-v0.17.0. None of the five shipped alerts selects on service.

Upgrade impact

  • A query written against the broken shape stops matching. perf_sentinel_service_io_ops_total{service="<release fullname>"} comes back empty, with the real service names in its place. Grep your own panels and rules for it before upgrading.
  • Stored series are not rewritten. Samples scraped before the upgrade keep their exported_service and the first scrape after it is correct, so a dashboard opened on a long range shows both shapes until the old part of the range ages out.
  • No pod rolls. The image tag falls back to .Chart.AppVersion, still 0.17.0, so the pod spec and its checksum/config annotation are unchanged. The ServiceMonitor is the only object rewritten.
  • Reverting is one key. serviceMonitor.honorLabels: false puts the operator's labels back in front, and the previous behaviour with them.
  • A no-op without the operator. serviceMonitor.enabled: false renders no ServiceMonitor, so nothing in this release reaches that install.

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

Upgrade an existing release:

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

Read docs/HELM-DEPLOYMENT.md for the ServiceMonitor section, sizing and Ingress postures. The daemon image does not move on this release, so the v0.17.0 binary notes still describe what runs in 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.0...chart-v0.17.1

Don't miss a new perf-sentinel release

NewReleases is sending notifications on new releases.