485 - La alternativa a Elasticsearch y otras fricadas
ElasticSearch, ZincSearch y ZincObserve son tres servicios que puedes desplegar en #linux y para guardar y consultar gran cantidad de información.
Cada vez tengo mas herramientas propias y de terceros, que me permite conocer información de lo mas variopinto. Del estado de mis copias de seguridad, hasta los retweets que hago de determinadas cuentas. En un episodio anterior del podcast te conté, que para estar informado de todo esto estaba utilizando Mattermost, una herramienta similar a Slack, pero mas potente, desde mi punto de vista, donde me enviaba las notificaciones. Pues bien, he decidido cambiarlo y reemplazarlo por ZincObserve, un ElasticSearch, implementado en Rust, y que tiene determinadas ventajas sobre el mismo. Así, que en este episodio del podcast, te quiero hablar sobre esta alternativa a ElasticSearch y otras fricadas. Por supuesto, empezaré por explicarte que es esto de ElasticSearch.
La alternativa a Elasticsearch y otras fricadas
El trafondo
Sobre ElasticSearch
Piensa en tu casa como si fuera una enorme biblioteca, con miles de libros y revistas en diferentes estanterías. Pero en lugar de tener que buscar a mano cada libro, imagina que tienes una asistente personal que puede encontrar cualquier libro que necesites en cuestión de segundos. Esa es básicamente la función de ElasticSearch: es un motor de búsqueda de texto completo que te ayuda a encontrar información específica en grandes cantidades de datos.
Por ejemplo, supongamos que trabajas en una tienda en línea de ropa y tienes una base de datos con miles de productos. Si un cliente está buscando una camisa roja de manga corta en tu sitio web, ElasticSearch puede ayudarte a encontrar rápidamente todas las camisas rojas de manga corta en tu inventario y mostrarlas al cliente. Y lo mejor de todo es que ElasticSearch es muy rápido y escalable, lo que significa que puede manejar grandes cantidades de datos sin problemas.
¿Pero estamos hablando de una base de datos? ElasticSearch no es una base de datos en sí misma, sino más bien un motor de búsqueda y análisis de texto completo. Se basa en el concepto de «índices», que son como contenedores de datos que se organizan para un rápido acceso y búsqueda.
Para ponerlo en términos más cotidianos, puedes pensar en los índices como si fueran los índices de un libro. Cuando buscas algo en un libro, normalmente comienzas consultando su índice, que te muestra en qué página puedes encontrar lo que buscas. Del mismo modo, ElasticSearch utiliza índices para almacenar y buscar información en grandes cantidades de datos de una manera eficiente.
ZincSearch y ZincObserve
Pensé, y así lo comenté en el podcast, que te había hablado sobre ZincSearch en el canal de YouTube, pero lo cierto es que no es así. Esto tiene arreglo, en los próximos días dedicaré un vídeo a esto. En fin.
Sea como fuere, ZincSearch es un ElasticSearch pero ligero, pero mucho mas ligero, y de verdad que esto se nota y mucho. Aunque tiene algunas claras desventajas. Y es que, ElasticSearch tiene como compañero a Kibana, que se puede encargar de hacer potentes Dashboards, mientas que ZincSearch, no lo tiene. Sin embargo, a pesar de eso, me sigue pareciendo mucho mejor ZincSearch, para el uso que yo le estoy dando, dado que no se lleva por delante mi VPS, cosa, que si que sucedería, sin lugar a dudas con ElasticSearch.
Inicialmente lo aposté todo a esta herramienta. Y comencé a enviar toda la información allí en lugar de enviarla a Mattermost. Sin embargo, quería ir un paso mas allá, y aunar en esta herramienta los logs.
ZincObserve
ZincObserve es una plataforma de observabilidad nativa de la nube diseñada específicamente para el registro de logs, métricas, trazas y análisis, y está diseñada para funcionar a escala de petabytes.
Es muy simple y fácil de operar en comparación con Elasticsearch, que requiere entender y ajustar una serie de configuraciones, y que se puede poner en funcionamiento en menos de 2 minutos.
Es un reemplazo directo de Elasticsearch si solo estás ingresando datos usando APIs y buscando información con Kibana (Kibana no es compatible ni requerido con ZincObserve. ZincObserve proporciona su propia interfaz de usuario que no requiere una instalación separada, a diferencia de Kibana).
Puedes reducir tus costos de almacenamiento de logs en ~140x en comparación con Elasticsearch utilizando ZincObserve. A continuación se muestran los resultados cuando enviamos logs desde nuestro clúster de producción de Kubernetes a Elasticsearch y ZincObserve utilizando FluentBit. ZincObserve almacenó los datos en Amazon S3 y Elasticsearch almacenó los datos en volúmenes de Amazon EBS.
En pocas palabras, ZincObserve es una herramienta de monitoreo y análisis de infraestructura de TI que se enfoca en logs, métricas y trazas. Permite a los equipos de operaciones y desarrollo rastrear y analizar el rendimiento y la disponibilidad de sus sistemas y aplicaciones, lo que les permite tomar decisiones informadas y resolver problemas rápidamente. ZincObserve es una plataforma nativa de la nube que está diseñada para funcionar a gran escala, lo que significa que es capaz de manejar grandes cantidades de datos de logs y métricas. Además, es fácil de operar y no requiere ajustes complicados de configuración. En resumen, ZincObserve es una herramienta valiosa para los equipos de TI que necesitan monitorear y analizar el rendimiento de sus sistemas y aplicaciones, especialmente en entornos de nube y a gran escala.
ZincObserve es un sistema flexible y altamente escalable que se puede utilizar para analizar y visualizar grandes volúmenes de datos, independientemente del origen de esos datos. En teoría, es posible utilizar ZincObserve para monitorear y analizar datos en cualquier industria o área que requiera análisis de datos a gran escala.
Característiicas
Estas son algunas de las características de ZincObserve,
Algunas de las características son:
- Interfaz gráfica de usuario avanzada integrada
- Es un reemplazo directo de Elasticsearch
- Un solo archivo binario para la instalación y ejecución. Los binarios están disponibles para múltiples plataformas.
- SQL para consultas sofisticadas, no es necesario aprender otro lenguaje de consulta.
- Funciones de scripting integradas para la ingestión y consulta para ayudar a capacidades avanzadas como enriquecimiento, ocultamiento, reducción de logs, cumplimiento, etc.
- Esquema dinámico
- Autenticación fuera de la caja
- Almacenamiento en disco local, S3, MinIO, GCS
- Mucho más fácil de operar
- Actualizaciones sin interrupciones
- Alta disponibilidad y clustering
Los logs
Como te decía, uno de los usos que le quería dar a ZincObserve era precisamente la integración de todos los logs de mis servicios en Docker, que ciertamente son unos pocos. En este sentido, necesitaba alguna herramienta que fuera capaz de hacer este trabajo. Es decir, que fuera capaz de enviar todos los logs de Docker a esta herramienta. Estuve probando diferentes herramientas hasta que di con Vector.
Vector es una herramienta de recolección, transformación y envío de datos de log diseñada para proporcionar una alternativa moderna y de alto rendimiento a las soluciones tradicionales de recolección de logs. Vector es una herramienta de código abierto que se puede utilizar para integrar, transformar y enrutar datos de log desde múltiples fuentes a múltiples destinos, incluyendo sistemas de almacenamiento de log, bases de datos, servicios de métricas y mucho más. Vector admite una amplia variedad de entradas y salidas, incluyendo archivos de registro, sockets TCP/UDP, protocolos syslog, bases de datos, servicios web y más. Además, Vector se integra bien con otras herramientas de infraestructura de TI y proporciona una interfaz simple y fácil de usar para la configuración y el monitoreo
Igual que te he hablado sobre un futuro vídeo de ZincSearch y ZincObserve, también en el canal de YouTube te hablaré sobre esta herramienta.
Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast.
Muy interesante estas herramientas que mencionas en este post. Actualmente estoy en a búsqueda de una solución para el envío e ingesta masiva de logs sin tener que pasar por ELK stack. En mi caso las máquinas son servidores Ubuntu con Apache/NGINX y logs de sistema y de una aplicación desarrollada inhouse.
¿Es posible usar esta solución que has mencionado? ¿qué componentes se deben instalar en el recolector de logs y qué otros componentes en el resto de máquinas que envían los logs? ¿se envían de manera encriptada?
Hola, en mi caso para enviar los logs de Docker a ZincObserve he utilizado Vector, que es muy sencillo de configurar, al menos en el caso de Docker. También tiene configuración para Syslog, con lo que por la misma podrás enviarlo. El envío de Vector a ZincObserve es también realmente sencillo de configurar. En unos días publicaré un artículo para mostrar como lo hice.
En el caso de syslog, puedes encontrar la documentación en https://vector.dev/docs/reference/configuration/sources/syslog/.
Un saludo.
¡Gracias por la información!