En este capítulo, nos adentramos en el proceso de configuración y análisis de flujos de datos utilizando Elastic Stack, específicamente en el contexto de la visualización y exploración de datos de tráfico en Rennes. Para poder seguir este tutorial, es fundamental que el sistema de Elastic Stack (Elasticsearch y Kibana) esté correctamente desplegado y en funcionamiento. Asegúrese también de contar con una instancia activa de Logstash, la cual es esencial para la ingestión de datos en tiempo real. Si no ha realizado este paso, consulte el capítulo 5 para aprender cómo instalar y configurar Logstash.
En este contexto, trabajaremos con un conjunto de datos que ya conocemos bien: los datos de tráfico de Rennes. En el capítulo 5 creamos un flujo de datos denominado Time Series Data Stream (TSDS) y utilizamos Logstash para obtener, transformar y enviar periódicamente los datos de tráfico en tiempo real a Elasticsearch. En este capítulo, crearemos un nuevo flujo de datos llamado metrics-rennes_traffic-raw. A diferencia del TSDS, este flujo de datos nos permitirá explorar funciones avanzadas de Elasticsearch, como el Lenguaje de Consulta de Elasticsearch (ES|QL), campos en tiempo de ejecución, entre otras características que no son compatibles con el TSDS.
Para empezar con este nuevo flujo de datos, debe seguir una serie de pasos iniciales para configurar la infraestructura necesaria. Primero, en Kibana, dirígete a la sección de Management y accede a Dev Tools, donde ejecutarás una serie de comandos que nos permitirán crear el flujo de datos metrics-rennes_traffic-raw y sus componentes asociados. Estos incluyen la política de ciclo de vida del índice, el mapeo de índices, los ajustes de índice y la plantilla de índice. Asegúrese de revisar cada uno de estos componentes antes de pasar al siguiente paso.
Una vez configurados estos componentes, necesitará configurar el archivo de Logstash para que apunte correctamente a su nueva instancia de Elasticsearch. Esta configuración se realiza modificando el archivo rennes-traffic-raw.conf en el servidor de Logstash, ubicado en el directorio correspondiente de su instalación. Asegúrese de reiniciar Logstash después de realizar estos cambios para que se apliquen correctamente.
Con el flujo de datos y Logstash configurados, el siguiente paso es crear una vista de datos en Kibana. Para aquellos que están familiarizados con Elastic Stack, el concepto de vista de datos es similar al antiguo patrón de índice. Esta vista define qué índices o grupos de índices serán utilizados por Kibana al realizar consultas y visualizaciones. Además, las vistas de datos permiten modificar los campos de los datos, incluyendo la creación de nuevos campos a través de campos en tiempo de ejecución.
Al acceder a Kibana, dirígete a Analytics y luego a Discover, donde podrás crear la nueva vista de datos. Al ingresar el nombre del flujo de datos metrics-rennes_traffic-raw en la interfaz de creación de vistas de datos, Kibana lo reconocerá automáticamente y podrá empezar a explorar los documentos que contiene.
Una vez que tengas acceso a los datos en la vista de Discover, es hora de empezar a explorarlos. En la parte izquierda de la pantalla, verás una lista llamada Campos disponibles, que contiene los campos no vacíos de tu conjunto de datos. Cada campo estará acompañado por un ícono que indica su tipo (por ejemplo, texto, numérico, geo, fecha, etc.). Puedes hacer clic en un campo, como por ejemplo, average_vehicle_speed, para explorar sus valores y distribución. Esto te permitirá ver los valores más comunes en el campo seleccionado y obtener una visión general de su distribución a través de un histograma.
La sección de Documentos muestra los registros que coinciden con los criterios de búsqueda o el rango de tiempo seleccionado. Puedes personalizar la tabla para incluir columnas adicionales y obtener más detalles sobre los documentos. Además, si tienes la versión 8.1 o superior de Kibana, podrás aprovechar la funcionalidad de estadísticas de campo, una herramienta útil que te permite ver rápidamente los valores más frecuentes y la cardinalidad de los campos seleccionados.
En cuanto a la visualización de datos, puedes hacer uso de las herramientas de Kibana para generar gráficos, histogramas y otros tipos de visualizaciones que te permitan entender mejor las tendencias y patrones en los datos. Las funciones avanzadas de Kibana, como las consultas de Elasticsearch Query Language (ES|QL), son ideales para filtrar, ordenar y analizar los datos de forma eficiente.
Es importante resaltar que el proceso de exploración de datos no se limita solo a la visualización. Kibana también permite crear consultas complejas y realizar análisis más detallados, lo cual es esencial cuando se trabaja con grandes volúmenes de datos, como en el caso de los datos de tráfico en tiempo real. La capacidad de generar nuevos campos de datos a través de los campos en tiempo de ejecución y realizar transformaciones en los mismos es una herramienta poderosa que aumenta la flexibilidad y profundidad del análisis.
Además, es crucial comprender cómo funcionan los ciclos de vida de los índices y cómo gestionar los flujos de datos a largo plazo. Un buen manejo de estos aspectos puede mejorar significativamente el rendimiento del sistema y la eficiencia en el procesamiento de grandes cantidades de datos. El uso de plantillas de índice y políticas de ciclo de vida del índice te permitirá automatizar tareas como la rotación de índices, lo que es fundamental cuando trabajas con datos en tiempo real.
¿Cómo configurar y evaluar un modelo de regresión en análisis avanzado de datos?
Para mantener la coherencia y la fiabilidad en la construcción de un modelo de regresión, es fundamental prestar atención a la selección y gestión de las características (features) durante el entrenamiento y la predicción. Cuando se decide incluir más características, se debe considerar cuidadosamente cómo manejar las posibles discrepancias entre ellas para no afectar la precisión del modelo.
En el panel donde se selecciona el porcentaje de datos para entrenar el modelo, una elección habitual es utilizar alrededor del 50% del conjunto de datos, aunque esta proporción debe ajustarse según el tamaño del dataset y la calidad del análisis. Por ejemplo, si se dispone de más de 100,000 documentos, se recomienda comenzar con un 10 o 15%, para luego afinar este valor en función de los resultados obtenidos. Esto evita que el entrenamiento se vuelva ineficiente o que el modelo se sobreentrene con datos excesivos.
En las opciones adicionales, establecer la cantidad de características que se evaluarán por su importancia (feature importance) es clave para interpretar qué variables influyen más en cada predicción individual. Elegir un valor moderado, como 4, permite identificar las cuatro características más significativas sin afectar negativamente el rendimiento del modelo. Demasiadas características en esta etapa pueden ralentizar el proceso y complicar la interpretación sin aportar valor significativo.
Respecto a los hiperparámetros, se suele confiar en el proceso automático de optimización que realiza el sistema de aprendizaje automático, permitiendo así que el modelo encuentre la combinación óptima de parámetros sin intervención manual. Los resultados de esta optimización quedan visibles en las estadísticas del análisis al finalizar la ejecución.
Una vez configurado el trabajo, se asigna un identificador único (job ID) y una breve descripción para facilitar su seguimiento y almacenamiento. Durante la validación, es común recibir advertencias relacionadas con la importancia de las características, especialmente si el conjunto de entrenamiento es muy grande. En estos casos, se recomienda ajustar el porcentaje de entrenamiento para evitar sobrecarga en el cálculo y asegurar la estabilidad del proceso.
Cuando el modelo se lanza y comienza a ejecutarse, la duración del proceso dependerá de la cantidad de datos y del porcentaje asignado para el entrenamiento; puede tardar varios minutos, por ejemplo, unos 10 minutos en escenarios con volumen moderado. Al finalizar, se puede acceder a una página de exploración de resultados dividida en secciones que ofrecen detalles sobre el trabajo, la evaluación del modelo, la importancia total de las características, representaciones visuales y los resultados concretos en formato tabular.
La evaluación del modelo se basa en métricas esenciales como el Error Cuadrático Medio (MSE), la Raíz del Error Cuadrático Medio (RMSE) y el Error Absoluto Medio (MAE). Estas métricas cuantifican la diferencia entre los valores predichos y los valores reales del conjunto de datos, siendo fundamentales para medir la precisión y el ajuste del modelo. Valores bajos en estas métricas indican un buen ajuste. Además, el coeficiente de determinación R-cuadrado (R²) revela el porcentaje de varianza explicada por el modelo, proporcionando una medida clara de su capacidad predictiva.
El análisis de la importancia total de las características permite identificar qué variables tienen mayor impacto en las predicciones. Por ejemplo, en un modelo concreto, la variable "location_reference" puede ser la más influyente, con una magnitud promedio significativa. Esto no solo ayuda a interpretar el comportamiento del modelo, sino que también orienta en futuras mejoras y en la selección de datos para nuevos entrenamientos.
Los resultados se presentan en tablas donde se comparan los valores predichos con los reales y se muestra la importancia de cada característica para cada documento. Desde aquí, se puede profundizar en el análisis, accediendo a herramientas de visualización como Discover y Lens para construir gráficos que comparen, por ejemplo, las predicciones promedio con los valores reales a lo largo del tiempo, facilitando la identificación de patrones y anomalías.
Es fundamental comprender que los resultados varían según el tiempo y la cantidad de datos procesados, por lo que la interpretación debe hacerse considerando el contexto temporal y la evolución del conjunto de datos.
Además de lo descrito, es importante destacar que la calidad y representatividad del conjunto de datos impactan directamente en la fiabilidad del modelo. Por lo tanto, antes de entrenar un modelo de regresión, se debe realizar un exhaustivo análisis exploratorio de los datos para identificar valores atípicos, datos faltantes o sesgos que puedan distorsionar las predicciones. Asimismo, la selección adecuada de las características y la ingeniería de variables pueden mejorar significativamente el desempeño del modelo. Finalmente, la interpretación de los resultados debe siempre contemplar las limitaciones inherentes al modelo y al proceso de entrenamiento, para evitar conclusiones erróneas o sobreconfianza en las predicciones.
¿Cómo instrumentar tu aplicación con Elastic APM y configurar RUM?
Para comprender el rendimiento de nuestras aplicaciones y garantizar una experiencia de usuario fluida, es fundamental contar con herramientas que nos permitan monitorear tanto el backend como el frontend. Una de las soluciones más efectivas para lograrlo es Elastic APM (Application Performance Monitoring), una plataforma que nos permite instrumentar nuestras aplicaciones de manera sencilla y obtener datos detallados sobre el rendimiento y la experiencia del usuario.
En el ejemplo que estamos analizando, comenzamos por identificar la URL del APM Server y el token secreto, elementos cruciales para la configuración de los agentes APM de Elastic. Estos agentes recopilan datos sobre las solicitudes, consultas a bases de datos, llamadas a caché, entre otros, dependiendo del lenguaje y el marco de trabajo utilizados. Los datos recopilados son transmitidos al APM Server, que los procesa y almacena en Elasticsearch, donde posteriormente se pueden visualizar a través de Kibana, la herramienta de análisis de Elastic.
Una de las principales ventajas de Elastic APM es su capacidad de ofrecer información valiosa en tiempo real a través de una interfaz de usuario rica en detalles. Entre las características destacadas se encuentran los mapas de servicio, métricas de rendimiento detalladas, muestras de transacciones y registros de errores, todo lo cual facilita la identificación rápida de problemas y la optimización del rendimiento. Además, la integración de Elastic APM con la solución de observabilidad de Elastic ofrece métricas avanzadas como las tasas de error, latencia y rendimiento de la aplicación, y permite realizar un seguimiento exhaustivo de las transacciones.
A medida que avanzamos en la implementación de Elastic APM, añadimos también la capacidad de rastrear las interacciones de los usuarios en el navegador mediante Real User Monitoring (RUM). RUM extiende las capacidades de monitoreo más allá de los servidores y nos permite captar métricas directamente desde el navegador. Al integrar el agente de RUM en el código frontend de la aplicación, comenzamos a recopilar datos sobre la experiencia del usuario en tiempo real. Esto incluye el tiempo de carga de las páginas, las solicitudes AJAX, y los tiempos de carga y renderizado del modelo de objetos del documento (DOM), así como información adicional sobre el navegador, el sistema operativo, la ubicación geográfica de los usuarios y el tipo de dispositivo utilizado.
Para configurar RUM, lo primero es integrar el agente JavaScript de Elastic RUM en la aplicación. En el caso de una aplicación React, este agente se incorpora a través de un pequeño fragmento de código en el archivo App.js. Una vez configurado, el agente comienza a monitorear automáticamente la aplicación y a capturar métricas relevantes, como el tiempo de carga de las páginas, que son fundamentales para evaluar la experiencia del usuario.
Además de las métricas de rendimiento, RUM ofrece un panel de control específico para la experiencia del usuario, donde se pueden ver indicadores clave de rendimiento (KPI) como la distribución de la carga de páginas, la distribución regional de la carga de páginas, y el desglose de los visitantes por ubicación. Estos datos no solo permiten identificar problemas de rendimiento, sino que también ofrecen una visión más clara de cómo los usuarios interactúan con la aplicación, lo que puede ayudar a realizar mejoras significativas en la experiencia del usuario.
Una vez que se han configurado y transmitido los datos, estos se almacenan en Elasticsearch y se pueden visualizar en Kibana, lo que permite obtener una vista integral del comportamiento de la aplicación. Es posible examinar las transacciones distribuidas que incluyen tanto RUM como las transacciones del backend, lo que brinda una perspectiva completa sobre el flujo de información entre el cliente y el servidor.
Este enfoque de monitoreo integral es crucial para las aplicaciones modernas, especialmente aquellas basadas en microservicios. Cada microservicio se puede instrumentar con agentes APM específicos que permiten un seguimiento detallado de cada componente, mientras que RUM asegura que se monitoree la experiencia del usuario de manera directa. De esta manera, los equipos de desarrollo y operaciones pueden detectar rápidamente los incidentes y optimizar el rendimiento de la aplicación en su totalidad.
En este sentido, es importante comprender que el uso de Elastic APM no solo permite detectar problemas de rendimiento, sino que también proporciona una base sólida para realizar mejoras continuas. La visibilidad total sobre el rendimiento tanto en el lado del servidor como en el lado del cliente, combinada con las capacidades de análisis de Kibana, facilita la toma de decisiones informadas que pueden resultar en aplicaciones más rápidas, estables y con una experiencia de usuario más satisfactoria.
A medida que se implementa Elastic APM y RUM en una aplicación, los desarrolladores y equipos de operaciones deben asegurarse de ajustar adecuadamente la configuración de los agentes y supervisar regularmente los resultados a través de los paneles de control de Kibana. Estos ajustes continuos y el monitoreo de los KPIs de experiencia del usuario aseguran que las aplicaciones no solo se mantengan operativas, sino que también proporcionen la mejor experiencia posible a sus usuarios.
¿Cómo activar los registros de auditoría en Elasticsearch y Kibana?
El monitoreo efectivo de plataformas y la trazabilidad de todas las acciones realizadas por los usuarios en ellas es fundamental para garantizar la seguridad y el cumplimiento de regulaciones. Uno de los métodos más efectivos para lograr esto es mediante el uso de los registros de auditoría. Los registros de auditoría permiten monitorear y rastrear las actividades realizadas en una plataforma, proporcionando una capa adicional de transparencia y seguridad. En este contexto, veremos cómo activar y configurar los registros de auditoría en Elastic Stack, específicamente en Elasticsearch y Kibana, para obtener una mayor visibilidad de los eventos en estos sistemas.
El proceso de activación de los registros de auditoría en Elasticsearch y Kibana sigue un enfoque doble. Primero, se debe habilitar la funcionalidad de auditoría en Elasticsearch, y luego en Kibana. Aunque es posible activar solo uno de los dos componentes, lo ideal es tener ambos habilitados para generar registros de auditoría, ya que esto permite correlacionar los eventos desde Kibana hasta Elasticsearch, lo cual resulta en un análisis mucho más completo.
Para habilitar los registros de auditoría en Elasticsearch, debemos realizar una serie de configuraciones en el panel de usuario. En la consola de Elastic Cloud, es necesario seleccionar la opción de "Administrar" junto al nombre de la implementación principal. Posteriormente, en el menú de la izquierda, se debe hacer clic en "Editar" y luego en "Gestionar la configuración de usuario y extensiones" junto a Elasticsearch. En este panel, es donde se deben ingresar las opciones específicas para activar los registros de auditoría:
Una vez que se hayan ingresado los parámetros, es importante hacer clic en "Volver" para guardar los cambios. Después, se debe proceder a habilitar los registros de auditoría en Kibana. En el panel de configuración de usuario de Kibana, se debe agregar una línea similar al archivo de configuración:
Una vez realizadas ambas configuraciones, es necesario guardar los cambios y confirmar la implementación. Posteriormente, se deberá reiniciar tanto Elasticsearch como Kibana para que los cambios tengan efecto. Este paso es esencial para que las configuraciones de auditoría se apliquen correctamente.
Una vez que los registros de auditoría estén activados, podemos proceder a visualizar y explorar los eventos registrados. En Kibana, se debe acceder a la sección "Discover" bajo "Analytics" para examinar los registros de auditoría. Aquí, es posible crear una vista de datos que nos permita filtrar y observar los eventos relevantes, como los intentos de inicio de sesión o las acciones realizadas por los usuarios. Al crear un filtro en el campo "event.dataset" y seleccionar los valores "kibana.audit" y "elasticsearch.audit", se podrá ver un listado de los eventos registrados en ambas plataformas.
Por ejemplo, si un administrador desea conocer la cantidad de intentos de inicio de sesión fallidos y en qué espacios ocurrió, puede usar el lenguaje de consulta de Elasticsearch (ES|QL) para ejecutar una simple consulta:
De esta forma, obtendremos una tabla y un gráfico que muestren los resultados relevantes, tales como los intentos de acceso y los resultados de cada uno.
Otro ejemplo común podría ser rastrear a los usuarios que recientemente han sido autorizados para acceder a recursos del sistema. Para ello, se puede usar la siguiente consulta:
Los resultados permitirán identificar rápidamente quién tuvo acceso a qué recursos, lo que es crucial para monitorear el comportamiento de los usuarios dentro de la plataforma.
Los registros de auditoría no solo son útiles para la seguridad y el cumplimiento, sino que también pueden ser empleados para crear paneles de control que permitan monitorear de manera continua la actividad en la plataforma. Esta capacidad es particularmente valiosa en entornos regulados o para clústeres de producción donde la integridad del sistema es de suma importancia.
Los eventos de auditoría en Elasticsearch y Kibana cubren una amplia gama de actividades que son esenciales para garantizar la seguridad y el buen funcionamiento del sistema. En el caso de Elasticsearch, algunos de los eventos clave incluyen:
-
Autenticación: éxito y fracaso en los intentos de autenticación, lo cual es útil para identificar posibles brechas de seguridad o problemas de acceso.
-
Acceso concedido o denegado: información sobre cuándo se permite o se bloquea el acceso a recursos, lo cual es crucial para detectar accesos no autorizados.
-
Creación y eliminación de índices: eventos relacionados con cambios en la estructura de datos, lo que permite verificar posibles modificaciones no autorizadas.
-
Creación y eliminación de claves de API: gestión de claves de API, lo cual es esencial para garantizar la seguridad de las integraciones externas.
En Kibana, algunos de los eventos relevantes incluyen:
-
Eventos de inicio y cierre de sesión: capturan el acceso de los usuarios y pueden ayudar a identificar patrones anormales.
-
Lectura y escritura de objetos guardados: registra las interacciones de los usuarios con objetos como paneles e informes, lo que permite monitorear cambios y uso.
-
Creación y eliminación de espacios: proporciona información sobre cómo se gestionan y organizan los recursos dentro de Kibana.
-
Gestión de usuarios y roles: registra cualquier cambio en las cuentas de usuario o roles, lo cual es fundamental para mantener un control de acceso adecuado.
Si bien la activación de los registros de auditoría proporciona una capa crucial de visibilidad, es importante tener en cuenta la posible verbosidad de estos registros. Para evitar una sobrecarga de información y asegurar que solo se registren los eventos relevantes, es esencial gestionar adecuadamente los niveles de detalle de los registros y configurar filtros que permitan centrarse solo en las actividades más críticas.
¿Cómo afecta la globalización al bienestar económico y social de los trabajadores y consumidores?
¿Cómo las comunidades rurales perciben la política y el impacto de sus valores en las elecciones?
¿Cómo la honestidad, lealtad y equidad construyen relaciones empresariales sostenibles?

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