Pregunta

Estoy interesado en saber si hay alguna alternativa a rrdtool para registrar datos de series de tiempo. Estoy buscando algo que se pueda escalar para monitorear una gran cantidad de dispositivos.

Por lo que leí sobre este tema, rrdtool está vinculada a E / S cuando la golpeas con grandes cantidades de datos. Ya que imagino que esto se puede escalar a una gran cantidad de dispositivos para monitorear, tengo curiosidad por ver si hay alguna alternativa que no interfiera con la E / S. Preferible basado en SQL, pero no necesariamente.

Gracias

¿Fue útil?

Solución

Si la preocupación principal es el rendimiento de E / S, entonces debes buscar algo como rrdcached que está disponible en la versión actual (1.4) de RRDTools.

La sobrecarga de E / S no es una función de los datos que se escriben, después de cada valor 8 bytes por fuente de datos. El ancho de banda de E / S proviene del hecho de que se debe leer todo un sector (normalmente 4k) antes de escribirlo. De repente, para escribir 8 bytes, ha leído / escrito 8k bytes.

El rrdcached combina todos estos escritos juntos, de modo que cuando se actualiza un RRD, se reduce la proporción de datos útiles (valores de DS reales) a datos desperdiciados (los bytes de repuesto en el sector).

Todas las herramientas de RRD funcionarán automáticamente con rrdcached cuando detecten que se está ejecutando (a través de una variable de entorno). Esto les permite desencadenar descargas cuando sea necesario, por ejemplo al generar un gráfico a partir de los datos.

Mientras que cambiar a una solución basada en SQL puede ayudar a considerar la E / S adicional que se requerirá para admitir SQL. Teniendo en cuenta que no tiende a utilizar los datos de RRD en ese tipo de patrón de acceso aleatorio, una base de datos es un poco un martillo para el problema. Si bien seguir con RRDTool mantendrá el acceso a todos los ecosistemas de herramientas que comprenden y pueden trabajar con los archivos, lo cual es útil especialmente si ya está familiarizado con él.

Otros consejos

Hay algunas bases de datos de series temporales que tienen una alta disponibilidad y / o escalabilidad como objetivos.

Tal vez eche un vistazo a

  • rrdcached , una capa de almacenamiento en caché en la parte superior de rrd
  • susurro , el motor de base de datos detrás de graphite
  • opentsdb es una Base de Datos de Series de Tiempo (TSDB) distribuida y escalable escrita en la parte superior de HBase
  • reconocimiento aunque se enfoca más en el monitoreo

Un amigo mío hizo algún trabajo hace un tiempo en un backend SQL para almacenar datos de round robin: http: // rrs .decibel.org

Sin embargo, sospecho que, dado que está preguntando acerca de los dispositivos para monitorear " ;, puede que esté buscando una solución más completa.

Si las operaciones de E / S por segundo es su principal cuello de botella y está usando Linux, hay un truco fácil que solo le cuesta memoria. Use un soporte tmpfs para organizar sus escrituras RRD.

Todas las operaciones de E / S se realizarán en la memoria y no incurrirán en ninguno de los cuellos de botella que se producen al hacer la E / S del disco (esto es incluso más rápido que usar discos de estado sólido). Luego puede usar un trabajo cron y rsync para copiar solo los RRD modificados al disco una vez cada pocos minutos.


Crear los directorios

bash-4.2# mkdir /mnt/rrd-reads
bash-4.2# mkdir /mnt/rrd-writes

Cree un sistema de archivos de RAM máximo de 500MB con las opciones apropiadas

bash-4.2# mount -t tmpfs -o size=500m,mode=0750,uid=collectd,gid=collectd none /mnt/rrd-writes
bash-4.2# echo "none /mnt/rrd-writes tmpfs size=500m,mode=0750,uid=collectd,gid=collectd 1 2" >> /etc/fstab

Copie los archivos RRD antiguos en el nuevo punto de montaje

bash-4.2# cp -a /var/lib/collectd/rrd/* /mnt/rrd-writes

Configure su aplicación de escritura rrd para escribir en el nuevo punto de montaje

bash-4.2# sed -i -e 's/DataDir "\/var\/lib\/collectd\/rrd"/DataDir "\/mnt\/rrd-writes"/' /etc/collectd/collectd.conf

Configura un trabajo cron para sincronizar solo los RRD modificados al disco una vez cada 2 minutos

bash-4.2# echo "*/2 * * * * collectd rsync -a /mnt/rrd-writes/* /mnt/rrd-reads/ ; sync" > /etc/cron.d/rrd-sync

¡No olvide copiar los archivos RRD guardados en el punto de montaje antes para iniciar su aplicación de escritura rrd! Es posible que deba editar el script de inicio de ese servicio para asegurarse de que los archivos estén allí antes de que empiecen. Si comienza sin los archivos en su lugar, se crearán otros nuevos y quedará muy confundido una vez que el directorio de lectura se sobrescriba con RRD vacíos.

Si en algún momento necesita cambiar el tamaño del montaje tmpfs, puede hacerlo sobre la marcha:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top