Cómo obtener el menor recuento posible en el grafito.

require 'statsd' statsd = Statsd.new('localhost', 8125).tap{|sd| sd.namespace = 'account'} 1.times do statsd.increment 'hitcount4' end sleep 5 5.times do statsd.increment 'hitcount4' end sleep 10 10.times do statsd.increment 'hitcount4' end 

Estoy usando ruby ​​gem statsd-ruby

ejecuté la secuencia de comandos anterior, se ejecuta con éxito, y aparece el gráfico, pero solo puedo ver una línea sobre el eje x y nada (sin valor para el eje y), ¿cómo obtener la gráfica de la secuencia de comandos anterior?

Quiero grabar cada llamada de incremento.

contenidos de /opt/graphite/statsd/local.js

 { graphitePort: 2003 , graphiteHost: "127.0.0.1" , port: 8125 , backends: [ "./backends/graphite", "./backends/repeater", "./backends/console" ] , repeater: [ { host: '10.1.2.15', port: 8125 } ] , graphite: { legacyNamespace: false, globalPrefix: "rtpg.testing_server_2" } , flushInterval: 10 } 

contenido de /opt/graphite/conf/storage-schemas.conf

 [carbon] pattern = ^carbon\. retentions = 60:90d [stats] pattern = ^stats.* retentions = 1s:6h,10min:10d,10min:5y [rtpg] pattern = ^rtpg.* retentions = 1s:7d,10s:21d,60s:5y 

contenido de /opt/graphite/conf/storage-aggregation.conf

 [rtpg] pattern = .* xFilesFactor = 0 aggregationMethod = sum [sum] pattern = \.count$ xFilesFactor = 0 aggregationMethod = sum 

con,

localhost: 8090 / render? target = rtpg.testing_server_2.counters.account.hitcount4.count & format = raw

salida en el navegador =>

………. 0,0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0, 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0, 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0, 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0, 0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0

con

//localhost:8090/render?target=rtpg.testing_server_2.counters.account.hitcount4.count&format=json

salida =>

……………….. [0.0, 1381608024], [0.0, 1381608025], [0.0, 1381608026], [0.0, 1381608027], [0.0, 1381608028], [0.0, 1381608029], [0.0, 1381608030], [0.0, 1381608031], [0.0, 1381608032], [0.0, 1381608033], [0.0, 1381608034], [0.0, 1381608035], [0.0, 1381608036], [0.0 , 1381608037], [0.0, 1381608038], [0.0, 1381608039], [0.0, 1381608040], [0.0, 1381608041], [0.0, 1381608042], [0.0, 1381608043], [0.0, 1381608044], [0.0, 1381608045 ], [0.0, 1381608046], [0.0, 1381608047], [0.0, 1381608048], [0.0, 1381608049], [0.0, 1381608050], [0.0, 1381608051], [0.0, 1381608052], [0.0, 1381608053], [0.0, 1381608054], [0.0, 1381608055], [0.0, 1381608056]]}]

Actualicé Flush Intervel (statsd) a 6000, y actualicé

/opt/graphite/conf/storage-schemas.conf

 [carbon] pattern = ^carbon\. retentions = 60:90d [rtpg] pattern = ^rtpg.* retentions = 1m:6h,1m:7d,10m:5y 

y corrí whisper-resize.py y actualicé el nombre del contador a ‘hitcount6’ en mi script y ejecuté el script nuevamente, se creó un nuevo gráfico, el problema sigue existiendo, en realidad lo que quiero es grafito para mostrar el recuento exacto como primer incremento, luego sueño de 5 minutos y luego de 5 incrementos y así sucesivamente, no quiero promediar mis datos, finalmente crearé un informe xml de cuántas veces se invocó el método de incremento. $ whisper-info.py /opt/graphite/storage/whisper/rtpg/testing_server_2/counters/account/hitcount6/count.wsp

 maxRetention: 604800 xFilesFactor: 0.0 aggregationMethod: sum fileSize: 120988 Archive 0 retention: 604800 secondsPerPoint: 60 points: 10080 size: 120960 offset: 28 

introduzca la descripción de la imagen aquí

introduzca la descripción de la imagen aquí

Larga historia corta: no puedes vaciar Statsd en un intervalo inferior a 1 segundo cuando usas Graphite como backend.

Debido a que ha especificado un intervalo de flujo de 10 ms, StatsD descargará el punto de datos agregado cada 10 milisegundos de los cuales Graphite eliminará 99 de 100 (todos menos uno de los flujos de 10 ms).

En primer lugar , configurarlo a este nivel derrota parte del propósito de Statsd en el sentido de que está destinado a actuar como un agregador que puede reducir la carga en el grafito. En segundo lugar , establecerlo en cualquier valor inferior a 1 segundo provocará la pérdida de datos métricos. Esto se debe a que la mejor precisión que puede almacenar en Graphite es de 1 segundo. Así que enviarás 100 puntos de datos a grafito por segundo y Graphite solo almacenará 1 de ellos. Tendría que ser bastante afortunado para ver los datos (ya que tomará la última métrica (sobreescribir a los demás) para el intervalo.

Debe hacer coincidir el intervalo de descarga en StatsD con la configuración de esquema de precisión más precisa en Graphite (en la configuración de esquema de almacenamiento). Lo más bajo que puede ir es un segundo, pero se recomiendan 10 segundos para que StatsD pueda realizar un importante trabajo de agregación en su nombre.

Le recomendaría cambiar la precisión más alta (la primera) a 10 segundos , es decir, 10s:6h y 10s:7d para las retenciones (y el Statsd flushInterval a 10000 ms) para que Statsd y Graphite se alineen bien.

A continuación , realice el cambio anterior y luego cambie el tamaño de los archivos de susurros para asegurarse de que se hayan realizado los ajustes. Quizás haya cambiado la configuración del esquema o agregación de grafito después de almacenar las métricas (en el almacenamiento de whisper = graphite) y aún necesita eliminar los archivos .wsp para la métrica (el grafito los recreará) o ejecutar whisper-resize.py . Los archivos de susurros están en /graphite/storage/whisper/ .

Por último , validar la configuración . Puede verificar la configuración contra algunos datos de susurros ejecutando whisper-info.py en un archivo .wsp. Encuentre el archivo .wsp para una de sus métricas en / graphite / storage / whisper / Run: whisper-info.py my_metric_data.wsp . La salida de whisper-info.py debería brindarle más información sobre cómo funcionan las configuraciones de almacenamiento.

Intereting Posts