Skip to content

feat: alert on node conntrack table saturation - #6190

Merged
openshift-merge-bot[bot] merged 1 commit into
Azure:mainfrom
roivaz:roivaz/conntrack-saturation-alert-1426
Jul 23, 2026
Merged

feat: alert on node conntrack table saturation#6190
openshift-merge-bot[bot] merged 1 commit into
Azure:mainfrom
roivaz:roivaz/conntrack-saturation-alert-1426

Conversation

@roivaz

@roivaz roivaz commented Jul 21, 2026

Copy link
Copy Markdown
Collaborator

Why

On DEV e2e-parallel management clusters, the single aks-system node hits Linux conntrack table exhaustion (nf_conntrack: table full, dropping packetConntrackFull), timing out kubelet/DNS/IMDS on that node and degrading node health (AROSLSRE-1426).

The follow-up ask on that issue: can we detect this before it bites in the future? Today it only surfaces after packets are already dropping (Kubernetes ConntrackFull events / kernel messages — a lagging symptom).

What

Add a leading-indicator alert, NodeConntrackTableSaturation, to the kube-node-rules group. It uses node-exporter's node_nf_conntrack_entries / node_nf_conntrack_entries_limit, which is already ingested into the services Azure Monitor Workspace (nodeexporter = true, empty keep-list, minimalingestionprofile = false) — no scrape/config change needed.

node_nf_conntrack_entries / node_nf_conntrack_entries_limit > 0.80   # for 10m, severity warning (IcM Sev 3)

Being ratio-based, it is pool-agnostic and auto-adapts to each node's nf_conntrack_max (= 32768 × vCPU), so it flags a saturating node (e.g. the small D4 system node) well before exhaustion, without noise from the larger userswft pool.

Changes

  • observability/alerts/kubeNode-prometheusRule.yaml — new alert
  • observability/alerts/kubeNode-prometheusRule_test.yaml — 3 promtool scenarios (fires >80%/10m; quiet when low; quiet on a <10m spike)
  • dev-infrastructure/modules/metrics/rules/generatedPrometheusAlertingRules.bicep — regenerated Azure Monitor rule group

Validation

make run-sl-services (in tooling/prometheus-rules) runs the promtool tests green and regenerates the bicep; make fmt-devinfra applied.

ConntrackFull (nf_conntrack table exhaustion) on DEV mgmt system nodes
(AROSLSRE-1426) was only detectable after packets were already dropping,
via kubelet/DNS/IMDS timeouts and kernel "table full" messages.

Add a leading-indicator PrometheusRule that fires before saturation using
node-exporter's node_nf_conntrack_entries / node_nf_conntrack_entries_limit
(already ingested into the services Azure Monitor Workspace). The alert is
ratio-based, so it is pool-agnostic and auto-adapts to each node's
nf_conntrack_max (= 32768 x vCPU): NodeConntrackTableSaturation fires at
>80% utilization sustained for 10m (severity warning / IcM Sev 3).

Includes promtool test scenarios and the regenerated Azure Monitor rule
group bicep.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@openshift-ci

openshift-ci Bot commented Jul 21, 2026

Copy link
Copy Markdown

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

@roivaz
roivaz marked this pull request as ready for review July 22, 2026 15:44
Copilot AI review requested due to automatic review settings July 22, 2026 15:44

Copilot AI 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.

Pull request overview

Adds a new leading-indicator node-exporter based alert to detect Linux conntrack table saturation early on management cluster nodes, along with promtool test coverage and regenerated Azure Monitor rule group output.

Changes:

  • Add NodeConntrackTableSaturation alert to kube-node-rules using node_nf_conntrack_entries / node_nf_conntrack_entries_limit.
  • Add promtool scenarios to validate firing/quiet behavior, including a <10m spike case.
  • Regenerate generatedPrometheusAlertingRules.bicep to include the new alert in the Azure Monitor Prometheus rule group.

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.

File Description
observability/alerts/kubeNode-prometheusRule.yaml Adds the new conntrack saturation alert rule.
observability/alerts/kubeNode-prometheusRule_test.yaml Adds promtool tests for the new alert behavior.
dev-infrastructure/modules/metrics/rules/generatedPrometheusAlertingRules.bicep Regenerates Azure Monitor Prometheus rule group output to include the new alert.

Comment thread observability/alerts/kubeNode-prometheusRule.yaml
Comment thread observability/alerts/kubeNode-prometheusRule.yaml
@roivaz

roivaz commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator Author

/retest

2 similar comments
@roivaz

roivaz commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator Author

/retest

@roivaz

roivaz commented Jul 23, 2026

Copy link
Copy Markdown
Collaborator Author

/retest

@raelga raelga left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

/lgtm
/approve

@openshift-ci

openshift-ci Bot commented Jul 23, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is APPROVED

This pull-request has been approved by: raelga, roivaz

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

The pull request process is described 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

@openshift-merge-bot
openshift-merge-bot Bot merged commit dbfc3a1 into Azure:main Jul 23, 2026
19 checks passed
@roivaz
roivaz deleted the roivaz/conntrack-saturation-alert-1426 branch July 23, 2026 19:22
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants