Skip to content

feat(observability): add SWIFT networking user journey monitoring (ARO-25382) - #6359

Draft
ventifus wants to merge 1 commit into
Azure:mainfrom
ventifus:adenton/userjourney/ARO-25382-swift
Draft

feat(observability): add SWIFT networking user journey monitoring (ARO-25382)#6359
ventifus wants to merge 1 commit into
Azure:mainfrom
ventifus:adenton/userjourney/ARO-25382-swift

Conversation

@ventifus

@ventifus ventifus commented Jul 31, 2026

Copy link
Copy Markdown

https://redhat.atlassian.net/browse/ARO-25382

Note: docs/drafts/ contains working drafts of the SWIFT user journey runbook, TSG, and supporting design docs. They are included here for co-review with the observability code. After review they will be published to eng.ms/ADO and removed from this PR.

Summary

  • Add azure-cns.podmonitor.yaml to scrape CNS metrics from management cluster SWIFT pods (ARO-25919)
  • Add router:startup_latency:* recording rules measuring router pod ContainerCreating duration as the journey-level SWIFT SLI, using kube-state-metrics
  • Add userJourneySwiftLatencyP99{1h5m,6h30m,3d} multi-window multi-burn-rate alerts per ADR-001 (ARO-25978)
  • Add alerts-rp-hcps.yaml — first RP per-HCP alert lane in the repo, wired into rp-rules.bicep
  • Add run-rp-hcps Makefile target; run make alerts and make recording-rules to regenerate Bicep

Why

SWIFT networking provides the private network path between ARO HCP customer VNets and hosted control planes. When it fails, worker nodes go NotReady, webhooks break, and cert rotations fail against private Key Vaults. This change adds the observability layer required by the SWIFT user journey runbook:

  • CNS has always run on every management cluster worker node but was never scraped. Without the PodMonitor, the IP assignment SLIs have no data source.
  • Router pod startup latency is the authoritative SWIFT health signal — a pod stuck in ContainerCreating means SWIFT NIC assignment failed, directly causing customer connectivity loss. The recording rule uses kube-state-metrics, which already flows to the HCP Azure Monitor Workspace.
  • alerts-rp-hcps.yaml is the first RP per-HCP lane. The comment in rp-rules.bicep ("reserved for future ARO-RP-owned user journey alerts") anticipated exactly this addition.
  • Alert names use userJourneySwift* (full camelCase) per ADR-001 Section 3.

Test plan

  • make alerts and make recording-rules pass; all promtool tests green
  • CNS metrics (cx_pending_programming_ips_v2) confirmed flowing to the services-usw3aden AMW after deploying the PodMonitor in pers
  • KSM metrics from ocm-arohcppers-* namespaces confirmed routing to the HCP AMW (630 kube_pod_status_phase results from a provisioned HCP control plane)
  • arohcp_swift_networking_slo_recording_rules and arohcp_swift_networking_alerts rule groups confirmed deployed in pers
  • router:startup_latency:p99 live data validation — requires a fully SWIFT-provisioned HCP (PodNetwork/PNI configured). The pers cluster creation path does not set up SWIFT networking. Recording rule infrastructure and KSM routing are confirmed correct; end-to-end validation with live router pod data is a follow-up.

@openshift-ci

openshift-ci Bot commented Jul 31, 2026

Copy link
Copy Markdown

[APPROVALNOTIFIER] This PR is NOT APPROVED

This pull-request has been approved by: ventifus
Once this PR has been reviewed and has the lgtm label, please assign janboll 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

@openshift-ci

openshift-ci Bot commented Jul 31, 2026

Copy link
Copy Markdown

Hi @ventifus. Thanks for your PR.

I'm waiting for a Azure member to verify that this patch is reasonable to test. If it is, they should reply with /ok-to-test on its own line. Until that is done, I will not automatically test new commits in this PR, but the usual testing commands by org members will still work.

Tip

We noticed you've done this a few times! Consider joining the org to skip this step and gain /lgtm and other bot rights. We recommend asking approvers on your previous PRs to sponsor you.

Once the patch is verified, the new status will be reflected by the ok-to-test label.

I understand the commands that are listed here.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

…O-25382)

Add CNS PodMonitor, recording rules, multi-window multi-burn-rate alert
rules, and working draft documentation for the SWIFT networking user
journey (ARO-25382).

- Add azure-cns.podmonitor.yaml to scrape CNS metrics from management
  cluster SWIFT pods (ARO-25919)
- Add router:startup_latency:* recording rules measuring router pod
  startup latency as the journey-level SWIFT SLI, using kube-state-metrics
- Add userJourneySwiftLatencyP99{1h5m,6h30m,3d} alerts routing to the
  new RP per-HCP lane; slow-burn (3d) uses 6h window, name reflects burn
  rate (budget exhausts in ~3 days at this rate) (ARO-25978)
- Add alerts-rp-hcps.yaml — first RP per-HCP alert lane in the repo,
  wired into rp-rules.bicep and tooling/prometheus-rules/Makefile
- Add working draft docs in docs/drafts/ for co-review before publishing
  to eng.ms/ADO (runbook, TSG, SLI/SLO, dashboard, alerting design)

Alert naming follows ADR-001: userJourneySwift* (full camelCase).
Severity labels use numeric strings. runbook_url links to the runbook
per the alert-runbook-TSG chain.
@ventifus
ventifus force-pushed the adenton/userjourney/ARO-25382-swift branch from 6049995 to 98bedfc Compare July 31, 2026 22:48
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.

1 participant