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.
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 claveon
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 claveon
. Tu consulta PromQL modificada se vería así:Esta consulta hará coincidir la etiqueta
instance
de la métricanode_cpu_seconds_total
con la etiquetainstance
de la métricakube_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.