Modificadores de tipos de métricas
Un tipo de métrica es una indicación de lo que intentas representar con tu métrica y tu origen de emisión. Los tipos de métricas COUNT
y RATE
son bastante similares entre sí, ya que representan el mismo concepto: la variación de un valor de métrica a lo largo del tiempo. Sin embargo, utilizan una lógica diferente:
RATE
: Variación normalizada del valor en el tiempo (por segundo).COUNT
: Variación del valor absoluto en un intervalo de tiempo determinado.
Dependiendo de tu caso de uso y del método de envío, un tipo de métrica puede ser más adecuado que otro para el envío. Por ejemplo:
Tipo de métrica enviado | Caso de uso |
---|
RATE | Quieres monitorizar el número de solicitudes recibidas a lo largo del tiempo en varios hosts. |
RATE | No tienes control sobre la coherencia de los envíos de recuentos temporales en tus orígenes, por lo que estás normalizando por cada intervalo individual para poder compararlos aguas arriba. |
COUNT | Quieres contar el número de veces que se llama a una función. |
COUNT | Contabilizar la cantidad de ingresos que se han tenido durante un periodo de tiempo determinado. |
Debido a que RATE
y COUNT
no son el mismo tipo de métrica, no tienen el mismo comportamiento o forma dentro en los gráficos y monitores de Datadog. Para cambiar las métricas sobre la marcha entre las representaciones RATE
y COUNT
, utiliza las funciones del modificador en la aplicación de Datadog en tus gráficos y monitores.
Modificadores en la aplicación
Los dos principales modificadores en la aplicación son as_count()
y as_rate()
.
Dependiendo del tipo de métrica al que se apliquen, el comportamiento difiere:
- Efecto de
as_count()
:- Desactiva cualquier interpolación.
- Configura el agregador de tiempo en
SUM
.
- Efecto de
as_rate()
:- Desactiva cualquier interpolación.
- Configura el agregador de tiempo en
SUM
. - Divide el resultado post-agregación por el intervalo de muestreo para normalizarlo. Por ejemplo, los siguientes puntos enviados cada segundo
[1,1,1,1].as_rate()
con un intervalo de retroceso de 20s darían como resultado [0.05, 0.05, 0.05, 0.05]
.
Nota: No hay normalización en intervalos pequeños (cuando no hay agregación temporal), por lo que se devuelven los recuentos de valores brutos de métricas.
- Efecto de
as_count()
:- Desactiva cualquier interpolación.
- Configura el agregador de tiempo en SUM.
- Multiplica el resultado post-agregación por el intervalo de muestreo. Por ejemplo, los siguientes puntos enviados cada segundo
[0.05, 0.05, 0.05, 0.05].as_count()
con un intervalo rollup de 20s darían como resultado [1,1,1,1]
.
- Efecto de
as_rate()
:- Desactiva cualquier interpolación.
- Configura el agregador de tiempo en
SUM
.
Los tipos de métricas GAUGE
representan el valor absoluto y final de una métrica. Los modificadores as_count()
y as_rate()
no tienen ningún efecto sobre ellos.
El modificador weighted()
Las etiquetas como pod name
o container_name
provocan una alta rotación de etiquetas, especialmente cuando se crean consultas para la gestión de costes, la planificación de las capacidades o el autoescalado para aplicaciones en contenedorizadas. Para garantizar la precisión matemática de las consultas en indicadores, independientemente de la rotación de etiquetas, puedes utilizar un modificador .weighted()
en la aplicación. El modificador .weighted()
permite a Datadog ponderar adecuadamente los valores de métricas en función de la vida útil de estas etiquetas de rotación frecuente.
El modificador .weighted()
se añade automáticamente a las consultas en indicadores sólo si se cumplen las dos condiciones siguientes:
- La métrica de indicador se envía regularmente, de modo que no hay interpolación entre las brechas.
- El intervalo de envío está correctamente definido y configurado.
El Datadog Agent o la integración establecen el intervalo de envío para una métrica en el momento de la admisión. Modifica los intervalos de envío en la página Resumen de métricas.
Modificación del tipo de métrica de Datadog
Aunque normalmente no es necesario, es posible cambiar el tipo de métrica en la página Resumen de métricas:
Ejemplo de caso de uso:
Tienes una métrica app.requests.served
que cuenta las solicitudes cumplidas, pero accidentalmente la has enviado desde StatsD como un GAUGE
. En este caso, el tipo de métrica de Datadog será GAUGE
.
Querías enviar app.requests.served
como una métrica COUNT
de StatsD para la agregación de tiempo. Esto ayudaría a responder a preguntas como “¿Cuántas solicitudes totales se han cumplido en el último día?” consultando sum:app.requests.served{*}
(esto no tendría sentido para un tipo de métrica GAUGE
.)
Te gusta el nombre app.requests.served
, así que en lugar de enviar un nuevo nombre métrica con un tipo de COUNT
más apropiado, podrías cambiar el tipo de app.requests.served
actualizándolo:
- Tu código de envío, llamando a
dogstatsd.increment('app.requests.served', N)
después de que se cumplan N peticiones, y - El tipo en la aplicación de Datadog de la página de resumen de métricas a
RATE
.
Esto provoca que los datos enviados antes del cambio de tipo para app.requests.served
se comporten incorrectamente. Esto se debe a que se almacenaron en un formato que debe interpretarse como un GAUGE
en la aplicación (no como un RATE
). Los datos enviados después del paso 3 se interpretan correctamente.
Si no quieres perder los datos históricos enviados como GAUGE
, crea un nuevo nombre de métrica con el nuevo tipo, dejando inalterado el tipo de app.requests.served
.
Nota: Para checks del Agent, self.increment
no calcula el delta para un contador monótonamente creciente. En su lugar, informa el valor transferido en la ejecución del check. Para enviar el valor delta en un contador monótonamente creciente, utiliza self.monotonic_count
.