Cada consulta de métricas tiene un orden estándar de evaluación (consulta la anatomía de una consulta para un repaso rápido). Por ejemplo, la siguiente consulta se calcula del siguiente modo: sum:kubernetes.cpu.requests{*} by {kube_container_name}.rollup(avg, 10)

  1. Agregación temporal: Suma los valores en el tiempo de cada serie temporal (definida por una combinación única de valores de etiquetas [tags]) para cada intervalo de tiempo de agrupación de 10 segundos. El número de combinaciones únicas de valores de etiquetas viene determinado por la etiqueta de alta granularidad/más volátil; por ejemplo container_id, en este métrica.
  2. A continuación, por cada kube_container_name (agregación espacial), toma la suma de todos los valores promediados como un único valor representativo. Los valores sumados para cada kube_container_name dependen del número de container_id únicos que haya para cada intervalo de agrupación.

La función weighted() tiene en cuenta la corta duración de los valores de la etiquetacontainer_id al sumar por kube_container_name para esta métrica de gauge.

Ejemplo

Considera esta consulta con los siguientes supuestos:
sum:kubernetes_state.pod.uptime{*} by {version}.rollup(avg, 10)

  • El intervalo de envío de métricas de gauge está definido en 10 segundos.
  • Se grafica un punto de datos cada 60 segundos.
  • En todo momento hay un pod Kubernetes con 2 versiones. Cada versión está etiquetada con una aplicación y sólo hay una versión por aplicación.

Los datos sin procesar durante 60 segundos podrían parecerse a:

Tiempo0s10s20s30s40s50s
app:a, version:112NANNANNANNANNAN
app:b, version:1NAN121212NANNAN
app:c, version:1NANNANNANNAN1212
app:d, version:212NANNANNANNANNAN
app:e, version:2NAN161616NANNAN
app:f, version:2NANNANNANNAN1818
  1. Agregación temporal – Agrupación de datos_ Con la agregación temporal, agrupamos datos ya sea avg (sin weighted) o la media propuesta de weighted:

    Agregación temporal.rollup(avg)Con .weighted()
    app:a, version:1122.0
    app:b, version:1126.0
    app:c, version:1124.0
    app:d, version:2122.0
    app:e, version:2168.0
    app:f, version:2186.0
  2. Agregación espacial Por último, la métrica se agrega por versión para obtener los siguientes valores finales:

    Agregación espacial por versión.rollup(avg)Con .weighted()
    version:13612
    version:24616

La función weighted() resuelve cualquier comportamiento incoherente con etiquetas de corta duración, ponderando los valores en función de su tasa de envío.

Leer más

Más enlaces, artículos y documentación útiles: