Ahora disponible: la guía de código abierto para las herramientas de monitoreo de DevOps

En esta nueva serie, nos centraremos en las herramientas de monitoreo y observabilidad de DevOps. En las próximas semanas, exploraremos la agregación y el monitoreo de métricas, la agregación de registros, las alertas y vistas, y el seguimiento distribuido. Como alternativa, puede descargar la guía de código abierto completa para las herramientas de monitoreo de DevOps ahora mismo.

Vamos a empezar.

Índice

Un cuento con dos visiones

Una vez, estaba resolviendo algunos problemas molestos en una aplicación que necesitaba escalarse en varios órdenes de magnitud, con solo un par de semanas para rediseñar. No teníamos agregación de registros, agregación de métricas, seguimiento distribuido ni visualización. La mayor parte de nuestro trabajo tuvo que realizarse en los nodos de producción reales utilizando herramientas como rompió y navegar a través de los registros. Estas son excelentes herramientas, pero no facilitan el análisis de un sistema distribuido en docenas de hosts. Hicimos el trabajo, pero fue doloroso e implicó muchas más conjeturas y riesgos de los que yo prefería.

En otro trabajo, ayudé a solucionar problemas de una aplicación de producción que sufría un problema de poca memoria (OOM). El problema era inconsistente, ya que no parecía estar relacionado con el tiempo de ejecución, la carga, la hora del día o cualquier otro aspecto que proporcionara cierta previsibilidad. Obviamente, esto habría sido un problema difícil de diagnosticar en un sistema que comprendía cientos de hosts con muchas aplicaciones llamándolo. Afortunadamente, teníamos agregación de registros, seguimiento distribuido, agregación de métricas y una gran cantidad de vistas. Examinamos nuestro gráfico de memoria y notamos un fuerte aumento en el uso de la memoria, por lo que usamos ese aumento para alertarnos y poder diagnosticar el problema en tiempo real cuando ocurrió.

Cuando recibimos una alerta, cambiamos a nuestro sistema de agregación de registros para correlacionar los registros con el pico de memoria. Encontramos el error OOM y las llamadas relacionadas. Luego descubrimos qué aplicación estaba llamando al servicio que causaba el pico y usamos esa información para encontrar la transacción exacta que causó el problema. Determinamos que alguien había almacenado un archivo enorme en una base de datos que nuestro servicio estaba tratando de cargar, pero el servicio se estaba quedando sin memoria antes de que pudiera cargar y procesar el registro por completo. Deberíamos habernos defendido de esto en primer lugar, pero nos alegramos de encontrarlo tan rápido y solucionarlo con el mínimo esfuerzo. Una vez que entendimos el error, encontramos que muchos registros tenían archivos grandes como este y no necesitábamos esa parte del registro para funcionar correctamente.

Uno podría pensar que la segunda situación sucedió mucho tiempo después de la primera y que hemos mejorado con el tiempo. O tal vez sospechas que cuando cambié de trabajo, mi nueva empresa tenía mejores herramientas. En realidad, la segunda situación ocurrió antes que la primera. Pasé de una empresa con herramientas de observabilidad bastante avanzadas a una sin herramientas de observabilidad. Fue sorprendentemente perturbador para el desarrollador tener una aplicación en producción y no saber nada al respecto. Aprendí mucho sobre la importancia de la observabilidad del sistema y las herramientas relacionadas cuando comencé a reconstruir esa infraestructura. También, la de Mike Julian Seguimiento práctico es una lectura obligada para cualquiera que quiera aprender más sobre sus sistemas.

Principios de observabilidad

Entonces, ¿cuáles son las herramientas de observabilidad? En realidad, ¿qué es la observabilidad?

La observabilidad no es solo un término de marketing; es un componente de teoría del control. Si quieres una cartilla rápida, esta video podría ser útil. Básicamente, la observabilidad significa que puede estimar un estado particular de un sistema en función de una salida. Más generalmente, el estado de un sistema debería ser determinista a partir de sus salidas. controlabilidad, la matemático dual la observabilidad de un sistema requiere que un estado del sistema sea determinado por las entradas al sistema.

Este es un concepto bastante simple, pero es muy difícil de poner en práctica. En un sistema lo suficientemente complejo, puede ser casi imposible implementar la observabilidad completa. Sin embargo, debe esforzarse por obtener los resultados correctos que le permitan determinar el estado del sistema, especialmente cuando se produce un modo de error.

Tipos de herramientas de observabilidad

En esta serie, veremos diferentes tipos de herramientas de observabilidad. Para cada tipo, cubriremos para qué se usan, qué herramientas específicas están disponibles, algunos casos de uso y cualquier característica única que pueda surgir al buscar una nueva herramienta. Estos se presentan en el orden en que debe implementarlos. La agregación de métricas es la primera, ya que a menudo es fácil instrumentar una aplicación creada con cualquier lenguaje moderno. El segundo es el registro porque requerirá múltiples cambios en la aplicación pero proporciona un gran valor. El tercero son las alertas y pantallas, que requieren los dos primeros tipos para una funcionalidad completa. Y el último es el seguimiento distribuido, ya que puede no ser necesario en un monolito simple y es mucho más difícil de implementar por completo.

Agregación de métricas

Este tipo de instrumento normalmente consta de datos de series temporales. Los datos de series temporales son datos que se ordenan a lo largo del tiempo y, por lo general, se recopilan con un intervalo internamente coherente. Esta coherencia le permite aplicar algunos cálculos avanzados a la serie y proporciona un análisis predictivo mediante regresiones simples o algoritmos más avanzados.

Agregación de registros

Estas herramientas tratan con tipos de datos que están más relacionados con eventos que con una serie de puntos de datos consistentes. Esta salida a menudo se emite cuando un sistema entra en un estado no deseado. Algunos sistemas generan muchos registros que no cumplen esta condición. Cubriremos más cosas que hacer y no hacer para iniciar sesión en un artículo futuro.

Advertencias / pantallas

Esto puede no parecer compatible con los otros tipos enumerados, ya que en realidad es posterior a los demás, pero proporciona una salida consumible para los otros tipos y puede producir sus propias salidas. Este tipo de herramientas generalmente hacen que el sistema sea más comprensible para los humanos. También ayudan a crear un sistema más interactivo a través de notificaciones proactivas y reactivas sobre estados negativos del sistema.

Seguimiento distribuido

Al igual que el seguimiento dentro de una sola aplicación, el seguimiento distribuido le permite seguir una sola transacción en todo un sistema. Esto le permite concentrarse en transacciones específicas que pueden tener problemas. Debido a problemas de rendimiento, a menudo se aplica un algoritmo de muestreo.

Funciones comunes de DevOps

Hay varios aspectos que debes buscar en cualquier tipo de herramienta de observabilidad. Cubriremos estos en general ahora y los resumiremos en futuros artículos.

API abierta

Esta especificación se llamaba anteriormente Swagger, pero se le cambió el nombre cuando fue adoptada por el Iniciativa OpenAPI dentro de Fundación Linux. La especificación OpenAPI es una herramienta independiente del idioma que puede generar automáticamente documentación de métodos, parámetros y plantillas. Esto se usa comúnmente para generar interfaces RESTful en HTTP, pero también es independiente del protocolo. Un usuario puede crear un cliente en casi cualquier idioma si aún no existe uno. Cada herramienta debería tener este tipo de API (o debería tenerla pronto). Si su herramienta aún no la tiene, es posible que desee buscar en otra parte. Es probable que las herramientas que no hayan implementado esta especificación o no la tengan en su hoja de ruta tengan otras deficiencias a la hora de adoptar estándares y códigos abiertos y modernos.

Fuente abierta

Hay muchas buenas herramientas en este espacio que no son de código abierto pero que pueden ser adecuadas para su negocio. Si elige una de estas herramientas, asegúrese de que la documentación y las herramientas accesorias sean de código abierto. Las herramientas de observabilidad de código abierto pueden proporcionar información valiosa sobre cómo funcionan (o quizás no funcionan) otras herramientas de observabilidad. También ofrecen todos los demás beneficios de cualquier proyecto de código abierto sobre los que puede leer más en .

Estándares abiertos

Independientemente de si una herramienta es de código abierto o no, siempre debe usar estándares abiertos siempre que sea posible. Ya hemos hablado de uno, OpenAPI, pero hay muchos otros. Analizaremos estos estándares en las secciones correspondientes para asegurarnos de que sepa que existen y dónde se utilizan.

Extendido

Parte de la observabilidad y la apertura permite que todos vean los datos. Las herramientas que elija deben estar abiertas de forma predeterminada. Es posible que desee restringir algunas áreas, pero le recomendamos que configure de forma predeterminada para abrir y cerrar el acceso solo si es absolutamente necesario. Nunca se sabe quién en su empresa puede querer resolver su problema o a quién necesitará involucrar para ayudarlo a resolver un problema. Lo último que deseará es tener acceso a las barreras al solucionar los problemas de su fuente de ingresos.

Modelo federado (preferido)

Es similar a la apertura predeterminada, pero permite que todos proporcionen información y controlen sus áreas de una manera más local. Muchos sistemas heredados están diseñados de manera que requieren que todos los datos fluyan a través de un sistema central, independientemente de la necesidad. Esto también centraliza el control sobre esos datos. Un sistema federado permite la agregación, el procesamiento y el control locales, al mismo tiempo que permite que una organización central recopile los mismos datos o datos resumidos. El sistema central probablemente solo quiera un subconjunto de los datos almacenados localmente. Este modelo aumenta la agilidad, la flexibilidad y la usabilidad.

En esta serie, exploraremos cada uno de los tipos de herramientas de observabilidad con más detalle. También lo ayudaremos a elegir la herramienta adecuada para su caso de uso. Siéntase libre de leerlos en el orden que desee, o puede descargar la guía completa.

Qué leer a continuación

Artículos de interés

Subir