2011-08-17 16 views
14

Envío un mensaje cada vez que un usuario se conecta a mi sitio.acumulación de valor en Graphite

Con este formato:

"user_login 1 13xxxxxxx" (key value timestamp) 

Mi problema es grafito dame un gráfico con sólo una línea con el valor "1", cada minuto. Envío un número aleatorio de mensajes cada minuto (entre 6 y 60), pero creo que Graphite limita el primer (¿o el último?) Mensaje, para mostrar un valor.

¿Cómo hacer para tener una suma de cada mensaje, cada minuto?

Respuesta

3

uso sumSeries target = sumSeries (graphite.counterName) o función resumen si desea sumar más de más de un minuto

7

Usted puede estar interesado en el funcionamiento de statsd o statsite en el servidor de grafito. Ese software agregará todas las estadísticas por un período de tiempo configurable, y escribirá el resultado en grafito.

Eche un vistazo a github.com/etsy/statsd (en node.js) y github.com/kiip/statsite (python clone). El statsd de Etsy contiene algunos ejemplos de código sobre cómo usarlo.

+0

Esto es lo que terminé haciendo. Es un poco molesto tener otro servicio en ejecución, pero es un pequeño servicio. –

+1

Y en realidad usé la versión C (más reciente) de statsite: https://github.com/armon/statsite. Lo único molesto fue que tuve que cambiar el archivo predeterminado "sink" para soltar "statsite.counts". prefijo que estadísticas antes de cualquier estadística lo envíes por defecto. –

1

Use cumulative function en su serie.

Por defecto, cuando se dibuja un gráfico, y la anchura de la gráfica de la píxeles es menor que el número de puntos de datos que se representarán gráficamente, promedios de grafito el valor en cada pixel. La función acumulativa() cambia la función de consolidación a suma del promedio.

11

También podría probar el servicio de agregación de carbono para que las métricas se agreguen cuando se recopilan en lugar de en la interfaz de usuario Graphite. Consulte http://graphite.readthedocs.org/en/latest/config-carbon.html#aggregation-rules-conf para la configuración de reglas de agregación. Tenga en cuenta que debe enviar las métricas al puerto de servicio de agregación de carbono que se ejecuta en un puerto diferente al puerto de recolección de carbono normal.

3

Jari es correcto, el agregador de carbón fue escrito específicamente para esto.

Asegúrese de que utiliza una función suma en la agregación-rules.conf, como este:

bpu.<cluster>.<account>.<metric>_sum (1) = sum bpu.<cluster>.<account>.<metric>_sum 
1

por defecto, el grafito solo almacena el último valor enviado para cualquier métrica entrante en la granularidad de retención mínima (no valor medio). si desea agregar agregados, la solución común es usar statsd.

Sin embargo, también puede utilizar el acumulador de carbón. sólo asegúrese de que usted está enviando las métricas para el puerto de línea agregador, a continuación, actualice la agregación-rules.conf con una regla como la siguiente:

user_login (10) = sum user_login$ 

nota: esto supone que el período de retención mínimo es todavía 10 segundos (por defecto) puede confirmar que mirando en almacenamiento schemas.conf

para una explicación más larga, ver: Why use statsd when graphite's Carbon aggregator can do the same job?

Cuestiones relacionadas