es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

PromQL: Acceda a la métrica para la instancia mientras se agrupa por instancia

¿Existe alguna forma de acceder a la instancia actual mientras se agrupa por instancia? Lo que estoy tratando de hacer es obtener kubenodestatuscapacitycpu_cores mientras se agrupa por instancia.

Actualmente estoy codificando manualmente la cantidad de núcleos de CPU, pero quiero parametrizarlo, ya que las nodos pueden tener diferentes cantidades de núcleos.

Mi consulta promQL ahora es:

(1 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[15s])))) * 0.007 + 0.23) * 165 * 1.125 * 4)

donde 4 es el número de CPUs. Ahora quiero algo como:

(1 - (avg by (instance) (rate(node_cpu_seconds_total{mode="idle"}[15s])))) * 0.007 + 0.23) * 165 * 1.125 * kube_node_status_capacity_cpu_cores{instance=currentInstance})

Gracias por tu ayuda.

Editar

Ahora comprendo por qué el enfoque utilizando on(instance) no funciona. La etiqueta de instancia a la izquierda es la dirección IP del exportador de nodos que proporciona el tiempo de CPU. La instancia a la derecha es la dirección IP del pod de kube-state-metrics.

Lo que realmente necesito es asignar de alguna manera el nodo de las métricas de estado al nombre de nodo del exportador de nodos en cuestión. ¿Alguna idea?

Editar 2

En mi caso específico, estaba buscando una consulta diferente. Pero la respuesta aceptada es realmente útil para futuras referencias, ya que habría respondido la pregunta correctamente si hubiera descrito el caso correctamente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para acceder a la instancia actual mientras se agrupa por instancia, puedes usar la palabra clave on en tu consulta PromQL. La palabra clave on te permite hacer coincidir las etiquetas entre las métricas y se puede utilizar para realizar operaciones similares a unirse en métricas con etiquetas coincidentes.

    Para parametrizar el número de núcleos de CPU, puedes utilizar la métrica kube_node_status_capacity_cpu_cores, filtrada por la instancia actual utilizando la palabra clave on. Tu consulta PromQL modificada se vería así:

    (1 - avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[15s])) ) * 0.007 + 0.23) * 165 * 1.125 * on(instance) kube_node_status_capacity_cpu_cores
    

    Esta consulta hará coincidir la etiqueta instance de la métrica node_cpu_seconds_total con la etiqueta instance de la métrica kube_node_status_capacity_cpu_cores, lo que te permitirá obtener el número de núcleos de CPU para la instancia actual.

    Ten en cuenta que la métrica kube_node_status_capacity_cpu_cores solo estará disponible si tienes kube-state-metrics ejecutándose en tu clúster.

Comments are closed.