---
title: Kubernetes Scheduler
description: Monitors the Kubernetes Scheduler
breadcrumbs: Docs > Integrations > Kubernetes Scheduler
---

# Kubernetes Scheduler
Supported OS Integration version7.4.1


## Overview{% #overview %}

This check monitors [Kubernetes Scheduler](https://kubernetes.io/docs/reference/command-line-tools-reference/kube-scheduler), part of the Kubernetes control plane.

**Note**: This check does not collect data for Amazon EKS clusters, as those services are not exposed.

**Minimum Agent version:** 6.11.0

## Setup{% #setup %}

### Installation{% #installation %}

The Kubernetes Scheduler check is included in the [Datadog Agent](https://app.datadoghq.com/account/settings/agent/latest) package. No additional installation is needed on your server.

### Configuration{% #configuration %}

See the [Autodiscovery Integration Templates](https://docs.datadoghq.com/agent/kubernetes/integrations.md) for guidance on applying the parameters below.

#### Metric collection{% #metric-collection %}

1. Edit the `kube_scheduler.d/conf.yaml` file, in the `conf.d/` folder at the root of your Agent's configuration directory to start collecting your kube_scheduler performance data. See the [sample kube_scheduler.d/conf.yaml](https://github.com/DataDog/integrations-core/blob/master/kube_scheduler/datadog_checks/kube_scheduler/data/conf.yaml.example) for all available configuration options.

1. [Restart the Agent](https://docs.datadoghq.com/agent/guide/agent-commands.md#restart-the-agent).

#### Log collection{% #log-collection %}

Collecting logs is disabled by default in the Datadog Agent. To enable it, see [Kubernetes Log Collection](https://docs.datadoghq.com/agent/kubernetes/log.md).

| Parameter      | Value                                                       |
| -------------- | ----------------------------------------------------------- |
| `<LOG_CONFIG>` | `{"source": "kube_scheduler", "service": "<SERVICE_NAME>"}` |

### Validation{% #validation %}

[Run the Agent's status subcommand](https://docs.datadoghq.com/agent/guide/agent-commands.md#agent-status-and-information) and look for `kube_scheduler` under the Checks section.

## Data Collected{% #data-collected %}

### Metrics{% #metrics %}

|  |
|  |
| **kube\_scheduler.binding\_duration.count**(gauge)                         | Number of latency in seconds                                                                                                                               |
| **kube\_scheduler.binding\_duration.sum**(gauge)                           | Total binding latency in seconds                                                                                                                           |
| **kube\_scheduler.cache.lookups**(count)                                   | Number of equivalence cache lookups, by whether or not a cache entry was found                                                                             |
| **kube\_scheduler.client.http.requests**(count)                            | Number of HTTP requests, partitioned by status code, method, and host                                                                                      |
| **kube\_scheduler.client.http.requests\_duration.count**(gauge)            | Number of client requests. Broken down by verb and URL                                                                                                     |
| **kube\_scheduler.client.http.requests\_duration.sum**(gauge)              | Total latency. Broken down by verb and URL                                                                                                                 |
| **kube\_scheduler.gc\_duration\_seconds.count**(gauge)                     | Number of the GC invocation                                                                                                                                |
| **kube\_scheduler.gc\_duration\_seconds.quantile**(gauge)                  | GC invocation durations quantiles                                                                                                                          |
| **kube\_scheduler.gc\_duration\_seconds.sum**(gauge)                       | GC invocation durations sum                                                                                                                                |
| **kube\_scheduler.goroutine\_by\_scheduling\_operation**(gauge)            | Number of running goroutines split by the work they do such as binding (alpha; requires k8s v1.26+)                                                        |
| **kube\_scheduler.goroutines**(gauge)                                      | Number of goroutines that currently exist                                                                                                                  |
| **kube\_scheduler.max\_fds**(gauge)                                        | Maximum allowed open file descriptors                                                                                                                      |
| **kube\_scheduler.open\_fds**(gauge)                                       | Number of open file descriptors                                                                                                                            |
| **kube\_scheduler.pending\_pods**(gauge)                                   | Number of pending pods, by the queue type (requires k8s v1.15+)                                                                                            |
| **kube\_scheduler.pod\_preemption.attempts**(count)                        | Number of preemption attempts in the cluster till now                                                                                                      |
| **kube\_scheduler.pod\_preemption.victims.count**(gauge)                   | Number of selected pods during the latest preemption round                                                                                                 |
| **kube\_scheduler.pod\_preemption.victims.sum**(gauge)                     | Total selected pods during the latest preemption round                                                                                                     |
| **kube\_scheduler.queue.incoming\_pods**(count)                            | Number of pods added to scheduling queues by event and queue type (requires k8s v1.17+)                                                                    |
| **kube\_scheduler.schedule\_attempts**(gauge)                              | Number of attempts to schedule pods, by the result. 'unschedulable' means a pod could not be scheduled, while 'error' means an internal scheduler problem. |
| **kube\_scheduler.scheduling.algorithm.predicate\_duration.count**(gauge)  | Number of scheduling algorithm predicate evaluation                                                                                                        |
| **kube\_scheduler.scheduling.algorithm.predicate\_duration.sum**(gauge)    | Total scheduling algorithm predicate evaluation duration                                                                                                   |
| **kube\_scheduler.scheduling.algorithm.preemption\_duration.count**(gauge) | Number of scheduling algorithm preemption evaluation                                                                                                       |
| **kube\_scheduler.scheduling.algorithm.preemption\_duration.sum**(gauge)   | Total scheduling algorithm preemption evaluation duration                                                                                                  |
| **kube\_scheduler.scheduling.algorithm.priority\_duration.count**(gauge)   | Number of scheduling algorithm priority evaluation                                                                                                         |
| **kube\_scheduler.scheduling.algorithm.priority\_duration.sum**(gauge)     | Total scheduling algorithm priority evaluation duration                                                                                                    |
| **kube\_scheduler.scheduling.algorithm\_duration.count**(gauge)            | Number of scheduling algorithm latency                                                                                                                     |
| **kube\_scheduler.scheduling.algorithm\_duration.sum**(gauge)              | Total scheduling algorithm latency                                                                                                                         |
| **kube\_scheduler.scheduling.attempt\_duration.count**(gauge)              | Scheduling attempt latency in seconds (scheduling algorithm + binding) (requires k8s v1.23+)                                                               |
| **kube\_scheduler.scheduling.attempt\_duration.sum**(gauge)                | Total scheduling attempt latency in seconds (scheduling algorithm + binding) (requires k8s v1.23+)                                                         |
| **kube\_scheduler.scheduling.e2e\_scheduling\_duration.count**(gauge)      | Number of E2e scheduling latency (scheduling algorithm + binding)                                                                                          |
| **kube\_scheduler.scheduling.e2e\_scheduling\_duration.sum**(gauge)        | Total E2e scheduling latency (scheduling algorithm + binding)                                                                                              |
| **kube\_scheduler.scheduling.pod.scheduling\_attempts.count**(gauge)       | Number of attempts to successfully schedule a pod (requires k8s v1.23+)                                                                                    |
| **kube\_scheduler.scheduling.pod.scheduling\_attempts.sum**(gauge)         | Total number of attempts to successfully schedule a pod (requires k8s v1.23+)                                                                              |
| **kube\_scheduler.scheduling.pod.scheduling\_duration.count**(gauge)       | E2e latency for a pod being scheduled which may include multiple scheduling attempts (requires k8s v1.23+)                                                 |
| **kube\_scheduler.scheduling.pod.scheduling\_duration.sum**(gauge)         | Total e2e latency for a pod being scheduled which may include multiple scheduling attempts (requires k8s v1.23+)                                           |
| **kube\_scheduler.scheduling.scheduling\_duration.count**(gauge)           | Number of scheduling split by sub-parts of the scheduling operation                                                                                        |
| **kube\_scheduler.scheduling.scheduling\_duration.quantile**(gauge)        | Scheduling latency quantiles split by sub-parts of the scheduling operation                                                                                |
| **kube\_scheduler.scheduling.scheduling\_duration.sum**(gauge)             | Total scheduling latency split by sub-parts of the scheduling operation                                                                                    |
| **kube\_scheduler.slis.kubernetes\_healthcheck**(gauge)                    | Result of a single scheduler healthcheck (alpha; requires k8s v1.26+)                                                                                      |
| **kube\_scheduler.slis.kubernetes\_healthcheck\_total**(count)             | Cumulative results of all scheduler healthchecks (alpha; requires k8s v1.26+)                                                                              |
| **kube\_scheduler.threads**(gauge)                                         | Number of OS threads created                                                                                                                               |
| **kube\_scheduler.volume\_scheduling\_duration.count**(gauge)              | Number of Volume scheduling                                                                                                                                |
| **kube\_scheduler.volume\_scheduling\_duration.sum**(gauge)                | Total Volume scheduling stage latency                                                                                                                      |

### Events{% #events %}

Kube Scheduler does not include any events.

### Service Checks{% #service-checks %}

**kube\_scheduler.prometheus.health**

Returns `CRITICAL` if the check cannot access the metrics endpoint.

*Statuses: ok, critical*

**kube\_scheduler.leader\_election.status**

Returns `CRITICAL` if no replica is currently set as leader.

*Statuses: ok, critical*

**kube\_scheduler.up**

Returns `CRITICAL` if Kube Scheduler is not healthy.

*Statuses: ok, critical*

## Troubleshooting{% #troubleshooting %}

Need help? Contact [Datadog support](https://docs.datadoghq.com/help/).
