kubernetes-sigs / kubernetes-sigs/node-readiness-controller

[TRACKING] Update Existing Metrics

Open
#446 1 comment 0 reactions 1 assignee View on GitHub

@rawadhossain is already working on this.

Since Aug 24, 2026.

area/community-meeting
Dominant language
Go
Stars
164
Forks
75
Avg merge
8d 23h
Merged PRs (30d)
13

Description

Summary / Objective

Per the observability design doc #344

Some existing controller metrics need to be renamed, reshaped, or removed to align with the new per-rule metrics. This issue tracks that work.

Rollout plan
  • Apply each rename/reshape/deletion separately.
  • Keep the old metric running unchanged and add a deprecation note in docs/book/src/operations/monitoring.md pointing to the replacement.
  • Publish the replacement in the same release.
  • Drop the old metric only after the new one reaches beta (v1beta1)
Checklist / Sub-tasks
  • node_readiness_evaluation_duration_seconds - #447
  • node_readiness_rules - #448
  • node_readiness_enforcement_latency_seconds - #450
  • node_readiness_bootstrap_hold_duration_seconds - #294
  • node_readiness_blocked_nodes - #431
  • node_readiness_rule_nodes - #398
Design Documents & References

Ref. Observability design doc

Evaluation of existing metrics
Existing metric Decision Target metric and migration plan
node_readiness_taint_operations_total Keep Retain as-is (rule, operation).
node_readiness_bootstrap_completed_total Keep Retain as-is (rule).
node_readiness_evaluation_duration_seconds Reshape Keep rule label; update help string to clarify it includes taint API calls.
node_readiness_failures_total Reshape Migrate reason values to standard snake_case strings (refer Failure reasons).
node_readiness_rules_total Rename and reshape Migrate to node_readiness_rules{enforcement_mode, dry_run} gauge. Drop _total suffix from gauge.
node_readiness_nodes_by_state Rename and reshape Replace status-derived gauge with an always-on scrape-time collector `node_readiness_rule_nodes{rule, state="held"
node_readiness_bootstrap_duration_seconds Rename and reshape Migrate into node_readiness_bootstrap_hold_duration_seconds{rule, taint_origin="adopted"} histogram.
node_readiness_reconciliation_latency_seconds Rename and reshape Rename to node_readiness_enforcement_latency_seconds to prevent collision with controller-runtime reconcile metrics. Normalize operation values to add and remove.
node_readiness_condition_failures_total Delete Replace state-as-counter metric with the node_readiness_blocked_nodes gauge.
node_readiness_rule_last_reconciliation_timestamp_seconds Delete Remove timestamp gauge. Unchanged rules are still actively enforced under GenerationChangedPredicate without resyncs.

We apply all metric renames, label changes, and deletions in one breaking release and document them. We deprecate and dual-publish old and new metric shapes during alpha, and drop the old shapes when graduating to beta.

Target Milestone / Release

No response

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.