docs(egress): egress observability guide for metrics and access logging#2108
docs(egress): egress observability guide for metrics and access logging#2108maksymvavilov wants to merge 2 commits into
Conversation
Add a new egress observability guide covering Istio proxy metrics and Envoy access logs for egress gateway traffic. All metric label values and access log examples are validated on a live Kind cluster. This guide is the first deliverable for the egress observability epic (Kuadrant#2083) and will be extended in follow-up tasks with distributed tracing (Kuadrant#2084), TelemetryPolicy custom labels (Kuadrant#2086), and TokenRateLimitPolicy (Kuadrant#2085) content. Closes Kuadrant#2074 Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Maskym Vavilov <mvavilov@redhat.com>
|
Warning Review limit reached
Next review available in: 39 minutes Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available. How can I continue?After more reviews become available, a review can be triggered using the To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews. How do review limits work?CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability. For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window. Please refer docs for additional details. Review details⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (1)
📝 WalkthroughWalkthroughAdds an egress observability guide covering Prometheus metrics, Envoy access logs, troubleshooting scenarios, JSON logging, scrape verification, and follow-up references. Existing observability and egress gateway documentation now link to the guide. ChangesEgress observability documentation
Estimated code review effort: 2 (Simple) | ~10 minutes Possibly related issues
Possibly related PRs
Suggested labels: Suggested reviewers: Poem
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 5
🧹 Nitpick comments (1)
doc/user-guides/egress/observability.md (1)
78-82: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd language identifiers to diagnostic code fences.
These plain fenced blocks trigger markdownlint MD040. Mark log and command output blocks as
textso the documentation passes the configured lint rule.Also applies to: 168-173, 199-203, 222-235, 243-247, 265-267
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@doc/user-guides/egress/observability.md` around lines 78 - 82, Add the text language identifier to the fenced diagnostic output blocks in the observability guide, including the shown metrics block and the additional referenced blocks, while leaving their contents unchanged.Source: Linters/SAST tools
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@doc/user-guides/egress/observability.md`:
- Line 254: Update the troubleshooting text for the NR condition to state only
that no HTTPRoute matched the request. Separate the HTTPRoute and ServiceEntry
checks, and mention a missing ServiceEntry only when evidence specifically
indicates that resource is absent.
- Around line 134-138: Update “Identifying the Egress Gateway in Metrics” to
clearly separate Kubernetes pod-label filtering from PromQL metric filtering:
describe gateway.networking.k8s.io/gateway-name=kuadrant-egressgateway only for
kubectl or log queries, and retain
source_workload="kuadrant-egressgateway-istio" as the istio_requests_total
PromQL selector.
- Around line 297-310: Update the accessLogging filter expression in the
egress-access-logs Telemetry example to retain entries where response.code is
unset as well as responses with status codes 400 or higher, using the required
unset-or-error condition.
- Around line 164-191: Correct the field mappings in the “Reading Egress Access
Logs” table to match the actual Istio/Envoy access-log format: identify field 12
as X-Forwarded-For, map 10.244.0.18:43722 to the downstream remote address, and
adjust all subsequent entries accordingly. Prefer named Envoy fields over
numeric positions where possible, while preserving the documented egress
troubleshooting guidance.
- Around line 258-269: Update the access-log timing explanation around
“Duration” and “Upstream service time” to describe their difference as
approximate non-upstream latency, including proxy processing, network transit,
and queueing. Replace claims of pure gateway overhead and statements that close
values prove the external service is the bottleneck with appropriately qualified
guidance.
---
Nitpick comments:
In `@doc/user-guides/egress/observability.md`:
- Around line 78-82: Add the text language identifier to the fenced diagnostic
output blocks in the observability guide, including the shown metrics block and
the additional referenced blocks, while leaving their contents unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 1ca82c83-07cd-4e4c-b52e-62e227fbb125
📒 Files selected for processing (3)
doc/observability/README.mddoc/user-guides/egress/egress-gateway.mddoc/user-guides/egress/observability.md
- Separate Kubernetes pod label from PromQL metric label in gateway identification section - Fix access log field table: use named format variables instead of incorrect positional numbers, add X-Forwarded-For field - NR response flag indicates missing HTTPRoute, not necessarily missing ServiceEntry - Latency difference is non-upstream latency (proxy, network, queueing), not pure gateway overhead - Error-only filter uses !has(response.code) to capture connection failures where no HTTP response code is generated - Add language specifiers to all fenced code blocks Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com> Signed-off-by: Maskym Vavilov <mvavilov@redhat.com>
Summary
doc/user-guides/egress/observability.mdcovering Istio proxy metrics and Envoy access logs for egress gateway traffichack/setup-egress.shegress-gateway.md(Next Steps) andobservability/README.md(Overview list)What the guide covers
What it does not cover (separate issues)
This guide is the first deliverable for the egress observability epic (#2083). It will be extended in follow-up tasks:
Test plan
hack/setup-egress.shCloses #2074
🤖 Generated with Claude Code
Summary by CodeRabbit
New Features
Documentation