signals_collection_cycles_total (and the sibling collection metrics) are registered with labels []string{"target", "status"} only (internal/metrics/metrics.go:58). There is no signals_instance label on any metric.
Downstream, the multi-instance Grafana dashboard (timeseries-demo observability/grafana/dashboards/signals-multi-instance.json) has a mandatory template variable label_values(signals_collection_cycles_total, signals_instance) and every panel filters {signals_instance=~"$signals_instance"}. Because the label doesn't exist, the variable is empty and every panel shows "No Data" — regardless of scrape health. This has recurred across demos.
Signals already has an instance_id (DB meta / export metadata) — it just isn't attached to the Prometheus metrics.
Ask: attach a stable signals_instance label (from instance_id, or a configurable instance name) to the exposed metrics — as a registry ConstLabel or per-metric label — so multi-instance dashboards can group/filter by instance. Add a metrics test asserting the label is present.
Until this ships, the demo injects signals_instance as a static Prometheus scrape label as a workaround (timeseries-demo #419).
signals_collection_cycles_total(and the sibling collection metrics) are registered with labels[]string{"target", "status"}only (internal/metrics/metrics.go:58). There is nosignals_instancelabel on any metric.Downstream, the multi-instance Grafana dashboard (timeseries-demo
observability/grafana/dashboards/signals-multi-instance.json) has a mandatory template variablelabel_values(signals_collection_cycles_total, signals_instance)and every panel filters{signals_instance=~"$signals_instance"}. Because the label doesn't exist, the variable is empty and every panel shows "No Data" — regardless of scrape health. This has recurred across demos.Signals already has an
instance_id(DB meta / export metadata) — it just isn't attached to the Prometheus metrics.Ask: attach a stable
signals_instancelabel (frominstance_id, or a configurable instance name) to the exposed metrics — as a registry ConstLabel or per-metric label — so multi-instance dashboards can group/filter by instance. Add a metrics test asserting the label is present.Until this ships, the demo injects
signals_instanceas a static Prometheus scrape label as a workaround (timeseries-demo #419).