Skip to content

feat: add Controller Internals Grafana dashboard - #460

Open
rawadhossain wants to merge 1 commit into
kubernetes-sigs:mainfrom
rawadhossain:dashboard/controller-internals
Open

feat: add Controller Internals Grafana dashboard#460
rawadhossain wants to merge 1 commit into
kubernetes-sigs:mainfrom
rawadhossain:dashboard/controller-internals

Conversation

@rawadhossain

Copy link
Copy Markdown
Member

Description

This PR adds the Controller Internals section, fifth of five planned dashboard sections for node-readiness-controller.

Questions it answers:

  • Is the controller up and reachable?
  • Is it keeping up with incoming reconcile work?
  • Are workqueues building up or taking too long to process?
  • Are reconciliations failing?
  • Which controller version is currently running?

Most of these panels use metrics from controller-runtime and kube-state-metrics.

Panels in this Section

  • Controller Up - controller availability.
  • Workqueue Depth - queued reconcile work per controller.
  • Workqueue Latency (p99) - p99 time items spend waiting in the queue.
  • Reconcile Errors - failed reconcile attempts per second.
  • Bootstrap Completions - total bootstrap completions since the controller started.
  • Build Info - deployed version and pod identity.

Screenshot

Screenshot 2026-09-01 191801

Video demo

Section.5.mp4

Related to Issue #459

Type of Change

/kind feature

Testing

  • Verified all panels render correctly against live data in a kind + kwok test cluster
  • Confirmed the setup is reproducible from a clean cluster

@kubernetes-prow kubernetes-prow Bot added the kind/feature Categorizes issue or PR as related to a new feature. label Sep 1, 2026
@netlify

netlify Bot commented Sep 1, 2026

Copy link
Copy Markdown

Deploy Preview for node-readiness-controller canceled.

Name Link
🔨 Latest commit 9dcb599
🔍 Latest deploy log https://app.netlify.com/projects/node-readiness-controller/deploys/6a9fc8afc77dd0000832cae1

@kubernetes-prow

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: rawadhossain
Once this PR has been reviewed and has the lgtm label, please assign mrunalp for approval. For more information see the Code Review Process.

The full list of commands accepted by this bot can be found here.

Details Needs approval from an approver in each of these files:

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

@kubernetes-prow kubernetes-prow Bot added cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 1, 2026
@rawadhossain rawadhossain mentioned this pull request Sep 1, 2026
5 tasks
@rawadhossain

Copy link
Copy Markdown
Member Author

/cc @AvineshTripathi

@AvineshTripathi AvineshTripathi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initial look! I will need some time here to understand. Too many variables here!

"type": "prometheus",
"uid": "${datasource}"
},
"expr": "min(up{job=\"nrr-metrics-service\"})",

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

my bad, that was for my local testing. Forgot to change it.
Fixed it. Should be fine now.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we would need a text box for this or dropdown to select job?

Signed-off-by: Rawad Hossain <rawad.hossain00@gmail.com>
@rawadhossain
rawadhossain force-pushed the dashboard/controller-internals branch from ae4a67c to 9dcb599 Compare September 8, 2026 08:34
@kubernetes-prow kubernetes-prow Bot added size/XL Denotes a PR that changes 500-999 lines, ignoring generated files. and removed size/L Denotes a PR that changes 100-499 lines, ignoring generated files. labels Sep 8, 2026
@rawadhossain

rawadhossain commented Sep 8, 2026

Copy link
Copy Markdown
Member Author

Hey @AvineshTripathi, here's a quick breakdown so its easier to skim.

{
  "id": 10,                    → unique panel id, ignore it
  "type": "timeseries",          → line graph (vs "stat" = big number, "table" = table)
  "title": "Workqueue Depth",
  "gridPos": {...},               → x/y position + size on the grid, just layout
  
  "targets": [
    { "expr": "sum by (controller) (workqueue_depth{job=\"$job\"})" }
  ],                 → the actual PromQL query — this is the only line that defines what the panel shows
 
 "fieldConfig": {
    "defaults": {
      "unit": "short",              → how the number's displayed
      "min": 0, "max": 1200,   → axis bounds
      "thresholds": {
        "steps": [            → color bands, kicks in once value crosses these
          green → null (default),
          yellow → 500,
          red → 1000
        ]
      }                        
    },
  
  "overrides": [
      "node" line → solid,
      "nodereadiness-controller" line → dashed
    ]               → per-series exceptions, so the two lines are visually distinguishable even if same color
  },
  "options": {...}        → position, tooltip behavior, cosmetic only
}

so overall, it's just: one query per panel, wrapped in a bit of formatting (colors, units, layout) that repeats the same way across all of them.

@AvineshTripathi AvineshTripathi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

am not an expert in this but it LGTM

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cncf-cla: yes Indicates the PR's author has signed the CNCF CLA. kind/feature Categorizes issue or PR as related to a new feature. size/XL Denotes a PR that changes 500-999 lines, ignoring generated files.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants