paint-brush
Cómo extraer el valor máximo de los registrospor@alvinslee
1,460 lecturas
1,460 lecturas

Cómo extraer el valor máximo de los registros

por Alvin Lee9m2023/08/25
Read on Terminal Reader

Demasiado Largo; Para Leer

Veremos cómo se pueden diseñar los registros, los desafíos y las soluciones para iniciar sesión en sistemas grandes y cómo pensar en las métricas basadas en registros y la retención a largo plazo.
featured image - Cómo extraer el valor máximo de los registros
Alvin Lee HackerNoon profile picture

Podría decirse que el registro es el elemento más importante de su solución de observabilidad. Los registros proporcionan información fundamental y rica sobre el comportamiento del sistema. En un mundo ideal, usted tomaría todas las decisiones sobre el registro e implementaría un enfoque coherente en todo su sistema.


Sin embargo, en el mundo real, es posible que trabaje con software heredado o trabaje con diferentes lenguajes de programación, marcos y paquetes de código abierto, cada uno con su propio formato y estructura para el registro.


Con tal diversidad de formatos de registros en su sistema, ¿qué pasos puede seguir para extraer el máximo valor de todos sus registros? Eso es lo que cubriremos en esta publicación.


Veremos cómo se pueden diseñar los registros, los desafíos y las soluciones para iniciar sesión en sistemas grandes y cómo pensar en las métricas basadas en registros y la retención a largo plazo.


Profundicemos con un vistazo a los niveles y formatos de registro.

Diseño de registro

Se toman muchas consideraciones en el diseño de registros, pero los dos aspectos más importantes son el uso de niveles de registro y si se deben utilizar formatos de registro estructurados o no estructurados.

Niveles de registro

Los niveles de registro se utilizan para categorizar los mensajes de registro según su gravedad. Los niveles de registro específicos utilizados pueden variar según el marco o sistema de registro. Sin embargo, los niveles de registro comúnmente utilizados incluyen (en orden de detalle, de mayor a menor):


  • TRACE : captura cada acción que realiza el sistema, para reconstruir un registro completo y contabilizar cualquier cambio de estado.


  • DEBUG : Captura información detallada para fines de depuración. Por lo general, estos mensajes solo son relevantes durante el desarrollo y no deben habilitarse en entornos de producción.


  • INFO : Proporciona información general sobre el funcionamiento del sistema para transmitir eventos o hitos importantes en la ejecución del sistema.


  • ADVERTENCIA : Indica posibles problemas o situaciones que podrían requerir atención. Estos mensajes no son críticos pero deben anotarse e investigarse si es necesario.


  • ERROR : Indica errores ocurridos durante la ejecución del sistema. Estos mensajes normalmente resaltan problemas que deben abordarse y que podrían afectar la funcionalidad del sistema.


El registro en el nivel apropiado ayuda a comprender el comportamiento del sistema, identificar problemas y solucionar problemas de manera efectiva.


Cuando se trata de componentes del sistema que construye, le recomendamos que dedique algo de tiempo a definir el conjunto de niveles de registro que son útiles. Comprenda qué tipo de información se debe incluir en los mensajes en cada nivel de registro y utilice los niveles de registro de manera consistente.


Más adelante, discutiremos cómo lidiar con aplicaciones de terceros, donde no tienes control sobre los niveles de registro. También veremos las aplicaciones heredadas que usted controla pero que son demasiado amplias para migrarlas a los niveles de registro estándar.

Registros estructurados versus no estructurados

Las entradas en registros estructurados tienen un formato bien definido, generalmente como pares clave-valor u objetos JSON. Esto permite entradas de registro consistentes y legibles por máquina, lo que facilita el análisis de los datos de registro mediante programación.


El registro estructurado permite realizar consultas y análisis de registros avanzados, lo que lo hace particularmente útil en sistemas a gran escala.


Por otro lado, el registro no estructurado (de forma libre) captura mensajes en un formato más legible para los humanos, sin una estructura predefinida. Este enfoque permite a los desarrolladores registrar mensajes de forma más natural y flexible.


Sin embargo, extraer mediante programación información específica de los registros resultantes puede resultar muy complicado.


La elección entre registros estructurados y no estructurados depende de sus necesidades específicas y de los requisitos y limitaciones de su sistema. Si prevé la necesidad de un análisis de registros avanzado o de integración con herramientas de análisis de registros, los registros estructurados pueden proporcionar beneficios significativos.


Sin embargo, si todo lo que necesita es simplicidad y legibilidad, entonces los registros no estructurados pueden ser suficientes.


En algunos casos, también se puede utilizar un enfoque híbrido, en el que se utilizan registros estructurados para eventos importantes y registros no estructurados para mensajes más generales.


Para sistemas a gran escala, debería inclinarse por el registro estructurado cuando sea posible, pero tenga en cuenta que esto añade otra dimensión a su planificación. La expectativa de los mensajes de registro estructurados es que se utilice el mismo conjunto de campos de manera consistente en todos los componentes del sistema. Esto requerirá una planificación estratégica.

Desafíos de registro

Con sistemas que comprenden múltiples componentes, lo más probable es que cada componente tenga su propio modelo para administrar sus registros. Repasemos los desafíos que esto trae.

Destinos dispares

Los componentes se registrarán en diferentes destinos: archivos, registros del sistema, stdout o stderr. En los sistemas distribuidos, recopilar estos registros dispersos para un uso eficaz es engorroso.


Para ello, necesitará un enfoque diversificado para la recopilación de registros, como el uso de recopiladores instalados y recopiladores alojados de Sumo Logic.

Diferentes formatos

Algunos componentes utilizarán registros no estructurados y de formato libre, sin seguir ningún formato en particular. Mientras tanto, los registros estructurados pueden estar más organizados, pero los componentes con registros estructurados pueden emplear conjuntos de campos completamente diferentes.


Unificar la información que se obtiene de una diversidad de registros y formatos requiere las herramientas adecuadas.

Niveles de registro inconsistentes

Los componentes de su sistema pueden utilizar diferentes rangos de niveles de registro. Incluso si consolida todos los mensajes de registro en un sistema de registro centralizado (como debería), deberá ocuparse de la unión de todos los niveles de registro.


Un desafío que surge es cuándo los diferentes niveles de registro deben tratarse de la misma manera. Por ejemplo, un ERROR en un componente puede ser igual que CRÍTICO en otro componente, lo que requiere una escalada inmediata.


Te enfrentas al desafío opuesto cuando el mismo nivel de registro en diferentes componentes significa cosas diferentes. Por ejemplo, los mensajes INFO en un componente pueden ser esenciales para comprender el estado del sistema, mientras que en otro componente pueden ser demasiado detallados.

Costo de almacenamiento de registros

Los grandes sistemas distribuidos acumulan muchos registros. Recopilar y almacenar estos registros no es barato. Los costos relacionados con los registros en la nube pueden representar una parte importante del costo total del sistema.

Cómo afrontar estos desafíos

Si bien los desafíos de iniciar sesión en sistemas distribuidos grandes son importantes, se pueden encontrar soluciones mediante algunas de las siguientes prácticas.

Agregue sus registros

Cuando ejecuta un sistema distribuido, debe utilizar una solución de registro centralizada. A medida que ejecuta agentes de recopilación de registros en cada máquina de su sistema, estos recopiladores enviarán todos los registros a su plataforma central de observabilidad.


Sumo Logic, que siempre se ha centrado en la gestión y el análisis de registros , es el mejor de su clase cuando se trata de agregación de registros.

Avanzar hacia un formato unificado

Tratar con registros en diferentes formatos es un gran problema si desea correlacionar datos de registro para análisis y resolución de problemas entre aplicaciones y componentes. Una solución es transformar diferentes registros en un formato unificado.


El nivel de esfuerzo para esta tarea puede ser alto, así que considere hacerlo en fases, comenzando con los componentes más esenciales y avanzando hacia abajo.

Establezca un estándar de registro en todas sus aplicaciones

Para sus propias aplicaciones, trabaje para establecer un enfoque de registro estándar que adopte un conjunto uniforme de niveles de registro, un formato de registro estructurado único y una semántica coherente.


Si también tiene aplicaciones heredadas, evalúe el nivel de riesgo y el costo asociado con migrarlas para cumplir con su estándar.


Si una migración no es factible, trate sus aplicaciones heredadas como lo haría con las aplicaciones de terceros.

Enriquezca registros de fuentes de terceros

Enriquecer los registros de fuentes de terceros implica mejorar los datos de registro con información contextual de sistemas o servicios externos. Esto brinda una mejor comprensión de los eventos de registro, lo que ayuda en la resolución de problemas, el análisis y las actividades de monitoreo.


Para enriquecer sus registros, puede integrar sistemas externos (como API o colas de mensajes) para obtener datos complementarios relacionados con eventos de registro (como información del usuario, detalles del cliente o métricas del sistema).

Administrar el volumen, la frecuencia y la retención de registros

Administrar cuidadosamente el volumen, la frecuencia y la retención de registros es crucial para una administración y almacenamiento de registros eficientes.


  • Volumen : monitorear el volumen de registros generado lo ayuda a controlar el consumo de recursos y los impactos en el rendimiento.


  • Frecuencia : determine con qué frecuencia registrar, según la criticidad de los eventos y el nivel deseado de monitoreo.


  • Retención : defina una política de retención de registros adecuada para los requisitos de cumplimiento, las necesidades operativas y el almacenamiento disponible.


  • Rotación : archive o purgue periódicamente los archivos de registro más antiguos para administrar el tamaño de los archivos de registro de manera efectiva.


  • Compresión : comprima los archivos de registro para reducir los requisitos de almacenamiento.

Métricas basadas en registros

Las métricas que se derivan del análisis de datos de registro pueden proporcionar información sobre el comportamiento y el rendimiento del sistema. Trabajar con métricas basadas en registros tiene sus beneficios y desafíos.

Beneficios

  • Información granular : las métricas basadas en registros brindan información detallada y granular sobre los eventos del sistema, lo que le permite identificar patrones, anomalías y problemas potenciales.


  • Monitoreo integral : al aprovechar las métricas basadas en registros, puede monitorear su sistema de manera integral, obteniendo visibilidad de métricas críticas relacionadas con la disponibilidad, el rendimiento y la experiencia del usuario.


  • Análisis histórico : las métricas basadas en registros proporcionan datos históricos que se pueden utilizar para análisis de tendencias, planificación de capacidad y optimización del rendimiento. Al examinar las tendencias de los registros a lo largo del tiempo, puede tomar decisiones basadas en datos para mejorar la eficiencia y la escalabilidad.


  • Flexibilidad y personalización : puede adaptar la extracción de métricas basadas en registros para adaptarlas a su aplicación o sistema, centrándose en los eventos y puntos de datos que sean más significativos para sus necesidades.

Desafíos

  • Definición de métricas significativas : debido a que el conjunto de métricas disponibles para usted en todos sus componentes es increíblemente amplio (y no tendría sentido capturarlas todas), identificar qué métricas capturar y extraer de los registros puede ser una tarea compleja.


    Esta identificación requiere una comprensión profunda del comportamiento del sistema y una estrecha alineación con sus objetivos comerciales.


  • Extracción y análisis de datos : el análisis de registros para extraer métricas útiles puede requerir herramientas especializadas o analizadores personalizados. Esto es especialmente cierto si los registros no están estructurados o tienen un formato inconsistente de un componente al siguiente.


    Configurar esto puede llevar mucho tiempo y puede requerir mantenimiento a medida que cambian los formatos de registro o surgen nuevas fuentes de registro.


  • Necesidad de análisis en tiempo real : los retrasos en el procesamiento de métricas basadas en registros pueden generar métricas obsoletas o irrelevantes. Para la mayoría de las situaciones, necesitará una plataforma que pueda realizar un procesamiento rápido y en tiempo real de los datos entrantes para aprovechar las métricas basadas en registros de manera efectiva.


  • Impacto en el rendimiento : la captura continua de métricas de perfiles de componentes supone una carga adicional para los recursos del sistema. Deberá encontrar un buen equilibrio entre capturar suficientes métricas basadas en registros y mantener un rendimiento adecuado del sistema.


  • Ruido e irrelevancia de los datos : los datos de registro a menudo incluyen mucho ruido e información irrelevante, lo que no contribuye a métricas significativas. Es necesario un cuidadoso filtrado y normalización de registros para centrar la recopilación de datos en eventos relevantes.

Retención de registros a largo plazo

Una vez que haya dado el paso hacia la agregación de registros en un sistema centralizado, aún deberá considerar políticas de retención de registros a largo plazo. Cubramos las preguntas críticas para esta área.

¿Cuánto tiempo se deben conservar los registros?

El tiempo que se debe mantener un registro depende de varios factores, entre ellos:


  • Tipo de registro : algunos registros (como los registros de acceso) se pueden eliminar después de un breve período de tiempo. Es posible que sea necesario conservar otros registros (como los registros de errores) durante más tiempo en caso de que sean necesarios para solucionar problemas.


  • Requisitos regulatorios : industrias como la atención médica y las finanzas tienen regulaciones que requieren que las organizaciones mantengan registros durante un tiempo determinado, a veces incluso algunos años.


  • Política de la empresa : su empresa puede tener políticas que dicten cuánto tiempo se deben conservar los registros.


  • Tamaño de registro : si sus registros son grandes, es posible que deba rotarlos o eliminarlos con más frecuencia.


  • Costo de almacenamiento : independientemente de dónde almacene sus registros (en las instalaciones o en la nube), deberá tener en cuenta el costo del almacenamiento.

¿Cómo se reduce el nivel de detalle y el costo de los registros más antiguos?

Eliminar registros antiguos es, por supuesto, la forma más sencilla de reducir los costos de almacenamiento. Sin embargo, puede ser un poco torpe y, a veces, es posible que desee conservar la información de los registros antiguos.


Cuando desee conservar información de registros antiguos, pero también desee ser rentable, considere tomar algunas de estas medidas:


  • Reducción de resolución de registros : en el caso de componentes que generan muchas declaraciones de registro repetitivas, es posible ingerir solo un subconjunto de las declaraciones (por ejemplo, 1 de cada 10).


  • Recortar registros : para registros con mensajes grandes, puede descartar algunos campos. Por ejemplo, si un registro de errores tiene un código de error y una descripción del error, es posible que tenga toda la información que necesita conservando solo el código de error.


  • Compresión y archivado : puede comprimir registros antiguos y moverlos a un almacenamiento más económico y menos accesible (especialmente en la nube). Esta es una excelente solución para los registros que necesita almacenar durante años para cumplir con los requisitos normativos.

Conclusión

En este artículo, analizamos cómo aprovechar al máximo el registro en sistemas a gran escala.


Aunque iniciar sesión en estos sistemas presenta un conjunto único de desafíos, hemos analizado posibles soluciones a estos desafíos, como la agregación de registros, la transformación de registros a un formato unificado y el enriquecimiento de registros con datos de fuentes de terceros.


El registro es una parte fundamental de la observabilidad. Si sigue las prácticas descritas en este artículo, puede asegurarse de que sus registros se administren de manera efectiva, lo que le permitirá solucionar problemas, identificar problemas y obtener información sobre el comportamiento de su sistema.


Y puede hacerlo manteniendo a raya los costos de tala.


También publicado aquí