Graphite es una herramienta de monitorización de código abierto que almacena datos numéricos de series temporales y genera gráficos bajo demanda. Fue desarrollada en Orbitz Worldwide por Chris Davis y lanzada como software de código abierto en 2008. [ 1 ] Graphite no recopila métricas por sí mismo; recibe datos enviados por agentes de recopilación como collectd , StatsD o Telegraf, los almacena en su base de datos Whisper y proporciona una API web para consultar y generar gráficos. [ 4 ]
Graphite se utiliza en la producción por empresas como Ford Motor Company , Booking.com , GitHub , Etsy , The Washington Post y Electronic Arts . [ 4 ] Influyó en el diseño de sistemas de monitorización posteriores; Grafana se creó originalmente como una interfaz de panel de control para Graphite, y Prometheus adoptó una convención de nomenclatura de métricas similar. [ 4 ]
Arquitectura
El grafito consta de tres componentes: [ 4 ] [ 5 ]
Carbón
Carbon es un conjunto de demonios escritos en Python que utilizan el marco de red Twisted . Carbon escucha los datos de métricas entrantes en sockets TCP o UDP (por defecto en el puerto 2003 usando un protocolo de texto plano, o en el puerto 2004 usando un protocolo pickle). Almacena los puntos de datos en memoria y los guarda en archivos de la base de datos Whisper en disco. En entornos de alto volumen, se pueden ejecutar varios procesos de retransmisión y caché de Carbon para distribuir la carga entre los servidores. [ 4 ]
Susurro
Whisper es un formato de archivo de base de datos de tamaño fijo para datos de series temporales, similar en concepto a los archivos round-robin de RRDtool . Cada archivo Whisper almacena una única métrica en múltiples niveles de retención (por ejemplo, resolución de un minuto para 24 horas y resolución de una hora para un año). Cuando llega un punto de datos, Whisper lo escribe en todos los archivos aplicables. A diferencia de RRDtool, que utiliza interpolación ponderada cuando varios puntos de datos caen dentro del mismo intervalo, Whisper utiliza un enfoque de "el último valor gana", sobrescribiendo cualquier valor anterior en el mismo intervalo de tiempo. [ 6 ]
Debido a que los archivos de Whisper tienen un tamaño fijo (se asignan al crearlos), los requisitos de almacenamiento son predecibles y la base de datos no crece con el tiempo. Sin embargo, los cambios de esquema requieren recrear archivos, y los patrones de E/S aleatorios de muchos archivos pequeños pueden sobrecargar el rendimiento del disco en instalaciones grandes. [ 4 ]
Aplicación web Graphite
La aplicación web, desarrollada con Django , proporciona una API HTTP para consultar métricas y generar gráficos. Admite un lenguaje de consulta basado en funciones para transformar y combinar datos de series temporales (promedios, sumas, aplicación de medias móviles, cálculo de derivadas y operaciones similares). Los gráficos se pueden generar como imágenes PNG mediante la biblioteca Cairo o como datos JSON para su uso por paneles externos como Grafana . [ 4 ]
Alternativas y sucesores
Se han desarrollado varios sistemas de almacenamiento de series temporales como alternativas al backend Whisper de Graphite:
- Cianita y relé de carbono-c : sustitutos directos del carbono para un mayor rendimiento.
- InfluxDB : una base de datos de series temporales diseñada específicamente para recibir métricas en formato Graphite.
- Prometheus : un sistema de monitorización basado en solicitudes, con su propio motor de almacenamiento y lenguaje de consulta (PromQL).
- Grafana Mimir : un sistema de gestión de métricas escalable horizontalmente y compatible con Prometheus, desarrollado por Grafana Labs.
Grafana reemplazó en gran medida el panel web integrado de Graphite como la capa de visualización preferida, aunque sigue siendo compatible con Graphite como fuente de datos. [ 4 ]
Véase también
Referencias
- 1 2 Asay, Matt (27 de junio de 2008). "Orbitz allana el camino a las contribuciones de código abierto empresariales" . CNET . Recuperado el 29 de junio de 2016 .
- ↑ "1.1.10 — Documentación de Graphite 1.2.0" . 23 de mayo de 2022. Consultado el 1 de junio de 2026 .
- ↑ "Proyecto Graphite" . GitHub . Consultado el 10 de marzo de 2026 .
- 1 2 3 4 5 6 7 8 Dixon, Jason (2014). Monitoring with Graphite . O'Reilly Media. ISBN 978-1-4919-1643-8.
- ↑ Joshi, Nishes (2012). Interoperabilidad en sistemas de monitoreo e informes (tesis de maestría). Universidad de Oslo . Recuperado el 10 de marzo de 2026 .
- ↑ Trubetskoy, Gregory (4 de mayo de 2015). "Registro de series temporales: Graphite frente a RRDtool" . Recuperado el 10 de marzo de 2026 .
Enlaces externos
- Documentación del grafito
- Graphite en GitHub
- Software de series temporales
- Software libre programado en Python
- Software que utiliza la licencia Apache.
- Software gratuito de gestión de redes
- Software de 2008