Context
Add a Metrics tab to the DNSPolicy details page showing DNS record health and provider metrics using embedded Perses panels. This answers: "Are my DNS records healthy? Are DNS provider operations succeeding?"
Depends on the shared Perses infrastructure established in #220.
Requirements
New Metrics tab
Add a console.tab/horizontalNav on DNSPolicy (kuadrant.io/v1):
- Tab name: "Metrics"
- Tab href:
metrics
Panels:
| Panel |
Metric |
Panel Type |
| DNS Record Ready State |
dns_provider_record_ready{dns_record_namespace="<ns>"} |
StatChart (ready/not ready per record) |
| Provider Write Operations |
dns_provider_write_counter{dns_record_namespace="<ns>"} |
TimeSeriesChart |
| Provider API Latency |
histogram_quantile(0.50, rate(http_client_request_latency_seconds_bucket{client="<provider>"}[5m])) (repeat for p95, p99) |
TimeSeriesChart (3 lines: p50, p95, p99) |
| Provider API Errors |
sum(rate(http_client_requests_total{client="<provider>", code=~"[45].."}[5m])) by (code) |
TimeSeriesChart stacked |
| Health Probes Active |
dns_health_probe_counter{dns_health_check_namespace="<ns>"} |
StatChart |
| Policy Ready |
kuadrant_dns_policy_ready{dns_policy_name="<name>", dns_policy_namespace="<ns>", dns_policy_condition="true"} |
StatChart |
Controls:
- Time range selector: 15m, 1h, 6h, 24h, 7d (default: 1h)
DNS record scoping
DNSPolicy creates DNSRecord resources. The dns_provider_record_ready and dns_provider_write_counter metrics use dns_record_name and dns_record_namespace labels. The mapping from DNSPolicy to its owned DNSRecord resources needs to be resolved to scope the metrics correctly.
Empty states
Notes
- Requires React 18 upgrade (OCP 4.22+ only)
- DNS operator metrics come from port 8080
/metrics; ensure Prometheus is scraping the dns-operator
Context
Add a Metrics tab to the DNSPolicy details page showing DNS record health and provider metrics using embedded Perses panels. This answers: "Are my DNS records healthy? Are DNS provider operations succeeding?"
Depends on the shared Perses infrastructure established in #220.
Requirements
New Metrics tab
Add a
console.tab/horizontalNavonDNSPolicy(kuadrant.io/v1):metricsPanels:
dns_provider_record_ready{dns_record_namespace="<ns>"}dns_provider_write_counter{dns_record_namespace="<ns>"}histogram_quantile(0.50, rate(http_client_request_latency_seconds_bucket{client="<provider>"}[5m]))(repeat for p95, p99)sum(rate(http_client_requests_total{client="<provider>", code=~"[45].."}[5m])) by (code)dns_health_probe_counter{dns_health_check_namespace="<ns>"}kuadrant_dns_policy_ready{dns_policy_name="<name>", dns_policy_namespace="<ns>", dns_policy_condition="true"}Controls:
DNS record scoping
DNSPolicy creates DNSRecord resources. The
dns_provider_record_readyanddns_provider_write_countermetrics usedns_record_nameanddns_record_namespacelabels. The mapping from DNSPolicy to its owned DNSRecord resources needs to be resolved to scope the metrics correctly.Empty states
EmptyMetricsStatecomponent from Overview Page: Migrate to Perses Metrics Panels and Add Observability Tab #220Notes
/metrics; ensure Prometheus is scraping the dns-operator