Preserve source for Traefik status codes #20545
Open
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
What does this PR do?
This PR enables
preserveSource
for bothOriginStatus
andDownstreamStatus
in Traefik logs. It preserves the remapping behavior which was already present, while increasing fidelity between these two non-identical fields.An alternative approach that I would be happy with would be remapping only
DownstreamStatus
to http.status_code (as this is what is returned to callers), and remapOriginStatus
tohttp.origin_status_code
or similar (I'm unsure if there are any existing conventions for this specific piece of data).Motivation
The Traefik log fields
OriginStatus
andDownstreamStatus
are currently both merged intohttp.status_code
, and the source fields are dropped.However, origin and downstream status do not represent the same data, and merging them into each other like this reduces the fidelity of log data. In particular, it makes it impossible to disambiguate the source of an error - e.g., I cannot tell whether Traefik's target returned a 503, or whether Traefik failed to connect to the target in the first place.
I should note that this is currently causing production pain for us by making it difficult to create useful metrics tracking Traefik's health; and there is no available metric in Traefik which otherwise disambiguates this data.
Review checklist (to be filled by reviewers)
qa/skip-qa
label if the PR doesn't need to be tested during QA.backport/<branch-name>
label to the PR and it will automatically open a backport PR once this one is merged