Skip to content

Commit 78e997c

Browse files
authored
Merge pull request #22655 from MikeSpreitzer/doc-new-apf-metrics
Document new API Priority and Fairness metrics
2 parents 0e3bc65 + 8250aa2 commit 78e997c

File tree

1 file changed

+88
-32
lines changed

1 file changed

+88
-32
lines changed

content/en/docs/concepts/cluster-administration/flow-control.md

Lines changed: 88 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -311,10 +311,12 @@ exports additional metrics. Monitoring these can help you determine whether your
311311
configuration is inappropriately throttling important traffic, or find
312312
poorly-behaved workloads that may be harming system health.
313313

314-
* `apiserver_flowcontrol_rejected_requests_total` counts requests that
315-
were rejected, grouped by the name of the assigned priority level,
316-
the name of the assigned FlowSchema, and the reason for rejection.
317-
The reason will be one of the following:
314+
* `apiserver_flowcontrol_rejected_requests_total` is a counter vector
315+
(cumulative since server start) of requests that were rejected,
316+
broken down by the labels `flowSchema` (indicating the one that
317+
matched the request), `priorityLevel` (indicating the one to which
318+
the request was assigned), and `reason`. The `reason` label will be
319+
have one of the following values:
318320
* `queue-full`, indicating that too many requests were already
319321
queued,
320322
* `concurrency-limit`, indicating that the
@@ -323,23 +325,72 @@ poorly-behaved workloads that may be harming system health.
323325
* `time-out`, indicating that the request was still in the queue
324326
when its queuing time limit expired.
325327

