2009-03-03 17 views
7

Estoy interesado en saber si hay alguna alternativa a rrdtool para registrar datos de series de tiempo. Estoy mirando algo que puede escalar para una gran cantidad de dispositivos para monitorear.rrd herramienta alternativa para alto volumen

Por lo que he leído sobre este tema, rrdtool está vinculado a E/S cuando lo golpeas con grandes cantidades de datos. Como imagino que esto se escalará a una gran cantidad de dispositivos para monitorear, tengo curiosidad de saber si hay alguna alternativa que no se ahogue con la E/S. Preferencial basado en SQL, pero no necesariamente.

Gracias

+0

Si se trata de E/S de la envolvente, no que sea bueno? Significa que puede tomar una solución de hardware, como RAID, discos de estado sólido y varias máquinas para rastrear datos no relacionados. – JasonSmith

+0

mi punto también ... la pregunta es qué tan bien se está usando el HW ... el uso de la memoria es bastante óptimo ... una base de datos (al final del día) también tiene que escribir cosas en el disco, pero dado que es un propósito mucho más general, dudo que pueda hacerlo tan eficientemente como rrdtool ... –

Respuesta

4

Si el principal problema es el rendimiento de E/S, entonces debe buscar algo como rrdcached, que está disponible en la versión actual (1.4) de las herramientas RRD.

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

El rrdcached combina todas estas escrituras juntas, 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 libres en el sector).

Todas las herramientas RRD funcionarán automáticamente con rrdcached cuando detecten su ejecución (a través de una variable de entorno). Esto les permite disparar descargas cuando sea necesario, por ejemplo cuando se genera un gráfico a partir de los datos.

Si bien el cambio 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 se tiende a utilizar datos RRD en ese tipo de patrón de acceso aleatorio, una base de datos es un poco machacona para el problema. Si bien seguir con RRDTool mantendrá acceso a todo el ecosistema de herramientas que entienden y pueden trabajar con los archivos, lo cual es útil especialmente si ya está familiarizado con él.

2

Un amigo mío hizo un trabajo hace un tiempo en un servidor SQL para almacenar los datos de ronda robin: http://rrs.decibel.org

Sin embargo, sospecho que ya que estás preguntando por "dispositivos para monitorear" , es posible que esté buscando una solución más completa.

+0

Lo encontré en mi investigación. No parecía que me mantuvieran así que era un poco reacio a considerarlo. – SorinV

+0

Acabo de encontrar que también, parece que la última actualización fue 2005. No significa que no funcionaría ahora, simplemente no me tomé el tiempo para extraer el tarball. : - / –

5

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

Tal vez echar un vistazo a

  • rrdcached, una capa de almacenamiento en caché en la parte superior de la RRD
  • whisper, el motor de base de datos detrás graphite
  • opentsdb es un distribuida y escalable base de datos de series temporales (TSDB) por escrito encima de HBase
  • reconnoiter aunque su foco está más en la supervisión
1

Si las operaciones de E/S por segundo son su cuello de botella principal y está utilizando Linux, hay un truco fácil que solo le cuesta la memoria. Use un montaje tmpfs para organizar sus grabaciones RRD.

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


Crear los directorios

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

Crear un sistema de archivos de RAM 500 MB de máxima con 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 

Copiar los viejos ficheros RRD en el nuevo punto de montaje

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

Configurar la aplicación RRD-escritura 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 

Configurar una tarea programada para sincronizar sólo los RRDs modificados en el 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 su guardado RRD fil es en el punto de montaje antes de ¡inicia su aplicación de escritura rrd! Es posible que necesite editar el script de inicio para ese servicio para asegurarse de que los archivos estén allí antes de que comience. Si comienza sin los archivos en su lugar, se crearán nuevos y se confundirá una vez que el directorio de lectura se sobrescriba con los RRD vacíos.

Si en algún momento necesita cambiar el tamaño montan los tmpfs, que puede hacer que sobre la marcha:

bash-4.2# mount -t tmpfs -o remount,size=850m /mnt/rrd-writes 
Cuestiones relacionadas