Para la ingestión de datos con el Elastic Stack, a menudo surge la necesidad de utilizar agentes especializados que puedan reunir y transmitir la información desde diversas fuentes hacia Elasticsearch. Mientras que Elastic Agent se ha convertido en la opción preferida para gestionar estos datos, en ciertos casos, la ausencia de una integración directa con un tipo específico de datos puede llevar a optar por Beats. Beats, en este contexto, representa un conjunto de agentes ligeros que recogen y transportan datos de manera eficiente para su análisis y visualización.
Uno de los Beats más relevantes es Metricbeat, el cual se especializa en recolectar métricas de sistemas y servicios para luego enviarlas a Elasticsearch o Logstash. Este capítulo se centra en la integración de datos provenientes de Apache Tomcat a través de Metricbeat y el módulo Jolokia, una opción ideal cuando no existe una integración directa de Elastic Agent con Tomcat, como sucedía en la versión de este libro.
Para empezar a recolectar datos, es necesario contar con una instancia de Apache Tomcat en funcionamiento, preferentemente en la versión 9.x, y asegurarse de tener también instalado Jolokia. Jolokia es una biblioteca Java que permite la gestión y monitoreo de aplicaciones Java mediante una interfaz HTTP que interactúa con los MBeans JMX, lo cual facilita la recolección de métricas de Tomcat.
Instalación de Apache Tomcat y Jolokia
Existen varias formas de instalar Apache Tomcat. En este caso, se utiliza una solución preconfigurada de Google Cloud Platform (GCP) para desplegar una instancia de Ubuntu con Tomcat 9. No obstante, las instrucciones proporcionadas también son aplicables a otros entornos, ya sean autogestionados o proporcionados por otros proveedores de la nube. El proceso de instalación de Apache Tomcat en GCP se puede realizar de forma sencilla a través de su Marketplace. Sin embargo, si se opta por una instalación autogestionada, las guías oficiales de Apache Tomcat ofrecen todos los detalles necesarios.
Por su parte, la instalación de Jolokia se realiza como una librería y agente Java adicional. Su instalación es imprescindible, ya que Metricbeat requiere Jolokia para obtener las métricas de JMX. El proceso es sencillo y las instrucciones completas están disponibles en el sitio web oficial de Jolokia.
Configuración de Metricbeat para Tomcat
Una vez que Tomcat y Jolokia están instalados, el siguiente paso es configurar Metricbeat para recolectar las métricas necesarias. Esto se logra mediante la habilitación del módulo Tomcat de Metricbeat, que se configura en el archivo correspondiente. Además, se debe habilitar el módulo Jolokia para establecer la conexión con el servidor Tomcat y acceder a las métricas a través de los endpoints de Jolokia.
El archivo de configuración de Metricbeat, ubicado en /etc/metricbeat/metricbeat.yml, debe ser editado para incluir las credenciales y parámetros necesarios para conectar Metricbeat con Elasticsearch. En el caso del uso de Elastic Cloud, se debe incluir la configuración del cloud.id y las credenciales para la autenticación.
Una vez que Metricbeat está configurado, es necesario habilitar los módulos adecuados, como el módulo de Tomcat y el de Jolokia. La configuración de Jolokia se encuentra en el archivo /etc/metricbeat/modules.d/jolokia.yml, y en él se deben mapear los atributos JMX a los campos del esquema común de Elastic (ECS). Este paso es crucial para asegurar que las métricas se formateen correctamente y se envíen de acuerdo con los estándares de Elasticsearch.
Monitoreo y visualización en Kibana
Después de completar la configuración, el siguiente paso es ejecutar Metricbeat y verificar que las métricas se estén enviando correctamente a Elasticsearch. Una vez que Metricbeat comienza a recolectar los datos, se pueden visualizar en Kibana a través del dashboard predeterminado para Tomcat. Este dashboard ofrece una visión clara de las métricas recolectadas, como el uso de memoria, el número de hilos activos y las solicitudes globales procesadas.
En Kibana, se pueden explorar las métricas tanto del sistema como de la aplicación a través de la interfaz de Observabilidad. Aquí, el usuario tiene acceso a una vista detallada de la infraestructura, permitiendo analizar en tiempo real el comportamiento del sistema, como el uso de recursos en la VM que aloja Apache Tomcat.
Reflexión sobre el uso de Beats en la ingestión de datos
A lo largo de la historia de Elastic Stack, Beats ha sido una herramienta fundamental para la ingestión de datos con marcas de tiempo. Aunque Elastic Agent ha ganado relevancia y se ha establecido como la opción predilecta para este propósito, Beats sigue siendo una alternativa válida cuando no existe una integración directa de Elastic Agent para el tipo de fuente de datos específica.
En este caso, el uso de Metricbeat junto con el módulo de Tomcat y Jolokia ilustra cómo Beats puede ser aprovechado eficazmente en ausencia de integraciones directas con Elastic Agent. Este enfoque no solo permite la recolección de métricas, sino que también asegura que los datos sean procesados y enviados a Elasticsearch de forma eficiente y conforme a los estándares del ECS, lo que facilita su análisis y visualización.
Además, es importante destacar que, aunque la solución presentada se basa en Apache Tomcat, el principio de usar Beats para la recolección de métricas se puede aplicar a una gran variedad de servicios y aplicaciones, siempre que exista un módulo adecuado dentro de Beats. Esto permite a los administradores de sistemas y a los equipos de DevOps tener un control total sobre el monitoreo y el análisis de datos en tiempo real.
¿Cómo construir y evaluar un modelo de clasificación para análisis de tráfico?
En el proceso de construcción de un modelo de clasificación para analizar datos de tráfico, el primer paso es seleccionar cuidadosamente la variable dependiente, que en este caso es top_metrics.traffic_status. Esta variable representa el estado del tráfico que el modelo debe predecir a partir de las características de entrada. Para optimizar la eficacia del modelo, es fundamental elegir solo los campos que aportan información relevante, tales como day_of_week, hour_of_day, location_reference y max_speed.max, excluyendo variables menos pertinentes como traveltime.duration.
Durante la configuración, se recomienda usar un porcentaje reducido de datos para el entrenamiento, generalmente alrededor del 20%, en lugar del 50% empleado en análisis de regresión. Esto se debe a que el análisis de clasificación suele ser más demandante en términos computacionales, y esta reducción agiliza el proceso sin sacrificar demasiado la calidad del modelo. No obstante, esta proporción debe ajustarse con base en la complejidad del problema y la cantidad de datos disponibles, mediante un proceso iterativo de prueba y error.
Un aspecto clave en la configuración avanzada es la asignación del valor de importancia de las características (feature importance), que permite al modelo priorizar qué variables influyen más en las predicciones. Aunque existen hiperparámetros que podrían ajustarse manualmente, es recomendable confiar en la optimización automática de estos valores a través del proceso de hyperparameter tuning, ya que el sistema seleccionará la combinación óptima para maximizar el desempeño.
Una vez configurado el trabajo, el sistema realiza una validación previa para asegurar que todos los parámetros sean adecuados. Es común recibir advertencias relacionadas con la importancia de las características, especialmente cuando el conjunto de entrenamiento es muy grande. En tales casos, disminuir el porcentaje de datos utilizados puede resolver el problema y facilitar el procesamiento.
Al finalizar la ejecución, se accede a una página de resultados que se divide en varias secciones. La evaluación del modelo provee métricas esenciales como la matriz de confusión normalizada, que muestra la proporción de verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos, facilitando la comprensión del balance entre clases y posibles sesgos. La curva ROC y su área bajo la curva (AUC) permiten medir la capacidad del modelo para distinguir entre categorías, siendo un indicador crucial de la calidad del clasificador.
La importancia total de las características revela que, en el ejemplo estudiado, la variable hour_of_day tiene el mayor impacto en la predicción, seguida por location_reference, lo que confirma que el momento del día y la ubicación son determinantes en el estado del tráfico. Esta comprensión no solo valida el modelo sino que también ofrece insights para futuras mejoras y análisis.
Finalmente, la tabla de resultados permite comparar las predicciones del modelo con las clasificaciones reales, facilitando la identificación de errores específicos y patrones en el desempeño. Esta visión detallada es fundamental para refinar el modelo y asegurar su aplicabilidad práctica.
Es importante comprender que el éxito en la creación de un modelo de clasificación no depende únicamente de la selección de variables y configuración técnica, sino también de un equilibrio entre la cantidad y calidad de los datos de entrenamiento, la correcta interpretación de las métricas de evaluación y la capacidad de iterar ajustando parámetros. Además, el conocimiento del contexto del problema y la relevancia de las variables para la realidad del tráfico contribuyen a construir modelos más robustos y útiles para la toma de decisiones.
¿Cómo optimizar la búsqueda vectorial y la implementación de búsqueda semántica en Elasticsearch?
En la versión 8 de Elasticsearch, la búsqueda vectorial dio un paso adelante al adoptar el algoritmo HNSW (Hierarchical Navigable Small World) para búsquedas aproximadas de vecinos más cercanos (ANN). Este cambio permitió una mejora significativa en la eficiencia y velocidad de la búsqueda, especialmente para tareas que implican grandes volúmenes de datos. Antes de esta versión, Elasticsearch usaba el método de fuerza bruta para la búsqueda k-NN, lo cual requería calcular las distancias entre el vector de consulta y todos los vectores del conjunto de datos, un proceso que no solo consumía mucho tiempo, sino también una cantidad considerable de recursos computacionales.
Con el algoritmo HNSW, se utiliza una estructura de gráfico jerárquica en capas, donde cada capa es un subconjunto de la anterior, y la capa más baja contiene todos los elementos. Las búsquedas comienzan en la capa superior, que tiene menos puntos, y descienden capa por capa, lo que reduce significativamente el número de cálculos de distancias y acelera el proceso de búsqueda. Este enfoque optimiza el tiempo de respuesta y la carga computacional, lo cual es crucial para aplicaciones que requieren resultados rápidos y eficientes.
Además de HNSW, Elasticsearch introduce otros métodos que buscan mejorar la precisión y la velocidad de la búsqueda. Por ejemplo, el uso de vectores de tamaño de byte, que fue introducido en la versión 8.6, permite reducir los costos de almacenamiento con una mínima pérdida de precisión. Esta opción es especialmente útil cuando se manejan grandes volúmenes de datos y se busca una solución que optimice los recursos sin comprometer demasiado la calidad de la búsqueda.
Otro aspecto relevante es la implementación de modelos multilingües y la posibilidad de generar vectores desde modelos preentrenados, como el modelo E5, que trunca las tramas de las películas a solo los primeros 500 tokens para crear vectores. Sin embargo, este enfoque puede causar la pérdida de información en tramas más largas, por lo que es recomendable optar por modelos que manejen más tokens o aplicar métodos como el "chunking" para dividir el texto en partes más pequeñas, lo cual se abordará más adelante.
En cuanto a la escalabilidad, Elasticsearch permite desplegar modelos con varias asignaciones y múltiples hilos por asignación, lo que permite utilizar varios nodos de aprendizaje automático de forma simultánea. Esto optimiza el uso de los recursos de procesamiento, mejorando tanto la velocidad de la indexación como la capacidad de respuesta del sistema, lo cual es especialmente relevante cuando se maneja un volumen alto de datos o consultas simultáneas.
Una de las innovaciones más interesantes de Elasticsearch es el uso de vectores dispersos a través del modelo Elastic Learned Sparse Encoder (ELSER). Este enfoque permite realizar búsquedas semánticas de manera más eficiente en ciertos casos, ya que utiliza representaciones de baja dimensionalidad que capturan de forma efectiva la información semántica sin el costo computacional de los vectores densos. La diferencia fundamental entre los vectores densos y dispersos radica en que los primeros representan todos los posibles atributos de una consulta, mientras que los vectores dispersos solo almacenan los atributos más relevantes, lo que resulta en una menor complejidad computacional y una mayor eficiencia.
Al implementar la búsqueda semántica con vectores dispersos, es necesario seguir una serie de pasos, como la detención de modelos previamente desplegados para liberar recursos y la configuración adecuada de los modelos entrenados. El modelo ELSER, en particular, permite la creación de embeddings semánticos que se pueden usar para realizar búsquedas de similitud, recomendación de contenido y detección de fraudes, entre otros casos de uso. Además, su integración con el sistema Elasticsearch asegura una escalabilidad adecuada para satisfacer las necesidades de las aplicaciones más exigentes.
La optimización de la búsqueda vectorial no se limita a la mejora de la velocidad y la precisión de las búsquedas. También es crucial entender que el proceso de indexación tiene un impacto directo en el rendimiento de la búsqueda. Los parámetros de indexación, como la configuración de los vectores y las técnicas de segmentación, deben ser cuidadosamente ajustados para maximizar la eficiencia del sistema. Es importante que el lector comprenda que cada ajuste y elección de modelo tiene implicaciones tanto en el almacenamiento como en el tiempo de consulta, y debe ser considerado en función de los requisitos específicos de cada aplicación.
Finalmente, las aplicaciones prácticas de la búsqueda vectorial van más allá de las búsquedas semánticas. Elasticsearch permite su uso en una variedad de casos de uso, como la búsqueda de similitudes de imágenes, la detección de duplicados, la recomendación de productos y la detección de fraudes. En este sentido, la capacidad de realizar búsquedas rápidas y precisas utilizando vectores se convierte en una herramienta poderosa para resolver problemas complejos en áreas como el análisis de datos, la inteligencia empresarial y la seguridad.
¿Cómo configurar el inicio de sesión único (SSO) para una gestión de acceso segura y simplificada?
Configurar el inicio de sesión único (SSO) utilizando OpenID Connect (OIDC) es una herramienta poderosa para mejorar la seguridad y la eficiencia en la gestión de accesos de los usuarios. Este proceso es particularmente útil cuando se integran sistemas como Kibana y Okta para gestionar la autenticación de usuarios. A continuación, te presento los pasos esenciales para configurar SSO de manera eficaz y segura.
El primer paso en el proceso es preparar el entorno. Este tutorial está enfocado en la implementación en Elastic Cloud. Durante la configuración, necesitarás ciertos datos específicos, como la URL de Kibana, que podrás obtener accediendo al panel de Elastic Cloud en https://cloud.elastic.co, luego seleccionando "Manage" al lado del nombre de tu despliegue y copiando el endpoint de Kibana desde la página de información del despliegue. Esta URL será fundamental a lo largo de todo el proceso, por lo que es importante tenerla a mano.
Asegúrate de haber completado la receta anterior, donde se definen los roles personalizados, ya que configurar SSO con OpenID Connect requiere un proveedor de OpenID (OP). Para este caso, utilizaremos una cuenta de desarrollador de Okta, la cual ofrece acceso gratuito a las funciones de seguridad de Okta. Para registrarte, visita https://developer.okta.com/signup/ y obtén acceso a la edición gratuita de Workforce Identity Cloud. Una vez que hayas completado el registro y verificado tu cuenta, inicia sesión y copia el dominio de Okta, que utilizarás más adelante en el proceso.
Con estos preparativos listos, ya estamos en condiciones de comenzar la configuración del inicio de sesión único. A continuación, se detallan los pasos para crear y configurar la integración de la aplicación en Okta.
Inicia sesión en el panel de administración de Okta, dirígete a "Applications" desde el menú izquierdo y haz clic en "Create App Integration". Esta integración permitirá conectar usuarios con aplicaciones y sistemas externos de manera segura. En este caso, la integración será con Kibana. Cuando se te pida seleccionar el método de inicio de sesión, elige "OIDC - OpenID Connect" como el método de inicio de sesión y "Web Application" como tipo de aplicación.
A continuación, en la página de configuración del nuevo Web App Integration, deberás ingresar algunos datos esenciales. Entre ellos se incluyen el nombre de la integración de la aplicación, el tipo de concesión (Authorization Code, que es el predeterminado), las URI de redirección para el inicio y cierre de sesión, y los ajustes de acceso controlado. Después de guardar esta configuración, obtendrás el "client ID" y el "client secret" de la aplicación, datos que necesitarás más adelante en el proceso.
Una vez guardados estos valores, deberás modificar la sección de LOGIN en Okta. En esta sección, es importante especificar cómo se iniciará el proceso de inicio de sesión, eligiendo "Either Okta or App" como la opción de iniciación. Además, asegúrate de configurar la visibilidad de la aplicación para que los usuarios puedan ver el ícono de la aplicación y acceder fácilmente a ella. Con esto, la configuración básica de Okta estará lista.
El siguiente paso es configurar los "group claims" (reclamaciones de grupo) de OpenID Connect en Okta. Estas reclamaciones son elementos de datos que indican los grupos a los que pertenece un usuario autenticado, como los roles o equipos en los que está involucrado. Para configurar estos grupos, ve a la pestaña "Sign On" y ajusta el filtro de reclamaciones de grupo, reemplazando la opción "Starts with" por "Matches regex" y utilizando ".*", lo que asegura que todos los grupos sean coincidentes.
Después de completar esta configuración, guarda los cambios y procede a crear un grupo en Okta. Este grupo se asignará a tu usuario y a la aplicación que has configurado. En el panel de Okta, selecciona "Directory" y luego "Groups". Haz clic en "Add Group" para crear un nuevo grupo, al que podrás asignar tanto la aplicación Kibana como a los usuarios correspondientes. Es fundamental que Okta verifique los permisos de acceso a la aplicación para asegurar que solo los usuarios del grupo tengan acceso.
Una vez finalizada la configuración de Okta, es momento de configurar el SSO en Elastic Stack. Inicia sesión en Elastic Cloud, selecciona tu despliegue y accede al menú de "Security" dentro de "Elasticsearch keystore". Aquí, deberás agregar el "client secret" que copiaste previamente desde Okta a la configuración del keystore de Elasticsearch. Esto permitirá que Elasticsearch autentique a los usuarios utilizando el proveedor de OpenID Connect (Okta) y asigne los roles correctos.
Para terminar la configuración en Elastic Cloud, ve a "Deployment" y selecciona "Manage user settings and extensions". Aquí es donde se integrarán los valores necesarios para habilitar la autenticación a través del OpenID Connect Realm, asegurando que los usuarios puedan ser autenticados correctamente.
Con estos pasos completos, habrás configurado SSO en Elastic Stack, lo que mejorará la seguridad y simplificará la gestión del acceso de los usuarios.
Además, es importante que los usuarios comprendan el funcionamiento de las "group claims" y su relevancia en la gestión de permisos. Estas reclamaciones no solo determinan qué usuarios tienen acceso a ciertas aplicaciones, sino que también facilitan la implementación de políticas de acceso detalladas y específicas dentro de un entorno corporativo. Asegúrate de que todos los usuarios asignados a un grupo tengan las autorizaciones correctas y estén debidamente configurados en el sistema para evitar problemas de acceso no autorizado.
¿Cómo integrar Okta con Elasticsearch para un acceso seguro y simplificado?
En el proceso de configuración de un sistema de autenticación mediante OpenID Connect (OIDC) con Okta como proveedor de identidad (OP) y Elasticsearch como el relying party (RP), el objetivo es garantizar una experiencia de inicio de sesión única (SSO) que sea tanto segura como eficiente. Este proceso de configuración es crucial para empresas que buscan centralizar la autenticación de sus usuarios y mejorar la administración de roles y permisos dentro de herramientas como Kibana, que es un componente esencial de la Elastic Stack.
En primer lugar, es necesario configurar Okta como proveedor de identidad. Esto implica crear un grupo de usuarios y una integración de aplicación dentro de Okta, lo que permitirá que los usuarios inicien sesión en Kibana a través de Okta mediante OIDC. Para ello, se deben establecer los parámetros necesarios dentro de Elasticsearch, configurando el realm de OIDC para que se conecte correctamente con Okta. De manera práctica, esto se logra estableciendo los "scopes" requeridos para la autenticación, como "openid", "profile", "email", y "groups", y mapeando las reclamaciones correspondientes, como el email del usuario, su nombre, y los grupos a los que pertenece.
Una vez que la integración básica entre Elasticsearch y Okta está lista, el siguiente paso es ajustar la configuración de Kibana para que utilice Okta como proveedor de autenticación. Se realiza una modificación en el archivo de configuración de Kibana para habilitar OIDC, asignando un orden específico a este tipo de autenticación, así como proporcionando detalles adicionales como la descripción del proveedor de autenticación. Al mismo tiempo, es importante permitir que los usuarios del realm nativo de Elasticsearch también puedan autenticar sus credenciales, manteniendo así la flexibilidad en la gestión de accesos.
Luego de realizar estos ajustes, es fundamental probar la configuración. Al acceder a Kibana en modo incógnito, los usuarios verán una opción nueva de inicio de sesión denominada "SSO con Okta vía OIDC", lo que les redirigirá a la página de inicio de sesión de Okta. Después de introducir sus credenciales, el usuario debería ser redirigido nuevamente a Kibana, donde se valida el acceso. Sin embargo, si aún no se ha asignado un rol a los usuarios, es posible que se presenten errores de permisos, lo cual es normal en esta etapa del proceso.
Es importante entender cómo funciona todo este proceso de manera estructural. Elasticsearch actúa como el relying party, que depende de Okta para autenticar a los usuarios. Al iniciar el proceso de inicio de sesión, Elasticsearch redirige al usuario a Okta para que este verifique su identidad. Una vez autenticado, Okta envía de vuelta a Elasticsearch un ID token y un access token que contienen la información del usuario. Elasticsearch valida estos tokens y, al ser correctos, concede acceso al usuario según los permisos asignados en su configuración.
Al usar OpenID Connect con Okta, se centraliza el proceso de autenticación y se minimiza la necesidad de múltiples inicios de sesión, lo cual mejora la experiencia del usuario. Además, el sistema se beneficia de una mayor seguridad al no tener que manejar directamente las credenciales de los usuarios en múltiples aplicaciones. Esta solución es especialmente beneficiosa cuando se gestionan plataformas complejas y distribuidas, como Elasticsearch y Kibana.
En cuanto a la personalización de la experiencia de inicio de sesión, es posible que desee agregar un logotipo o icono visual que represente a su organización o la herramienta con la que se autentica el usuario. Para hacerlo, basta con modificar la configuración de Kibana y agregar la URL de la imagen SVG deseada. Esto no solo mejora la estética del inicio de sesión, sino que también ayuda a los usuarios a identificar fácilmente qué plataforma están utilizando.
Un aspecto adicional a tener en cuenta es el mapeo de las reclamaciones de los tokens con las propiedades de usuario dentro de su entorno. Las reclamaciones (como email, nombre, grupos) son una parte fundamental del proceso de autenticación y autorización, ya que determinan qué información será accesible para Elasticsearch y, por ende, para los usuarios al interactuar con Kibana. El uso de herramientas como oidc-tester puede ser de gran ayuda para visualizar y verificar las reclamaciones contenidas en el token, asegurando que todos los datos relevantes estén correctamente mapeados.
Es también relevante destacar que aunque en un principio los usuarios autenticados a través de OIDC no tengan asignados roles, este es un paso que debe ser abordado para otorgarles acceso adecuado a los recursos dentro de Kibana. La asignación de roles y permisos basada en los grupos y otras reclamaciones del token es esencial para el control de acceso efectivo dentro de estas plataformas.
En resumen, la integración de Okta como proveedor de identidad en una arquitectura de OpenID Connect con Elasticsearch permite a las organizaciones gestionar el acceso de manera centralizada y segura. A medida que la configuración se implementa correctamente, la experiencia de usuario se simplifica y la seguridad general del sistema mejora considerablemente.
¿Cómo funcionan los dispositivos interactivos modernos y qué implica su evolución tecnológica?
¿Cómo crear tejidos inusuales con materiales reciclados?
¿Cómo preparar recetas con calabacín de verano?
¿Cómo las energías solares recargables están revolucionando los sistemas de almacenamiento de energía?

Deutsch
Francais
Nederlands
Svenska
Norsk
Dansk
Suomi
Espanol
Italiano
Portugues
Magyar
Polski
Cestina
Русский