Monitoreo de tuberías de datos a gran escala
ShareThis está creciendo rápidamente! En los últimos 4 años que he trabajado aquí, hemos crecido de una empresa de una habitación a una compañía de muchas habitaciones. También hemos empezado a obtener todas las ventajas típicas de la puesta en marcha de lujo: comida gratis, oficina de lujo, salidas de empresa, etc.
Las cosas divertidas ocurren cuando creamos valor, pero hay un costo para la ingeniería en términos de complejidad. Ahora generamos terabytes de datos por día en tiempo real. También esperamos ingerir aún más datos en el próximo año o dos; duplicar o triplicar el flujo de datos. Es gratificante cuando hablo con colegas para decirles lo que estamos haciendo y responden con "wow".
Sin embargo, el problema no es la ingestión – herramientas como Kafka, Cassandra, aerospike, BigQuery, etc., hacen que la ampliación de un problema más fácil de lo que era hace 4 años. La dificultad viene cuando alguien pregunta "¿Cómo sabes que los datos allí son correctos?" o "¿Cómo sabes que todos los datos están ahí?"
"Es sólo." – No lo suficientemente bueno.
Para ayudarnos a responder a preguntas como esta, hemos duplicado un seguimiento bastante gratuito a través de todas las canalizaciones de datos. Afortunadamente, nuestro código se basa en un marco común de modo que cuando agregamos supervisión a una biblioteca se agrega dinámicamente a todas las aplicaciones que utilizan esa biblioteca. Muy guay.
Tal vez un pequeño desglose de la tecnología ayudará a los que están tratando de hacer esto en el futuro:
Grafito: Grafito es una "aplicación web basada en Django que renderiza gráficos y Dashboards". Se construye sobre otros dos proyectos, el carbono y el susurro (ambos proyectos forman parte del grafito). El carbono actúa como una capa de agregación y caché que hace que la IU responda. Whisper es una "base de datos de tamaño fijo, similar en diseño y propósito a RRD (Round-Robin-base de datos). Proporciona un almacenamiento rápido y fiable de datos numéricos a lo largo del tiempo. Whisper permite una mayor resolución (segundos por punto) de datos recientes para degradarse en resoluciones más bajas para la retención a largo plazo de datos históricos. "
Codahale: La biblioteca de Codahale en realidad tiene conectores para una variedad de servicios diferentes (como los ganglios). Para nuestros propósitos usamos los conectores de grafito Java y estamos bien para ir. Los objetos métricos se pueden crear dinámicamente y le permitirán registrar estadísticas básicas, histogramas y temporizadores. Hemos configurado la biblioteca para que inicie sesión en un servidor por minuto para que las llamadas se batchen y el tráfico permanezca bajo.
Seyren: Usamos una versión modificada de Este proyecto Docker internamente con nuestros componentes liados adentro. Lo apuntamos a grafito y aflojamos usando variables de entorno de sistema. Una vez en la UI, creamos cheques con métricas de grafito (a menudo usando parte de la funcionalidad bien documentada) para alertar a nuestro canal flojo.
Espero que esto ayude! Feliz hacking