// Module included in the following assemblies:
//
// * serverless/observability/admin-metrics/serverless-admin-metrics.adoc

:_mod-docs-content-type: REFERENCE
[id="serverless-autoscaler-metrics_{context}"]
= Autoscaler metrics

The autoscaler component exposes a number of metrics related to autoscaler behavior for each revision. For example, at any given time, you can monitor the targeted number of pods the autoscaler tries to allocate for a service, the average number of requests per second during the stable window, or whether the autoscaler is in panic mode if you are using the Knative pod autoscaler (KPA).

[cols=5*,options="header"]
|===
|Metric name
|Description
|Type
|Tags
|Unit

|`desired_pods`
|The number of pods the autoscaler tries to allocate for a service.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`excess_burst_capacity`
|The excess burst capacity served over the stable window.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`stable_request_concurrency`
|The average number of requests for each observed pod over the stable window.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`panic_request_concurrency`
|The average number of requests for each observed pod over the panic window.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`target_concurrency_per_pod`
|The number of concurrent requests that the autoscaler tries to send to each pod.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`stable_requests_per_second`
|The average number of requests-per-second for each observed pod over the stable window.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`panic_requests_per_second`
|The average number of requests-per-second for each observed pod over the panic window.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`target_requests_per_second`
|The number of requests-per-second that the autoscaler targets for each pod.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`panic_mode`
|This value is `1` if the autoscaler is in panic mode, or `0` if the autoscaler is not in panic mode.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`requested_pods`
|The number of pods that the autoscaler has requested from the Kubernetes cluster.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`actual_pods`
|The number of pods that are allocated and currently have a ready state.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`not_ready_pods`
|The number of pods that have a not ready state.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`pending_pods`
|The number of pods that are currently pending.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)

|`terminating_pods`
|The number of pods that are currently terminating.
|Gauge
|`configuration_name`, `namespace_name`, `revision_name`, `service_name`
|Integer (no units)
|===
