He instalado Graphite a través de Puppet ( https://forge.puppetlabs.com/dwerder/graphite ) con nginx y PostgresSQL. Cuando le envío datos manualmente, crea la métrica pero todos sus puntos de datos son "Ninguno" (también conocido como nulo). Esto sucede también si ejecuto el ejemplo-client.py enviado con Graphite.
echo "jakub.test 42 $(date +%s)" | nc 0.0.0.0 2003 # Carbon listens at 2003
# A minute or so later:
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | head -n1
Sun May 4 12:19:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | tail -n1
Mon May 5 12:09:00 2014 None
$ whisper-fetch.py --pretty /opt/graphite/storage/whisper/jakub/test.wsp | grep -v None | wc -l
0
Y:
$ python /opt/graphite/examples/example-client.py
# Wait until it sends two batches of data ...
$ whisper-fetch.py /opt/graphite/storage/whisper/system/loadavg_15min.wsp | grep -v None | wc -l
0
Estos son, según ngrep, los datos que llegan al puerto [desde un intento posterior] (línea 3):
####
T 127.0.0.1:34696 -> 127.0.0.1:2003 [AP]
jakub.test 45 1399362193.
####^Cexit
23 received, 0 dropped
Esta es la parte relevante de /opt/graphite/conf/storage-schemas.conf
:
[default]
pattern = .*
retentions = 1s:30m,1m:1d,5m:2y
¿Alguna idea de lo que está mal? Las propias métricas y datos de Carbon se muestran en la interfaz de usuario. ¡Gracias!
Entorno: Ubuntu 13.10 Saucy, grafito 0.9.12 (a través de pip).
PD: He escrito sobre mis intentos de solución de problemas aquí: Graphite muestra métricas pero no hay datos - Solución de problemas
ACTUALIZACIÓN :
- Los puntos de datos en los archivos de susurro solo se recuperan cada 1m min incluso si la política de retención especifica una precisión más alta como "1s" o "10s".
- Solución alternativa para los datos que se ignoran: utilice un esquema de agregación con
xFilesFactor = 0.1
(en lugar de 0.5) o establezca la precisión más baja en 1 m en lugar de <número entre 1-49> s. - vea los comentarios debajo de la respuesta aceptada o la pregunta de Respuestas de grafito. Según los documentos : "xFilesFactor
debe ser un número de coma flotante entre 0 y 1, y especifica qué fracción de las ranuras del nivel de retención anterior debe tener valores no nulos para agregar a un valor no nulo. El valor predeterminado es 0.5 " . Por lo tanto, parece que sin tener en cuenta la precisión especificada de 1s, los datos se agregan a 1 minuto y terminan siendo Ninguno porque menos del 50% de los valores en el período de minutos no son Ninguno.
SOLUCIÓN
Entonces @jlawrie me llevó a la solución. Resulta que los datos están realmente allí, pero están agregados a nada, la razón es doble:
- Tanto la interfaz de usuario como la búsqueda de susurro muestran datos agregados con la máxima precisión que abarca todo el período de consulta, que por defecto es de 24 h. Es decir, cualquier cosa con retención <1d nunca se mostrará en la interfaz de usuario o buscará a menos que seleccione un período más corto. Dado que mi período de retención de 1s fue de 30 minutos, tendría que seleccionar un período de <= últimos 30 minutos para ver realmente los datos sin procesar con la mayor precisión que se recopila.
- Al agregar datos (de 1s a 1min en mi caso), Graphite requiere por defecto que el 50% (xFilesFactor = 0.5) de los puntos de datos en el período tengan valor. Si no, ignorará los valores existentes y los agregará a Ninguno. Entonces, en mi caso, necesitaría enviar datos al menos 30 veces en un minuto (30 es el 50% de 60s = 1 minuto) para que se muestren en el valor agregado de 1 minuto. Pero mi aplicación solo envía datos cada 10 segundos, por lo que solo tengo 6 de los 60 valores posibles.
=> la solución es cambiar la primera precisión de 1s a 10s y recordar seleccionar un período más corto cuando quiera ver los datos sin procesar (o extender su retención a 24h para mostrarlos por defecto).