Introducción a Elasticsearch

  En una entrada anterior de la presente bitácora se ha hablado de Kibana, el complemento informático de Elasticsearch que permite ver los datos de este último y navegar por el Elastic Stack (plataforma de búsqueda que busca, analiza y visualiza los datos de cualquier fuente, en cualquier formato).
  La presente entrada profundizará en la herramienta Elasticsearch y su inclusión en Elastic Stack.
  Como se ha explicado por encima anteriormente, Elasticsearch es un motor de búsqueda con capacidades analíticas que permite procesar grandes volúmenes de datos en tiempo real, permitiendo indexar cualquier tipo de dato (estructurado o no estructurado), recuperarlo mediante búsquedas avanzadas y visualizarlo gráficamente. 
  Se trata de una tecnología de código abierto que se adapta a las necesidades de cada proyecto, y cuya versión con suscripción incorpora soporte y funcionalidades avanzadas.

ELASTICK STACK

  Elasticsearch es parte de la Plataforma ELK Stack (o Elastic Stack), que se compone del mencionado buscador, de Logstash (tubería de procesamiento de datos del lado del servidor que ingiere datos de una multitud de fuentes simultáneamente, los transforma y luego los envía a un "escondite") y Kibana, del que ya se ha hablado. Todos estos programas son de código abierto.
  La evolución de este soporte lógico comenzó con el propio Elasticsearch, el motor de búsqueda de código abierto, distribuido, RESTful [interfaz de programación de aplicaciones que se ajusta a los límites de la arquitectura REST (arquitectura diseñada para funcionar con sistemas distribuidos centralizados, en oposición a los que no usan un servidor como nodo principal) y permite la interacción con los servicios de red de RESTful] basado en JSON. Fácil de usar, escalable y flexible.
  Seguidamente, debido a que los usuarios comenzaban a usar el motor de búsqueda para registros y querían ingerir y visualizarlos fácilmente, se añadieron la poderosa tubería de ingesta Logstash, y la herramienta de visualización flexible Kibana.
  Finalmente, dada la demanda creciente de usuarios y la necesidad de éstos, también en aumento, de realizar búsquedas muy específicas, se incluyó al conjunto una familia de agentes de datos de propósito único y livianos, a los que se les llamaron Beats.
  De este modo, Elastic Stack posee características (algunas previamente incluidas como parte de X-Pack) que permiten al usuario ingerir, analizar, buscar y visualizar todos los tipos de datos a escala.

Seguridad
  Las características de seguridad de esta plataforma dan el acceso adecuado a las personas correctas, con la mayoría de las características sin costo adicional. Los equipos de TI, operaciones y aplicaciones confían en ellos para gestionar usuarios bien intencionados y mantener alejados los actores maliciosos, mientras los ejecutivos y clientes pueden descansar tranquilos sabiendo que los datos almacenados en el Elastic Stack están seguros.
   El primer paso para proteger los datos que fluyen a través de los componentes de este soporte lógico de usuarios no autorizados y modificaciones no intencionales es la autenticación. Gracias a Elastic Stack, es posible integrarse con una cantidad de sistemas de gestión de identidad estándar de la industria; así, se autentica gracias al Directorio Activo, LDAP o el realm (motor de base de datos pensado para ser utilizado en el desarrollo de aplicaciones móviles tanto para Android como para sistemas iOS) nativo de Elasticsearch; el usuario puede usar opciones de inicio de sesión único (SSO) como certificados, Kerberos y SAML, o desarrollar un realm personalizado que soporte su sistema de gestión de identidad propio.

  Su seguridad por capas protege los datos del Elastic Stack del usuario en el nivel que desee, de arriba hacia abajo: Clúster (permisos de consultas), índice (permisos para agregar o eliminar documentos), documento (permisos de acceso), campo (acceso a campos individuales).
  Las características de registros de auditoría de este soporte lógico, tal vez el héroe silencioso en el mundo de la seguridad, permiten fácilmente al usuario llevar un registro completo de toda la actividad del sistema y los usuarios. Es posible filtrar la actividad para que registre sólo lo que se necesite o para que registre toda la actividad que tiene lugar en el Elastic Stack. Se puede, naturalmente, registrar la información de auditoría en Elasticsearch para buscarla y analizarla fácilmente más adelante.
  Bien sea cumplimiento por parte de la empresa Elastic {Estándares Federales de Procesamiento de la Información ["Federal Information Processing Standard" ("FIPS 140-2"), en inglés] y Sección 508 ("Section 508", en inglés)}, bien por estándares por parte del usuario {Ley de Portabilidad y Responsabilidad de Seguros de Salud ["Health Insurance Portability and Accountability Act" ("HIPAA"), en inglés], Estándar de Seguridad de Datos para la Industria de Tarjeta de Pago ["Payment Card Industry Data Security Standard" ("PCI DSS"), en inglés], Ley Federal de Administración de Seguridad de la Información ["Federal Information Security Management Act"("FISMA"), en inglés], Organización Internacional de Normalización ["International Organization for Standardization" ("ISO"), en inglés] o el Reglamento General de Protección de Datos ["General Data Protection Regulation" ("GDPR"), en inglés]}, las características de seguridad del Elastic Stack ayudan a este último a cumplir y a mantener el cumplimiento.

Aprendizaje automático
  Gracias a su aprendizaje de máquina, Elastic Stack permite al usuario encontrar anomalías y valores atípicos, pronosticar con base en tendencias e identificar áreas de interés en sus datos.
    Extraer nuevos conocimientos de los datos de este soporte lógico es tan simple como pulsar un botón, haciendo que el aprendizaje automático sea realmente operativo. Dicho aprendizaje está integrado céntricamente en Elastic Stack, especialmente en Elasticsearch y Kibana, para brindar una experiencia que sea tanto poderosa como eficiente.
  En cuanto los datos del usuario llegan a Elasticsearch, están listos para el aprendizaje automático, ya que Elastic Stack procesa los datos con la ingesta, garantizando que el usuario tenga los metadatos que necesita para identificar causas raíz o agregar contexto en cualquier evento; la empresa Elastic se encarga de encontrar algoritmos que funcionarán a escala; las herramientas integradas, como Data Visualizer, ayudan al usuario a encontrar los trabajos que está buscando e identificar los campos en sus datos que trabajarían bien con el aprendizaje de máquina.
  El aprendizaje automático no supervisado con Elastic permite al usuario encontrar patrones en sus datos. Se pueden usar los modelos de series de tiempo para detectar anomalías en sus datos actuales y prevenir tendencias con base en datos históricos. También se puede emplear esta detección de anomalías para hacer ampliaciones en los datos que se desvían del resto.
  Por su parte, el aprendizaje automático supervisado permite al usuario aplicar la clasificación, regresión y detección de valores atípicos a tus datos para una experiencia de flujo de trabajo integral en una amplia gama de casos de uso. Además, también le deja usar transformaciones de índice continuas para convertir un índice de registros de aplicaciones en una vista de actividades centrada en el usuario y crear un modelo de detección de fraudes mediante clasificación. Después, le permite usar el procesador de ingesta de inferencias para aplicar los modelos del usuario a los datos entrantes al momento de la ingesta sin salir de Elasticsearch.
  Por lo tanto, crear un trabajo de aprendizaje automático simplemente tiene sentido, como descubrir tiempos de respuesta inusualmente lentos para la aplicación del usuario directamente en la aplicación APM o encontrar comportamiento inusual en la aplicación SIEM.

Geoespacial
  Esta característica del Elastic Stack permite al usuario explorar, analizar y descubrir el lugar de sus datos. Este soporte lógico almacena todos los datos geoespaciales del usuario y ejecuta consultas a la máxima velocidad con Elasticsearch, y encuentra anomalías, activa notificaciones y resuelve problemas basados en la ubicación con Kibana.
  A medida que los volúmenes de datos del usuario crecen exponencialmente, sus datos geoespaciales y la capacidad de analizarlos a gran velocidad y escala se vuelven cada vez más valiosos, desde el análisis de datos de clientes hasta el seguimiento de activos. Se combinan la búsqueda, la agregación y la velocidad de Elasticsearch con las visualizaciones intuitivas de Kibana mediante la aplicación Maps y los paneles. Se suele comenzar con un caso de uso geográfico y ampliarlo a otros.
  Además, este soporte lógico permite el análisis geoespacial con velocidad, a escala. Las búsquedas espaciales ayudan al usuario a responder preguntas relacionadas con la ubicación. Las búsquedas de distancia le permitirán comprender la proximidad. Todo con una pila que escala automáticamente.
  Mediante Kibana se emplea Elastic Maps para analizar datos geoespaciales e identificar patrones geográficos a lo largo del tiempo, puntos de interés y otras vías de exploración. Permite al usuario compartir y consumir fácilmente datos geoespaciales a través de paneles y configurar alertas basadas en la ubicación para que sus datos geoespaciales sean procesables.
    El usuario puede crear visualizaciones geoespaciales con facilidad con la aplicación Maps. Es sencillo visualizar datos de Elasticsearch o cargar los de un usuarios desde un archivo CSV o GeoJSON. Por otra parte, es posible realizar análisis basados en la forma y el contenido de los datos: usando capas de coropletas para comparar estadísticas entre países o regiones, mapas de punto a punto para comprender las conexiones de origen y destino, y mapas de calor, cuadrículas y clústeres dinámicos para ver patrones espaciales al instante.

  Mediante el aprendizaje automatizado es posible encontrar los datos que deberían destacarse con detecciones de anomalías. Aquellas basadas en la ubicación facilitan la búsqueda, la exploración y la comparación de anomalías con sus ubicaciones típicas.
  Por otra parte, Elastick Stack permite que los datos de ubicación de un usuario generen información y acción con alertas geográficas. Comúnmente conocido como geocercado, rastrea objetos en movimiento a medida que ingresan o salen de un límite para recibir notificaciones a través de sistemas comerciales comunes (correo electrónico, Slack, Teams, PagerDuty y más). Ya sea que el trabajo del usuario sea el seguimiento de activos para envío y logística o el monitoreo de dispositivos con Internet de las cosas en el contexto de la seguridad, las alertas geoespaciales le brindan información para actuar.

