Seleccione sus preferencias de cookies

Usamos cookies esenciales y herramientas similares que son necesarias para proporcionar nuestro sitio y nuestros servicios. Usamos cookies de rendimiento para recopilar estadísticas anónimas para que podamos entender cómo los clientes usan nuestro sitio y hacer mejoras. Las cookies esenciales no se pueden desactivar, pero puede hacer clic en “Personalizar” o “Rechazar” para rechazar las cookies de rendimiento.

Si está de acuerdo, AWS y los terceros aprobados también utilizarán cookies para proporcionar características útiles del sitio, recordar sus preferencias y mostrar contenido relevante, incluida publicidad relevante. Para aceptar o rechazar todas las cookies no esenciales, haga clic en “Aceptar” o “Rechazar”. Para elegir opciones más detalladas, haga clic en “Personalizar”.

Obtención de métricas sin procesar del plano de control en formato Prometheus

Modo de enfoque
Obtención de métricas sin procesar del plano de control en formato Prometheus - Amazon EKS

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Elija el enlace Editar esta página en GitHub que se encuentra en el panel derecho de cada página. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

Ayude a mejorar esta página

¿Quiere contribuir a esta guía del usuario? Elija el enlace Editar esta página en GitHub que se encuentra en el panel derecho de cada página. Sus contribuciones ayudarán a que nuestra guía del usuario sea mejor para todos.

El plano de control de Kubernetes expone una serie de métricas que se representan en un formato Prometheus. Estas métricas son útiles para el monitoreo y el análisis. Se exponen internamente a través de puntos de conexión de métricas, y se puede acceder a estos sin implementar Prometheus completamente. Sin embargo, la implementación de Prometheus permite analizar las métricas a lo largo del tiempo de forma más sencilla.

Para ver la salida de métricas sin procesar, ejecute el siguiente comando.

kubectl get --raw endpoint

Este comando permite pasar cualquier ruta de punto de conexión y devuelve la respuesta sin procesar. La salida enumera las diferentes métricas línea por línea, y cada línea incluye un nombre de métrica, etiquetas y un valor.

metric_name{tag="value"[,...]} value

Cómo obtener métricas del servidor de API

El punto de conexión general del servidor de API se expone en el plano de control de Amazon EKS. Este punto de conexión resulta útil sobre todo cuando se examina una métrica específica.

kubectl get --raw /metrics

Un ejemplo de salida sería el siguiente.

[...] # HELP rest_client_requests_total Number of HTTP requests, partitioned by status code, method, and host. # TYPE rest_client_requests_total counter rest_client_requests_total{code="200",host="127.0.0.1:21362",method="POST"} 4994 rest_client_requests_total{code="200",host="127.0.0.1:443",method="DELETE"} 1 rest_client_requests_total{code="200",host="127.0.0.1:443",method="GET"} 1.326086e+06 rest_client_requests_total{code="200",host="127.0.0.1:443",method="PUT"} 862173 rest_client_requests_total{code="404",host="127.0.0.1:443",method="GET"} 2 rest_client_requests_total{code="409",host="127.0.0.1:443",method="POST"} 3 rest_client_requests_total{code="409",host="127.0.0.1:443",method="PUT"} 8 # HELP ssh_tunnel_open_count Counter of ssh tunnel total open attempts # TYPE ssh_tunnel_open_count counter ssh_tunnel_open_count 0 # HELP ssh_tunnel_open_fail_count Counter of ssh tunnel failed open attempts # TYPE ssh_tunnel_open_fail_count counter ssh_tunnel_open_fail_count 0

Este resultado sin procesar devuelve literalmente lo que el servidor de API expone.

Métricas del plano de control con metrics.eks.amazonaws.com

En el caso de los clústeres que son Kubernetes versión 1.28 y posteriores, Amazon EKS también expone métricas bajo el grupo de la API metrics.eks.amazonaws.com. Estas métricas incluyen componentes del plano de control, como kube-scheduler y kube-controller-manager.

nota

Si tiene una configuración de webhook que podría bloquear la creación de la nueva v1.metrics.eks.amazonaws.com del recurso APIService en el clúster, es posible que la característica de punto de conexión de métricas no se encuentre disponible. Para verificarlo en el registro de auditoría de kube-apiserver, busque la palabra clave v1.metrics.eks.amazonaws.com.

Cómo obtener métricas de kube-scheduler

Utilice el siguiente comando para obtener métricas de kube-scheduler

kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics"

Un ejemplo de salida sería el siguiente.

# TYPE scheduler_pending_pods gauge scheduler_pending_pods{queue="active"} 0 scheduler_pending_pods{queue="backoff"} 0 scheduler_pending_pods{queue="gated"} 0 scheduler_pending_pods{queue="unschedulable"} 18 # HELP scheduler_pod_scheduling_attempts [STABLE] Number of attempts to successfully schedule a pod. # TYPE scheduler_pod_scheduling_attempts histogram scheduler_pod_scheduling_attempts_bucket{le="1"} 79 scheduler_pod_scheduling_attempts_bucket{le="2"} 79 scheduler_pod_scheduling_attempts_bucket{le="4"} 79 scheduler_pod_scheduling_attempts_bucket{le="8"} 79 scheduler_pod_scheduling_attempts_bucket{le="16"} 79 scheduler_pod_scheduling_attempts_bucket{le="+Inf"} 81 [...]

Cómo obtener métricas de kube-controller-manager

Utilice el siguiente comando para obtener métricas de kube-controller-manager

kubectl get --raw "/apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics"

Un ejemplo de salida sería el siguiente.

[...] workqueue_work_duration_seconds_sum{name="pvprotection"} 0 workqueue_work_duration_seconds_count{name="pvprotection"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-08"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-07"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="1e-06"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-06"} 0 workqueue_work_duration_seconds_bucket{name="replicaset",le="9.999999999999999e-05"} 19 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.001"} 109 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.01"} 139 workqueue_work_duration_seconds_bucket{name="replicaset",le="0.1"} 181 workqueue_work_duration_seconds_bucket{name="replicaset",le="1"} 191 workqueue_work_duration_seconds_bucket{name="replicaset",le="10"} 191 workqueue_work_duration_seconds_bucket{name="replicaset",le="+Inf"} 191 workqueue_work_duration_seconds_sum{name="replicaset"} 4.265655885000002 [...]

Comprender las métricas del programador y del administrador de controladores

En la siguiente tabla se describen las métricas del programador y del administrador de controladores que están disponibles para la extracción de estilos de Prometheus. Para obtener más información acerca de estas métricas, consulte Kubernetes Metrics Reference en la documentación de Kubernetes.

Métrica Componente del plano de control Descripción

scheduler_pending_pods

programador

La cantidad de pods que están a la espera de programarse en un nodo para su ejecución.

scheduler_schedule_attempts_total

programador

La cantidad de intentos realizados para programar pods.

scheduler_preemption_attempts_total

programador

La cantidad de intentos realizados por el programador para programar pods de mayor prioridad expulsando los de menor prioridad.

scheduler_preemption_victims

programador

La cantidad de pods que se han seleccionado para expulsarse con el fin de liberar espacio para pods de mayor prioridad.

scheduler_pod_scheduling_attempts

programador

La cantidad de intentos de programar un pod correctamente.

scheduler_scheduling_attempt_duration_seconds

programador

Indica la velocidad con la que el programador es capaz de encontrar un espacio adecuado para la ejecución de un pod en función de varios factores, como la disponibilidad de recursos y las reglas de programación.

scheduler_pod_scheduling_sli_duration_seconds

programador

La latencia de extremo a extremo de un pod que se está programando, desde el momento en que entra en la cola de programación. Es posible que sean necesarios varios intentos de programación.

kube_pod_resource_request

programador

Los recursos solicitados por las cargas de trabajo en el clúster, desglosados por pod. Indica el uso de recursos que el programador y kubelet prevén por pod, con la unidad correspondiente a cada recurso en su caso.

kube_pod_resource_limit

programador

El límite de recursos para cargas de trabajo en el clúster, desglosado por pod. Indica el uso de recursos que el programador y kubelet prevén por pod, con la unidad correspondiente a cada recurso en su caso.

cronjob_controller_job_creation_skew_duration_seconds

administrador de controladores

El tiempo transcurrido entre el momento en que se programa la ejecución de un cronjob y el momento en que se crea el trabajo correspondiente.

workqueue_depth

administrador de controladores

La profundidad actual de la cola.

workqueue_adds_total

administrador de controladores

Cantidad total de adiciones administradas por la cola de trabajo.

workqueue_queue_duration_seconds

administrador de controladores

El tiempo en segundos que un elemento permanece en la cola de trabajo antes de ser solicitado.

workqueue_work_duration_seconds

administrador de controladores

El tiempo en segundos que tarda en procesarse un elemento de la cola de trabajo.

Implementación de un sistema de extracción de Prometheus para extraer métricas de forma sistemática

Para implementar un sistema de extracción de Prometheus que extraiga sistemáticamente las métricas, utilice la siguiente configuración:

--- apiVersion: v1 kind: ConfigMap metadata: name: prometheus-conf data: prometheus.yml: |- global: scrape_interval: 30s scrape_configs: # apiserver metrics - job_name: apiserver-metrics kubernetes_sd_configs: - role: endpoints scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https # Scheduler metrics - job_name: 'ksh-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/ksh/container/metrics scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https # Controller Manager metrics - job_name: 'kcm-metrics' kubernetes_sd_configs: - role: endpoints metrics_path: /apis/metrics.eks.amazonaws.com/v1/kcm/container/metrics scheme: https tls_config: ca_file: /var/run/secrets/kubernetes.io/serviceaccount/ca.crt insecure_skip_verify: true bearer_token_file: /var/run/secrets/kubernetes.io/serviceaccount/token relabel_configs: - source_labels: [ __meta_kubernetes_namespace, __meta_kubernetes_service_name, __meta_kubernetes_endpoint_port_name, ] action: keep regex: default;kubernetes;https --- apiVersion: v1 kind: Pod metadata: name: prom-pod spec: containers: - name: prom-container image: prom/prometheus ports: - containerPort: 9090 volumeMounts: - name: config-volume mountPath: /etc/prometheus/ volumes: - name: config-volume configMap: name: prometheus-conf

El permiso que sigue es necesario para que el pod acceda al nuevo punto de conexión de métricas.

{ "effect": "allow", "apiGroups": [ "metrics.eks.amazonaws.com" ], "resources": [ "kcm/metrics", "ksh/metrics" ], "verbs": [ "get" ] },

Para aplicar un parche al rol que se utiliza, puede utilizar el siguiente comando.

kubectl patch clusterrole <role-name> --type=json -p='[ { "op": "add", "path": "/rules/-", "value": { "verbs": ["get"], "apiGroups": ["metrics.eks.amazonaws.com"], "resources": ["kcm/metrics", "ksh/metrics"] } } ]'

A continuación, para ver el panel de Prometheus, puede redirigir mediante proxy el puerto del sistema de extracción de Prometheus al puerto local.

kubectl port-forward pods/prom-pod 9090:9090

Para el clúster de Amazon EKS, las métricas del plano de control principal de Kubernetes también se ingieren en las métricas de Amazon CloudWatch bajo el espacio de nombres de AWS/EKS. Para verlas, abra la consola de CloudWatch y seleccione Todas las métricas en el panel de navegación izquierdo. En la página de selección de Métricas, elija el espacio de nombres de AWS/EKS y una dimensión de métricas para el clúster.

PrivacidadTérminos del sitioPreferencias de cookies
© 2025, Amazon Web Services, Inc o sus afiliados. Todos los derechos reservados.