326-
* `apiserver_flowcontrol_dispatched_requests_total` counts requests
327-
that began executing, grouped by the name of the assigned priority
328-
level and the name of the assigned FlowSchema.
329-
330-
* `apiserver_flowcontrol_current_inqueue_requests` gives the
331-
instantaneous total number of queued (not executing) requests,
332-
grouped by priority level and FlowSchema.
333-
334-
* `apiserver_flowcontrol_current_executing_requests` gives the instantaneous
335-
total number of executing requests, grouped by priority level and FlowSchema.
336-
337-
* `apiserver_flowcontrol_request_queue_length_after_enqueue` gives a
338-
histogram of queue lengths for the queues, grouped by priority level
339-
and FlowSchema, as sampled by the enqueued requests. Each request
340-
that gets queued contributes one sample to its histogram, reporting
341-
the length of the queue just after the request was added. Note that
342-
this produces different statistics than an unbiased survey would.
328+
* `apiserver_flowcontrol_dispatched_requests_total` is a counter
329+
vector (cumulative since server start) of requests that began
330+
executing, broken down by the labels `flowSchema` (indicating the
331+
one that matched the request) and `priorityLevel` (indicating the
332+
one to which the request was assigned).
333+
334+
* `apiserver_current_inqueue_requests` is a gauge vector of recent
335+
high water marks of the number of queued requests, grouped by a
336+
label named `request_kind` whose value is `mutating` or `readOnly`.
337+
These high water marks describe the largest number seen in the one
338+
second window most recently completed. These complement the older
339+
`apiserver_current_inflight_requests` gauge vector that holds the
340+
last window's high water mark of number of requests actively being
341+
served.
342+
343+
* `apiserver_flowcontrol_read_vs_write_request_count_samples` is a
344+
histogram vector of observations of the then-current number of
345+
requests, broken down by the labels `phase` (which takes on the
346+
values `waiting` and `executing`) and `request_kind` (which takes on
347+
the values `mutating` and `readOnly`). The observations are made
348+
periodically at a high rate.
349+
350+
* `apiserver_flowcontrol_read_vs_write_request_count_watermarks` is a
351+
histogram vector of high or low water marks of the number of
352+
requests broken down by the labels `phase` (which takes on the
353+
values `waiting` and `executing`) and `request_kind` (which takes on
354+
the values `mutating` and `readOnly`); the label `mark` takes on
355+
values `high` and `low`. The water marks are accumulated over
356+
windows bounded by the times when an observation was added to
357+
`apiserver_flowcontrol_read_vs_write_request_count_samples`. These
358+
water marks show the range of values that occurred between samples.
359+
360+
* `apiserver_flowcontrol_current_inqueue_requests` is a gauge vector
361+
holding the instantaneous number of queued (not executing) requests,
362+
broken down by the labels `priorityLevel` and `flowSchema`.
363+
364+
* `apiserver_flowcontrol_current_executing_requests` is a gauge vector
365+
holding the instantaneous number of executing (not waiting in a
366+
queue) requests, broken down by the labels `priorityLevel` and
367+
`flowSchema`.
368+
369+
* `apiserver_flowcontrol_priority_level_request_count_samples` is a
370+
histogram vector of observations of the then-current number of
371+
requests broken down by the labels `phase` (which takes on the
372+
values `waiting` and `executing`) and `priorityLevel`. Each
373+
histogram gets observations taken periodically, up through the last
374+
activity of the relevant sort. The observations are made at a high
375+
rate.
376+
377+
* `apiserver_flowcontrol_priority_level_request_count_watermarks` is a
378+
histogram vector of high or low water marks of the number of
379+
requests broken down by the labels `phase` (which takes on the
380+
values `waiting` and `executing`) and `priorityLevel`; the label
381+
`mark` takes on values `high` and `low`. The water marks are
382+
accumulated over windows bounded by the times when an observation
383+
was added to
384+
`apiserver_flowcontrol_priority_level_request_count_samples`. These
385+
water marks show the range of values that occurred between samples.
386+
387+
* `apiserver_flowcontrol_request_queue_length_after_enqueue` is a
388+
histogram vector of queue lengths for the queues, broken down by
389+
the labels `priorityLevel` and `flowSchema`, as sampled by the
390+
enqueued requests. Each request that gets queued contributes one
391+
sample to its histogram, reporting the length of the queue just
392+
after the request was added. Note that this produces different
393+
statistics than an unbiased survey would.
343394
{{< note >}}
344395
An outlier value in a histogram here means it is likely that a single flow
345396
(i.e., requests by one user or for one namespace, depending on
@@ -349,24 +400,29 @@ poorly-behaved workloads that may be harming system health.
349400
to increase that PriorityLevelConfiguration's concurrency shares.
350401
{{< /note >}}
351402

352-
* `apiserver_flowcontrol_request_concurrency_limit` gives the computed
353-
concurrency limit (based on the API server's total concurrency limit and PriorityLevelConfigurations'
354-
concurrency shares) for each PriorityLevelConfiguration.
355-
356-
* `apiserver_flowcontrol_request_wait_duration_seconds` gives a histogram of how
357-
long requests spent queued, grouped by the FlowSchema that matched the
358-
request, the PriorityLevel to which it was assigned, and whether or not the
359-
request successfully executed.
403+
* `apiserver_flowcontrol_request_concurrency_limit` is a gauge vector
404+
hoding the computed concurrency limit (based on the API server's
405+
total concurrency limit and PriorityLevelConfigurations' concurrency
406+
shares), broken down by the label `priorityLevel`.
407+
408+
* `apiserver_flowcontrol_request_wait_duration_seconds` is a histogram
409+
vector of how long requests spent queued, broken down by the labels
410+
`flowSchema` (indicating which one matched the request),
411+
`priorityLevel` (indicating the one to which the request was
412+
assigned), and `execute` (indicating whether the request started
413+
executing).
360414
{{< note >}}
361415
Since each FlowSchema always assigns requests to a single
362416
PriorityLevelConfiguration, you can add the histograms for all the
363417
FlowSchemas for one priority level to get the effective histogram for
364418
requests assigned to that priority level.
365419
{{< /note >}}
366420

367-
* `apiserver_flowcontrol_request_execution_seconds` gives a histogram of how
368-
long requests took to actually execute, grouped by the FlowSchema that matched the
369-
request and the PriorityLevel to which it was assigned.
421+
* `apiserver_flowcontrol_request_execution_seconds` is a histogram
422+
vector of how long requests took to actually execute, broken down by
423+
the labels `flowSchema` (indicating which one matched the request)
424+
and `priorityLevel` (indicating the one to which the request was
425+
assigned).
370426

371427
### Debug endpoints
372428

0 commit comments

Comments
 (0)