ELASTICSEARCH

  Este potente motor de búsqueda de texto está vinculado a una base de datos NoSQL de código abierto muy popular en Big Data.
  Elasticsearch permite al usuario almacenar datos de una forma escalable y realizar búsquedas de texto más avanzadas que las disponibles en SQL o con expresiones regulares. También, permite reconocer lexemas, abreviaturas, extraer las posiciones de las palabras, sus frecuencias de aparición, etc.

Arquitectura  
  En primer lugar, se debe conocer qué es un fragmento (“shard”, en inglés) en el contexto de una base de datos. Se trata de la unidad de distribución de datos del clúster, compuesto por una instancia de un índice de Lucene, que contiene el subconjunto de los datos. Predeterminadamente existen 5 fragmentos por índice.
  Existen fragmentos primarios, que son los primeros en indexar un documento, y fragmentos réplicas, que replican la indexación y las búsquedas a partir de las operaciones de los anteriores. Por defecto existe 1 réplica por cada fragmento primario. Además, es posible realizar instantáneas (“snapshots”, en inglés) y restaurar copias de seguridad de todos los datos e índices.
  El índice de Lucene es un fragmento en Elasticsearch. A su vez, Lucene divide el fragmento en segmentos y puntos de finalización de transacción (“commit points”, en inglés). Los segmentos son índices invertidos, que aceleran las búsquedas y dependen de puntos de finalización de transacción que forman las estructuras de datos con los documentos.

Roles del cluster
  Si se despliega como clúster, cada nodo puede ejecutar uno o varios roles:
  •   Nodo maestro ("Master Node", en inglés): Se encarga de realizar la gestión de los índices, la distribución de los fragmentos en los nodos de datos ("data nodes", en inglés) y su seguimiento.
  •   Nodo de datos: Encargado de almacenar los fragmentos y ejecutar los procesos de búsqueda y de indexación.
  •   Nodo de ingesta ("Ingest node", en inglés): Este tipo de nodo se encarga de realizar la ingesta de los datos. Para ello, escucha las entradas de datos que se producen y los escribe. Estas operaciones las realiza en memoria.
  •   Nodo coordinador ("Coordinating node", en inglés): Nodos encargados de balancear la carga y de preprocesar los datos en las fases de agregación.
  Los mencionados roles se deben separar en diferentes nodos en clústeres grandes (a partir de 10 nodos).
  Los servicios del clúster se comunican entre ellos por el puerto TCP 9300. También se puede habilitar el autodescubrimiento de nodos, de forma que se facilita la configuración del clúster que, como sucede con el resto de la configuración de Elasticsearch, es muy flexible, y tiene el formato YAML.

Funcionamiento
  En este soporte lógico la información se organiza mediante índices. Cada documento se trata como un elemento de un índice. Dentro de un documento existen campos, que son las propiedades del documento.
  Un documento es autocontenido, ya que contiene toda la información necesaria respecto a su estructura. Elasticsearch puede definir dinámicamente los esquemas llamados mappings a partir de los documentos que se indexan.

Herramientas
  Además de Kibana, este motor de búsqueda también dispone de numerosas herramientas para realizar consultas y explotar los datos almacenados. Por un lado, existen clientes REST, como curl o Postman, que permiten al usuario interaccionar directamente con la aplicación. Por otro lado, existen clientes para muchos lenguajes de programación como Python o Java. Incluso es posible usar SQL para las consultas junto con ODBC o JDBC.
  También, es común introducir Apache Kafka como búfer de datos antes de Logstash. De esta forma, se aumenta la capacidad del sistema y su tolerancia a fallos.
  Otra alternativa a Kibana para visualizar datos con Elasticsearch es Grafana, que es una herramienta de visualización de código abierto algo más orientada a monitorización de métricas.

Ventajas
  Las ventajas más relevantes de Elasticsearch son:
  •   Acceso a los datos en tiempo real.
  •   Construido con aplicaciones REST para acceder a todas sus capacidades.
  •   Sistema distribuido, escalable y tolerante a fallos.
  •   Compatible con gran cantidad de sistemas y lenguajes de programación al estar basado en JSON.
  •   Indexación de documentos basada en Apache Lucene.

  Aguardo que la presente entrada haya sido interesante para el lector. Si es así, espero que éste la comente y/o la comparta, por favor.

No hay comentarios:

Publicar un comentario

Deje aquí su comentario, si no puede comentar, pruebe a hacerlo desde otro navegador de red u otro equipo.