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.
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.
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):
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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 cuidadosamente el volumen, la frecuencia y la retención de registros es crucial para una administración y almacenamiento de registros eficientes.
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.
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.
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.
El tiempo que se debe mantener un registro depende de varios factores, entre ellos:
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:
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í