¿Cómo funciona weighted()?

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

Additional helpful documentation, links, and articles: