Registro - AWS Guía prescriptiva

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Registro

El registro es el proceso de conservar los datos sobre los eventos que se producen en un sistema. El registro puede incluir problemas, errores o información sobre la operación actual. Los registros se pueden clasificar en distintos tipos, como los siguientes:

  • Registro de eventos

  • Registro del servidor

  • Registro del sistema

  • Registros de autorización y acceso

  • Registros de auditoría

Un desarrollador puede buscar en los registros códigos o patrones de error específicos, filtrarlos en función de campos específicos o archivarlos de forma segura para futuros análisis. Los registros ayudan al desarrollador a analizar la causa raíz de los problemas de rendimiento y también a establecer una correlación entre los componentes del sistema.

La creación de una solución de registro eficaz implica una estrecha coordinación entre los equipos de aplicaciones e infraestructura. Los registros de las aplicaciones no son útiles a menos que haya una infraestructura de registro escalable que admita casos de uso como el análisis, el filtrado, el almacenamiento en búfer y la correlación de registros. Se pueden simplificar los casos de uso habituales, como la generación de un identificador de correlación, el registro del tiempo de ejecución de los métodos fundamentales para la empresa y la definición de los patrones de registro.

Equipo de aplicaciones

El desarrollador de aplicaciones debe asegurarse de que los registros generados sigan las mejores prácticas de registro. Entre las prácticas recomendadas se incluyen las siguientes:

  • Generar identificadores de correlación para realizar un seguimiento de las solicitudes únicas

  • Registrar el tiempo empleado por los métodos fundamentales para el negocio

  • Registrar a un nivel de registro adecuado

  • Compartir una biblioteca de registro común

Al diseñar aplicaciones que interactúan con distintos microservicios, utilice estos principios de diseño de registros para simplificar el filtrado y la extracción de registros en el backend.

Generar identificadores de correlación para realizar un seguimiento de las solicitudes únicas

Cuando la aplicación recibe la solicitud, puede comprobar si ya hay un identificador de correlación en el encabezado. Si no hay ningún ID, la aplicación debería generar un ID. Por ejemplo, un Application Load Balancer agrega un encabezado llamado. X-Amzn-Trace-Id La aplicación puede usar el encabezado para correlacionar la solicitud del balanceador de cargas con la aplicación. Del mismo modo, traceId si llama a microservicios dependientes, la aplicación debería realizar una inyección para que los registros generados por los distintos componentes de un flujo de solicitudes estén correlacionados.

Registrar el tiempo empleado por los métodos fundamentales para la empresa

Cuando la aplicación recibe una solicitud, interactúa con un componente diferente. La aplicación debe registrar el tiempo empleado en los métodos críticos para el negocio siguiendo un patrón definido. Esto puede facilitar el análisis de los registros en el backend. También puede ayudarte a generar información útil a partir de los registros. Puede utilizar enfoques como la programación orientada a aspectos (AOP) para generar dichos registros, de modo que pueda separar las cuestiones relacionadas con el registro de su lógica empresarial.

Registrar a un nivel de registro adecuado

La aplicación debe escribir registros que contengan una cantidad útil de información. Utilice los niveles de registro para clasificar los eventos según su gravedad. Por ejemplo, utilice ERROR los niveles WARNING y los niveles para los eventos importantes que deban investigarse. Utilice INFO y DEBUG para un seguimiento detallado y eventos de gran volumen. Configure los controladores de registros para capturar solo los niveles necesarios en la producción. Generar demasiados registros a INFO nivel no es útil y añade presión a la infraestructura de back-end. DEBUGel registro puede ser útil, pero debe usarse con precaución. El uso de DEBUG registros puede generar un gran volumen de datos, por lo que no se recomienda en entornos de pruebas de rendimiento.

Compartir una biblioteca de registro común

Los equipos de aplicaciones deberían usar una biblioteca de registro común, por ejemplo AWS SDK para Java, con un patrón de registro común predefinido que los desarrolladores puedan usar como dependencias en su proyecto.

Equipo de infraestructura

DevOps Los ingenieros pueden reducir el esfuerzo utilizando los siguientes principios de diseño de registros al filtrar y extraer los registros en el backend. El equipo de infraestructura debe configurar y respaldar los siguientes recursos.

Agente de registro

Un agente de registro (log shipper) es un programa que lee los registros de una ubicación y los envía a otra ubicación. Los agentes de registro se utilizan para leer los archivos de registro almacenados en un ordenador y cargar los eventos de registro en el servidor para centralizarlos.

Los registros son datos no estructurados que deben estructurarse antes de poder obtener información significativa a partir de ellos. Los agentes de registro utilizan analizadores para leer las declaraciones de registro y extraer los campos relevantes, como la marca de tiempo, el nivel de registro y el nombre del servicio, y estructuran esos datos en formato JSON. Contar con un agente de registro ligero en la periferia es útil porque reduce el uso de los recursos. El agente de registro puede enviarlos directamente al backend o puede utilizar un reenviador de registros intermediario que envíe los datos al backend. El uso de un reenviador de registros descarga el trabajo de los agentes de registro de origen.

Analizador de registros

Un analizador de registros convierte los registros no estructurados en registros estructurados. Los analizadores de agentes de registro también enriquecen los registros al agregar metadatos. El análisis de los datos se puede realizar en la fuente (extremo de la aplicación) o de forma centralizada. El esquema para almacenar los registros debe ser ampliable para que pueda añadir nuevos campos. Se recomienda utilizar formatos de registro estándar, como JSON. Sin embargo, en algunos casos, los registros deben transformarse a formatos JSON para una mejor búsqueda. Escribir la expresión del analizador correcta permite una transformación eficiente.

El backend de los registros

Un servicio de backend de registros recopila, ingiere y visualiza los datos de registro de varias fuentes. El agente de registro puede escribir directamente en el backend o utilizar un reenviador de registros intermediario. Mientras realiza las pruebas de rendimiento, asegúrese de almacenar los registros para poder buscarlos más adelante. Guarde los registros en el backend por separado para cada aplicación. Por ejemplo, utilice un índice específico para una aplicación y utilice un patrón de índice para buscar registros distribuidos en diferentes aplicaciones relacionadas. Recomendamos guardar al menos 7 días de datos para la búsqueda en los registros. Sin embargo, almacenar los datos durante más tiempo puede generar costes de almacenamiento innecesarios. Como durante la prueba de rendimiento se genera un gran volumen de registros, es importante que la infraestructura de registro escale y dimensione correctamente el backend de registro.

Visualización de registros

Para obtener información útil y útil a partir de los registros de las aplicaciones, utilice herramientas de visualización específicas para procesar y transformar los datos de registro sin procesar en representaciones gráficas. Las visualizaciones, como tablas, gráficos y paneles de control, pueden ayudar a descubrir tendencias, patrones y anomalías que tal vez no se aprecien fácilmente al observar los registros sin procesar.

Las principales ventajas del uso de herramientas de visualización incluyen la capacidad de correlacionar los datos de varios sistemas y aplicaciones para identificar las dependencias y los cuellos de botella. Los paneles interactivos permiten desglosar los datos con distintos niveles de granularidad para solucionar problemas o detectar tendencias de uso. Las plataformas especializadas de visualización de datos ofrecen funciones como el análisis, las alertas y el intercambio de datos que pueden mejorar la supervisión y el análisis.

Al utilizar el poder de la visualización de datos en los registros de las aplicaciones, los equipos de desarrollo y operaciones pueden obtener visibilidad del rendimiento de los sistemas y las aplicaciones. La información obtenida se puede utilizar para diversos fines, entre los que se incluyen la optimización de la eficiencia, la mejora de la experiencia del usuario, la mejora de la seguridad y la planificación de la capacidad. El resultado final son paneles de control diseñados para las distintas partes interesadas, que proporcionan at-a-glance vistas que resumen los datos de registro en información útil y detallada.

Automatizar la infraestructura de registro

Dado que las distintas aplicaciones tienen requisitos diferentes, es importante automatizar la instalación y las operaciones de la infraestructura de registro. Utilice herramientas de infraestructura como código (IaC) para aprovisionar el backend de la infraestructura de registro. A continuación, puede aprovisionar la infraestructura de registro como un servicio compartido o como una implementación independiente a medida para una aplicación concreta.

Recomendamos que los desarrolladores utilicen canalizaciones de entrega continua (CD) para automatizar lo siguiente:

  • Implemente la infraestructura de registro a pedido y destrúyala cuando no sea necesaria.

  • Implemente agentes de registro en diferentes objetivos.

  • Implemente configuraciones de analizadores y reenviadores de registros.

  • Implemente paneles de aplicaciones.

Herramientas de registro

AWS proporciona servicios nativos de registro, alarmas y paneles de control. Los siguientes son populares Servicios de AWS y recursos para el registro: