Graphite es un sistema de gráficos en tiempo real altamente escalable y una herramienta de monitoreo a nivel empresarial. Se utiliza para recopilar información del sitio web en tiempo real y realizar estadísticas, y puede recopilar diversa información sobre el estado operativo del servicio del sitio web.
¿Quién debería utilizar Grafito?
Cualquiera que quiera realizar un seguimiento de cualquier valor numérico a largo plazo. Si tiene un número que puede cambiar con el tiempo y es posible que desee representar gráficamente ese valor a lo largo del tiempo, entonces Graphite podría satisfacer sus necesidades.
Específicamente, Graphite está diseñado para manejar datos de series de tiempo numéricas. Por ejemplo, Graphite es excelente para representar gráficamente los precios de las acciones porque son números que cambian con el tiempo. Ya sean unos pocos puntos de datos o docenas de métricas de rendimiento de miles de servidores, Graphite es para usted. Como beneficio adicional, no es necesario que sepas los nombres de estas cosas de antemano (¿quién quiere mantener una configuración tan grande?); simplemente envías un nombre de métrica, una marca de tiempo y un valor, y Graphite se encarga del resto.
¿Qué tan escalable es Graphite?
Desde la perspectiva de la CPU, Graphite se escala horizontalmente tanto en el frontend como en el backend, lo que significa que simplemente puede agregar más máquinas para obtener un mayor rendimiento. También es tolerante a fallas, es decir, perder una máquina backend causará una pérdida mínima de datos (independientemente de lo que esa máquina tenga almacenada en la memoria caché) y no dañará el sistema si le queda suficiente capacidad para manejar la carga.
Desde una perspectiva de E/S, bajo carga, Graphite realizará muchas operaciones pequeñas de E/S en muchos archivos diferentes muy rápidamente. Esto se debe a que cada métrica diferente enviada a Graphite se almacena en su propio archivo de base de datos, similar a la cantidad de herramientas creadas sobre RRD (drraw, Cacti, Centreon, etc.). De hecho, Graphite utilizó inicialmente RRD para almacenamiento hasta que surgieron limitaciones fundamentales que requirieron un nuevo motor de almacenamiento.
La alta capacidad (miles de métricas diferentes actualizadas por minuto) casi requiere una buena matriz RAID y/o SSD. Si el disco no puede seguir el ritmo de la gran cantidad de pequeñas escrituras que se producen (sólo unos pocos bytes por punto de datos, pero la mayoría de los discos estándar no pueden manejar más de unos pocos miles de operaciones de E/S por segundo, incluso si son pequeño), los datos entrantes del backend de Graphite se almacenarán en caché. Cuando esto sucede, el motor de base de datos de Graphite susurra al permitir que Carbon escriba múltiples puntos de datos a la vez, aumentando así el rendimiento general a expensas de almacenar en caché el exceso de datos en la memoria hasta que se puedan escribir.
Graphite también admite backends de almacenamiento alternativos que pueden cambiar significativamente estas características.
¿Qué tan en tiempo real es el gráfico?
Tiempo muy real. Incluso bajo una carga pesada, cuando la cantidad de métricas entrantes por intervalo de tiempo es mucho mayor que la velocidad a la que el sistema de almacenamiento puede realizar operaciones de E/S, y una gran cantidad de puntos de datos se almacenan en caché en la canalización de almacenamiento (consulte la explicación de la pregunta anterior). ), Graphite aún puede dibujar gráficos en tiempo real. El truco es que cuando la aplicación web Graphite recibe una solicitud para dibujar el gráfico, recupera los datos del disco y del caché previo al almacenamiento (el caché puede distribuirse si tiene varios servidores backend) y combina las dos fuentes de datos. Combinados para crear un gráfico en tiempo real.
¿Quién ya utiliza Graphite?
Graphite fue desarrollado internamente por Orbitz, donde se utiliza para visualizar una variedad de datos operativos clave, incluidas métricas de aplicaciones, métricas de bases de datos, ventas y más. Al momento de escribir este artículo, el sistema de producción de Orbitz puede procesar aproximadamente 160.000 métricas diferentes por minuto, ejecutándose en dos servidores Sun niagra-2 en una SAN de alta velocidad.
¿En qué está escrito el grafito?
La aplicación web Graphite está construida sobre el marco web Django y utiliza el kit de herramientas GUI de JavaScript ExtJS. La representación de gráficos se realiza utilizando la biblioteca de gráficos de Cairo. El backend y la base de datos están escritos en Python puro.
¿Quién escribirá y mantendrá Graphite?
Graphite fue desarrollado originalmente por Chris Davis de Orbitz. Orbitz ha sido durante mucho tiempo parte de la comunidad de código abierto y ha lanzado otros productos desarrollados internamente.
Actualmente, Graphite es desarrollado por un equipo de voluntarios de la organización Graphite-Project GitHub.